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 →

Биометрични отключване и сигурност →