是否可以更改 /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 中的文件,然后将该结果写入您具有写访问权限但没有替换访问权限的文件中。