Наличие отдельного пользователя для работы непосредственно с файлами сайта является хорошей практикой. Давайте создадим нового пользователя на нашем хосте, который в дальнейшем будет использоваться для работы с файлами по FTP. Используем команду useradd:
[root@waky ~]# useradd -d /usr/share/nginx/ -c "sftp user" -s /bin/bash sftp_user
Этой командой мы создаем нового пользователя с логином sftp_user, с комментарием «sftp user» и с доступом до консоли /bin/bash. Домашняя директория этого пользователя — /usr/share/nginx/ там где хранятся файлы наших сайтов.
Зададим пароль для нового пользователя командой passwd:
[root@waky ~]# passwd sftp_user
Changing password for user sftp_user.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
В Linux доступы к файлам завязаны на разрешениях. Файлы сайтов принадлежат пользователю nginx и группе nginx. Добавим нового пользователя к той же группе:
[root@waky ~]# usermod -a -G nginx sftp_user
И добавим разрешение на запись для группы для всех файлов внутри директории /usr/share/nginx/waky.ru/:
[root@waky ~]# chmod -R g+w /usr/share/nginx/waky.ru/
В итоге у нас есть пользователь sftp_user, который состоит в группе nginx, а файлы в директории /usr/share/nginx/waky.ru/ может редактировать любой состоящий в группе nginx.
Мы достигли своей цели, пользователя sftp_user можно использовать для доступа к файлам как через консоль, так и через FTP клиент.
Если вы ранее отключили доступ по паролю в настройках вашего SSH сервера, добавьте отдельную настройку для пользователя sftp_user. Нужно в конце файла /etc/ssh/sshd_config добавить следующие строки:Match User sftp_user
PasswordAuthentication yes
Можете отредактировать файл вручную с помощью текстового редактора, либо с помощью команды:
printf "Match User sftp_user\n PasswordAuthentication yes" >> /etc/ssh/sshd_config
После внесения изменений перезагрузите SSH сервер, чтобы изменения вступили в силу:service sshd restart