在 pam.d 内的 sshd 中的匹配行之后插入行

在 pam.d 内的 sshd 中的匹配行之后插入行

我想在 pam.d 目录中存在的 sshd 文件中的匹配行之后插入一行。

例如它应该搜索这一行

account    required     pam_nologin.so

它应该插入一行

account    required     pam_access.so

就在它的下面,单词之间有适当的行距。

我是 sed 和 awk 的新手,所以任何帮助将不胜感激。

答案1

这应该可以工作(从标准输入读取,打印到标准输出以进行测试):

sed -e '/^account    required     pam_nologin\.so$/a account    required     pam_access.so'

a命令将A将文本附加到匹配行,匹配行是由“account required pam_nologin.so”组成的行。

如果您想使用该-i开关(就地编辑文件),我强烈建议使用-i .bak或类似的方法来保留原始文件的备份:

sed -i .bak -e '/^account    required     pam_nologin\.so$/a account    required     pam_access.so' /etc/pam.d/sshd

答案2

使用好旧的ed

ed /etc/pam.d/sshd << EOT
/account    required     pam_nologin.so/
a
account    required     pam_access.so
.
w
EOT

地址/account required pam_nologin.so/为一行。

a命令用于将文本附加到编辑器缓冲区。

文本account required pam_access.so被输入到缓冲区中。

.返回命令模式。

w将缓冲区写出到文件。

相关内容