CH-J Server Managerуправление серверами через SSH
Меню
Все руководства и статьи →

Как редактировать файлы в /etc через SFTP и sudo

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

Почему SFTP сообщает об отказе в доступе

SFTP работает от имени учётной записи, под которой вы вошли, и не имеет аналога sudo. Большинство файлов в /etc принадлежат root, поэтому обычная учётная запись может читать некоторые из них, но не может записывать ни в один. Это правильное поведение, и исправлять его ослаблением прав не следует.

Чего не следует делать

Не выполняйте chmod 777 для файла конфигурации, не назначайте свою учётную запись владельцем файлов в /etc и не включайте вход root по паролю ради одной правки. Некоторые службы отказываются использовать файлы со слишком широкими правами, а каждое такое изменение снижает безопасность сервера ещё долго после завершения редактирования.

Используйте sudoedit в терминале

sudoedit копирует файл во временное расположение, открывает его в вашем редакторе от имени вашей учётной записи и записывает обратно только после сохранения. Сам редактор не работает от имени root.

sudoedit /etc/nginx/nginx.conf

Загрузите копию, затем установите её

Если вы предпочитаете локальный редактор, загрузите файл в свой домашний каталог и установите его с помощью sudo. Сначала сохраните резервную копию оригинала там, откуда её не прочитает ни одна директива включения конфигурации. Команда install задаёт владельца и режим доступа, а в системах с SELinux команда restorecon устанавливает правильный контекст. Прежде чем использовать эти значения, проверьте владельца и режим доступа оригинала: не для каждого файла нужны root и 644.

stat -c '%U %G %a' /etc/nginx/nginx.conf
sudo cp -a /etc/nginx/nginx.conf /root/nginx.conf.bak
sudo install -o root -g root -m 644 ~/nginx.conf.new /etc/nginx/nginx.conf
sudo restorecon -v /etc/nginx/nginx.conf

Проверьте перед применением

Файл с синтаксической ошибкой может привести к остановке службы при её следующем перезапуске. Перед перечитыванием конфигурации запустите проверку соответствующей службы. Меняя настройки SSH, держите текущий сеанс открытым и проверьте новый вход из второго окна.

sudo nginx -t
sudo sshd -t
sudo visudo -cf /etc/sudoers.d/example

Редактирование с sudo в CH-J Server Manager

File Manager предлагает открыть файл с помощью sudo, если учётная запись SSH не может его прочитать, и предупреждает, что для сохранения потребуется sudo. При сохранении данные попадают в закрытый временный каталог учётной записи, а после проверки sudo перемещает их на нужное место, сохраняя владельца, права, ACL и контекст SELinux. По желанию перед заменой создаётся резервная копия оригинала. Пароль передаётся только sudo на сервере и не сохраняется ни на диске, ни в журналах. Если политика sudo требует терминал (requiretty), приложение не обходит это требование. Приложение не проверяет содержимое файла, поэтому проверку службы нужно запустить самостоятельно.

Подробная документация

man: sudo / sudoedit →

man: install →

Биометрическое разблокирование и безопасность →