Если вы попытаетесь добавить в файл без прав на запись (скажем, файл / etc / sudoers, который принадлежит пользователю root и имеет разрешения 0440), это сработает, если вы являетесь фактическим пользователем root. Однако, если вы другой пользователь, использующий sudo, вы получите ошибку отказа в разрешении.
Почему это? Это не из-за владельца файла - он также не работает с файлами, принадлежащими обычному пользователю. Настоящий пользователь root, похоже, имеет больше разрешений, чем предоставляется с помощью sudo. В чем причина этого? Есть ли способ предоставить это разрешение пользователям, использующим sudo?
Похоже, вы делаете что-то вроде:
sudo echo "blah blah blah de blah" >> /etc/protected_file
Это не работает, потому что sudo применяется к echo
команда, которая успешно запускается от имени пользователя root, но перенаправление является частью вашей текущей оболочки, которая не работает как root.
Общие решения:
sudo bash -c 'echo "blah blah blah de blah" >> /etc/protected_file'
и
echo "blah blah blah de blah" | sudo tee -a /etc/protected_file
Примечание: вы должны использовать «visudo» для редактирования файла sudoers, потому что он проверяет файл на наличие синтаксических ошибок, прежде чем позволить вам их зафиксировать, чтобы вы не заблокировали себя.