возможно ли изменить файл в / 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, а затем записываете этот результат в файл, у которого есть доступ на запись, но не заменяете доступ.