Защо 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), приложението не я заобикаля. Приложението не проверява съдържанието на файла, затова изпълнете сами проверката на услугата.