有可能,改变一个文件在/ etc与sed -i我不是所有者? 但是,我确实有写入该文件的权限。
或者作为替代scheme,如何在/ etc中更改文件中的一行,而无需在脚本中拥有su-priviliges。
非常感谢
sed -i 很可能会创build一个全新的文件,然后用它replace原来的文件。 这意味着你将不得不有写访问目录 /etc ,而不仅仅是文件。
没有任何创build新文件的工具没有这个能力就无法正常工作,这是正确的: /etc是一个非常重要的目录,你可能不应该在未经许可的情况下在那里玩:-)
一个解决scheme是把你的文件放到你可以修改它的地方,然后从/etc创build一个软链接。 就像是:
ln -s /my_directory/my_file /etc/my_file
你需要根权力来创build链接。 软链接将防止链接消失,因为软链接只是一个包含目标path的文件(与inode不同,它不会随着sed -i而改变)。
这限制了他们改变文件和文件的权力。 通过打开/etc的权限,没有安全漏洞的可能性。
而不是使用“sed -i”,你可以试试
sed ... > /tmp/foo && cat /tmp/foo > /etc/file
这样您就可以将文件实际更改为/ tmp中的文件,然后将该结果写入您有写访问但不replace访问的文件。