Оглавление
Что хотим
Поскольку хорошим тоном считается отключать доступ под root’ом в любой UNIX системе, то любители поработать с файлами через WinSCP могут испытать разочарование из-за отсутствия возможности проводить какие-либо операции с директориями и файлами, к которым у них нет доступа. Однако решение есть.
Даем права root при работе через WinSCP
Для Ubuntu
Для начала нужно найти файл sftp-server. Нам поможет утилита mlocate. Установим утилиту, если ее нет, обновим базу данных поиска и найдем путь установки sftp-server:
apt-get install mlocate
updatedb
locate sftp-server
В ответ терминал выдаст примерно что-то следующее:
/snap/core/11187/usr/lib/sftp-server
/snap/core/11187/usr/lib/openssh/sftp-server
/snap/core/11187/usr/share/doc/openssh-sftp-server
/snap/core/11316/usr/lib/sftp-server
/snap/core/11316/usr/lib/openssh/sftp-server
/snap/core/11316/usr/share/doc/openssh-sftp-server
/usr/lib/sftp-server
/usr/lib/openssh/sftp-server
/usr/share/doc/openssh-sftp-server
/usr/share/man/man8/sftp-server.8.gz
/var/lib/dpkg/info/openssh-sftp-server.list
/var/lib/dpkg/info/openssh-sftp-server.md5sums
Запоминаем путь /usr/lib/openssh/sftp-server (вместо него может быть другой, зависит от дистрибутива), и переходим к редактированию конфига /etc/sudoers:
sudo nano /etc/sudoers
В самом конце файла, с новой строки пишем:
ВАШЛОГИН ALL=NOPASSWD:/usr/lib/sftp-server
Где ВАШЛОГИН – это логин пользователя, который должен работать с рут правами, а /usr/lib/sftp-server – это путь, который мы узнали выше.
Получится что то типа:
root ALL=NOPASSWD:/usr/lib/sftp-server
Если нужно добавить больше, чем одного пользователя, то просто с новой строки повторяем написаное выше.
Теперь осталось дело за малым – отконфигурировать WinSCP. Открываем свойства соеденения, в пункте “Протокол передачи” обязательно выставляем SFTP.
Далее нажимаем кнопку “Еще”, и там уже, в панели слева, выбираем пункт “Среда – SFTP”. В самой верхней строчке под названием “Сервер SFTP” пишем следующее:
sudo /usr/lib/sftp-server
Сохраняем и пользуемся WinSCP с полным рут доступом ко всем файлам в системе.
Для CentOS
Для CentOS последовательность та же, но команды другие. Дополнительно придется поставить пакет mlocate:
yum install mlocate
updatedb
locate sftp-server
Путь будет немного отличаться, получим что-то типа:
# locate sftp-server
/usr/libexec/openssh/sftp-server
/usr/share/man/man8/sftp-server.8.gz
Открываем sudoers:
sudo nano /etc/sudoers
Добавляем в конец строку:
ВАШЛОГИН ALL=NOPASSWD:/usr/libexec/openssh/sftp-server
Также нужно убедиться что строка Default requiretty закомментирована
После этого редактируем свойства подключения:
Ссылки
https://sysadmin.ru/articles/poluchenie-root-prav-pri-rabote-v-winscp
https://stik.name/blog/tutorials/140-vypolnenie-sudo-s-pri-avtorizacii-winscp-v-debian78-i-centos-7/