Назад | Перейти на главную страницу

sed для чужого файла

возможно ли изменить файл в / etc с помощью sed -i что я не владелец? Однако у меня есть права на запись в этот файл.

Или, в качестве альтернативы, как мне изменить строку в файле в / etc, не имея привилегий из сценария.

большое спасибо

Это очень вероятно, что sed -i создаст новый файл, а затем заменит им оригинал. Это означает, что вам потребуется доступ на запись к каталог /etc, а не только файл.

Ни один из инструментов, которые создают новый файл будет работать без этого питания, и это правильно: /etc это очень важный каталог, и вам, вероятно, не стоит играть в нем без разрешения :-)

Одно из решений - поместить файл туда, где вы жестяная банка измените его, а затем просто создайте мягкую ссылку на него из /etc. что-то вроде:

ln -s /my_directory/my_file /etc/my_file

Конечно, для создания ссылки вам понадобятся полномочия root. Программная ссылка предотвратит исчезновение связи, если вы выполните операцию нового файла / переименования, поскольку программная ссылка - это просто файл, содержащий целевой путь (который, в отличие от inode, не изменится с sed -i).

И это ограничивает их право изменять этот файл и только этот файл. Нет возможности для дыр в безопасности, открыв разрешения на /etc.

Вместо использования "sed -i" вы можете попробовать

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

Таким образом, вы выполняете фактическое изменение файла в файл в / tmp, а затем записываете этот результат в файл, у которого есть доступ на запись, но не заменяете доступ.