Как создать пользователя в Linux на примере CentOS Stream 9.

Наличие отдельного пользователя для работы непосредственно с файлами сайта является хорошей практикой. Давайте создадим нового пользователя на нашем хосте, который в дальнейшем будет использоваться для работы с файлами по 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