grep -q "auth required pam_wheel.so group=wheel" /etc/pam.d/su
时间: 2024-01-02 08:05:02 浏览: 106
这个命令是用来在 `/etc/pam.d/su` 文件中查找是否存在包含字符串 `auth required pam_wheel.so group=wheel` 的行。具体来说,`grep -q` 命令会在文件中进行查找,如果找到匹配的行,则不会输出任何内容,并且返回状态码 0;如果没有找到匹配的行,则也不会输出任何内容,但返回状态码 1。这个命令通常用于在脚本中判断某个条件是否满足。
相关问题
if grep -q "auth required pam_wheel.so group=wheel" /etc/pam.d/su then sed -i '/auth required pam_wheel.so group=wheel/s/^#//' /etc/pam.d/su else echo 'auth required pam_wheel.so group=wheel' >> /etc/pam.d/su fi if grep -q "export TMOUT=300" /etc/profile then sed -i '/export TMOUT=300/s/^#//' /etc/profile else echo 'export TMOUT=300' >> /etc/profile fi
以下是将这些命令转换为Python代码的示例:
```python
import subprocess
su_pam_file = '/etc/pam.d/su'
wheel_auth_line = 'auth required pam_wheel.so group=wheel\n'
with open(su_pam_file, 'r') as file:
content = file.read()
if 'auth required pam_wheel.so group=wheel' in content:
content = content.replace('#auth required pam_wheel.so group=wheel', 'auth required pam_wheel.so group=wheel')
else:
content += wheel_auth_line
with open(su_pam_file, 'w') as file:
file.write(content)
profile_file = '/etc/profile'
tmout_line = 'export TMOUT=300\n'
with open(profile_file, 'r') as file:
content = file.read()
if 'export TMOUT=300' in content:
content = content.replace('#export TMOUT=300', 'export TMOUT=300')
else:
content += tmout_line
with open(profile_file, 'w') as file:
file.write(content)
```
上述代码首先打开`/etc/pam.d/su`文件,并读取其内容。如果文件中存在`auth required pam_wheel.so group=wheel`行,则将其注释去除,否则将该行添加到文件末尾。
然后,打开`/etc/profile`文件,并读取其内容。如果文件中存在`export TMOUT=300`行,则将其注释去除,否则将该行添加到文件末尾。
请确保你具有足够的权限来执行这些操作,并将需要修改的PAM文件路径和需要修改的profile文件路径正确添加到`su_pam_file`和`profile_file`变量中。运行代码后,命令将被执行。
逐条注释 ``` if [ -f "/etc/pam.d/system-auth" ];then if grep -q "password requisite pam_cracklib.so retry=3 minlen=8 minclass=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1" /etc/pam.d/system-auth then sed -i '/password requisite pam_cracklib.so retry=3 minlen=8 minclass=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1/s/^#//' /etc/pam.d/system-auth else echo 'password requisite pam_cracklib.so retry=3 minlen=8 minclass=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1' >> /etc/pam.d/system-auth fi if grep -q "password required pam_unix.so remember=5 use_authtok md5 shadow" /etc/pam.d/system-auth then sed -i '/password required pam_unix.so remember=5 use_authtok md5 shadow/s/^#//' /etc/pam.d/system-auth else echo 'password required pam_unix.so remember=5 use_authtok md5 shadow' >> /etc/pam.d/system-auth fi fi ```
这段脚本的作用是检查/etc/pam.d/system-auth文件是否存在,并其进行修改或添加配置。具体解释如下:
```shell
if [ -f "/etc/pam.d/system-auth" ];then
```
- 检查/etc/pam.d/system-auth文件是否存在。如果存在,则执行下面的操作;如果不存在,则不执行并继续执行脚本的其他部分。
```shell
if grep -q "password requisite pam_cracklib.so retry=3 minlen=8 minclass=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1" /etc/pam.d/system-auth
then
sed -i '/password requisite pam_cracklib.so retry=3 minlen=8 minclass=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1/s/^#//' /etc/pam.d/system-auth
else
echo 'password requisite pam_cracklib.so retry=3 minlen=8 minclass=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1' >> /etc/pam.d/system-auth
fi
```
- 检查/etc/pam.d/system-auth文件中是否存在"password requisite pam_cracklib.so retry=3 minlen=8 minclass=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1"这一行。
- 如果存在,则使用sed命令将该行的行首的注释符号#去掉,即取消注释。
- 如果不存在,则在文件末尾添加一行"password requisite pam_cracklib.so retry=3 minlen=8 minclass=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1"。
```shell
if grep -q "password required pam_unix.so remember=5 use_authtok md5 shadow" /etc/pam.d/system-auth
then
sed -i '/password required pam_unix.so remember=5 use_authtok md5 shadow/s/^#//' /etc/pam.d/system-auth
else
echo 'password required pam_unix.so remember=5 use_authtok md5 shadow' >> /etc/pam.d/system-auth
fi
```
- 检查/etc/pam.d/system-auth文件中是否存在"password required pam_unix.so remember=5 use_authtok md5 shadow"这一行。
- 如果存在,则使用sed命令将该行的行首的注释符号#去掉,即取消注释。
- 如果不存在,则在文件末尾添加一行"password required pam_unix.so remember=5 use_authtok md5 shadow"。
这段脚本的目的是修改或添加/etc/pam.d/system-auth文件中的密码策略配置,包括设置密码复杂度和密码保留历史记录等。
阅读全文