sed -i '/auth sufficient pam_rootok.so/s/^#//' /etc/pam.d/su
时间: 2023-07-17 11:03:50 浏览: 145
您好!您的问题是如何在文件`/etc/pam.d/su`中取消注释`auth sufficient pam_rootok.so`行的开头的井号`#`吗?
您可以使用`sed`命令来完成这个任务。`sed`是一个流编辑器,它可以对文本进行替换、删除和插入操作。
要取消注释行开头的井号,可以使用以下命令:
```
sed -i '/auth sufficient pam_rootok.so/s/^#//' /etc/pam.d/su
```
这个命令使用了正则表达式匹配`/auth sufficient pam_rootok.so/`来定位包含该行的位置。然后,`s/^#//`将该行开头的井号替换为空字符串,即删除注释符号。
请注意,这个命令会直接修改文件`/etc/pam.d/su`,请确保在运行命令之前备份文件或确认您的操作。
相关问题
逐条注释 ``` if grep -q "auth sufficient pam_rootok.so" /etc/pam.d/su then sed -i '/auth sufficient pam_rootok.so/s/^#//' /etc/pam.d/su else echo 'auth sufficient pam_rootok.so' >> /etc/pam.d/su fi 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 source /etc/profile ```
这段脚本的作用是对指定的文件进行修改或添加配置,并且立即应用这些修改。下面是对每个部分逐条进行注释:
```shell
if grep -q "auth sufficient pam_rootok.so" /etc/pam.d/su
then
sed -i '/auth sufficient pam_rootok.so/s/^#//' /etc/pam.d/su
else
echo 'auth sufficient pam_rootok.so' >> /etc/pam.d/su
fi
```
- 检查/etc/pam.d/su文件中是否存在"auth sufficient pam_rootok.so"这一行。
- 如果存在,则使用sed命令将该行的行首的注释符号#去掉,即取消注释。
- 如果不存在,则在文件末尾添加一行"auth sufficient pam_rootok.so"。
```shell
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
```
- 检查/etc/pam.d/su文件中是否存在"auth required pam_wheel.so group=wheel"这一行。
- 如果存在,则使用sed命令将该行的行首的注释符号#去掉,即取消注释。
- 如果不存在,则在文件末尾添加一行"auth required pam_wheel.so group=wheel"。
```shell
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
```
- 检查/etc/profile文件中是否存在"export TMOUT=300"这一行。
- 如果存在,则使用sed命令将该行的行首的注释符号#去掉,即取消注释。
- 如果不存在,则在文件末尾添加一行"export TMOUT=300"。
```shell
source /etc/profile
```
- 重新加载/etc/profile文件,使修改立即生效。
这段脚本的目的是修改或添加一些系统配置,例如su命令的授权和超时时间的设置,并且立即应用这些修改。
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`变量中。运行代码后,命令将被执行。