在非所有者文件上使用 sed

在非所有者文件上使用 sed

是否可以更改 /etc 中sed -i不是我所有者的文件?但是,我对该文件有写权限。

或者作为替代方案,如何在没有脚本中的 su 权限的情况下更改 /etc 中文件中的一行。

多谢

答案1

它是非常很可能sed -i会创建一个新文件,然后用它替换原始文件。这意味着您必须拥有对目录 /etc,而不仅仅是文件。

没有一种工具能够创造新的文件无需该权限即可工作,这是正确的:/etc是一个非常重要的目录,您可能不应该在未经许可的情况下在那里播放:-)

一个解决方案是将文件放在你修改它,然后只需从 创建一个到它的软链接/etc。例如:

ln -s /my_directory/my_file /etc/my_file

当然,您需要 root 权限才能创建链接。如果您执行新建文件/重命名操作,软链接将阻止链接消失,因为软链接只是一个包含目标路径的文件(与 inode 不同,它不会随 而改变sed -i)。

这就限制了他们只能更改该文件的权限。开放权限不会带来安全漏洞/etc

答案2

除了使用“sed -i”,您还可以尝试

sed ... > /tmp/foo && cat /tmp/foo > /etc/file

这样,您实际上就将文件更改为 /tmp 中的文件,然后将该结果写入您具有写访问权限但没有替换访问权限的文件中。

相关内容