使用sed替换SSH配置文件文本遇权限问题及变量失效求助
解决sed修改sshd_config的权限与变量解析问题
问题根源
- sed命令用单引号包裹时,bash不会解析里面的变量,导致sed实际在查找
$text_to_find字符串,而非你定义的#Banner none。 text_to_replace赋值时多套了一层双引号,会导致替换后的内容带多余引号,还可能干扰sed语法。/etc/ssh/sshd_config是系统敏感文件,普通用户无写入权限,必须用sudo执行修改操作。
修正后的脚本代码
text_to_find="#Banner none" text_to_replace="Banner /etc/issue.net" sudo sed -i "s/$text_to_find/$text_to_replace/g" /etc/ssh/sshd_config
关键说明
- 把sed的单引号改成双引号,让bash能正确解析变量。
- 去掉
text_to_replace赋值时多余的双引号,避免替换内容带引号。 - 加上
sudo提升权限,解决文件写入被拒绝的问题。
内容的提问来源于stack exchange,提问作者technologyresearcher
相关产品推荐
相关产品推荐

