Вступление
Некоторые сценарии требуют, чтобы вы создавали пользователей с правами чтения и записи в один каталог только по FTP. Эта статья покажет вам, как создавать таких пользователей. Они не смогут выходить за пределы своего домашнего каталога, входить на сервер через SSH или выполнять команды оболочки.
Настройка SFTP группы и сервиса
-
Создать группу sftpusers.
sudo groupadd sftpusers
-
Закомментируйте настройку отключения доступа SFTP из файла конфигурации sshd.
sudo sed -i "s/Subsystem sftp \/usr\/lib\/openssh\/sftp-server/#Subsystem sftp \/usr\/lib\/openssh\/sftp-server/" /etc/ssh/sshd_config
-
Откройте конфигурационный файл sshd sudo nano /etc/ssh/sshd_config
, добавьте его фрагмент ниже и выйдите (Ctrl + X -> Y -> Нажмите Enter) .
#enable sftp
Subsystem sftp internal-sftp
Match Group sftpusers
ChrootDirectory %h #set the home directory
ForceCommand internal-sftp
X11Forwarding no
AllowTCPForwarding no
PasswordAuthentication yes
-
Перезапустите SSH.
sudo service ssh restart
Создание пользователей
Повторите процедуру ниже для каждого SFTP-единственного пользователя, которого вы хотите добавить на сервер.
# create user
sudo adduser sftpuser1
# prevent ssh login & assign SFTP group
sudo usermod -g sftpusers sftpuser1
sudo usermod -s /bin/nologin sftpuser1
# chroot user (so they only see their directory after login)
sudo chown root:sftpuser1 /home/sftpuser1
sudo chmod 755 /home/sftpuser1
sudo mkdir /home/sftpuser1/uploads
sudo chown sftpuser1:sftpuser1 /home/sftpuser1/uploads
sudo chmod 755 /home/sftpuser1/uploads
Вы можете ускорить создание пользователей, добавив вышеупомянутую функцию в функцию и добавив ее в свой bashprofile, выполнив (1) запуск sudo nano ~/.bash_profile
; (2) добавление фрагмента ниже; (3) работает source ~/.bash_profile
.
После этого создание нового пользователя SFTP становится таким же простым, как запуск команды create_sftp_user
вместе с именем пользователя в качестве ее параметра.
# usage: create_sftp_user <username>
function create_sftp_user() {
# create user
sudo adduser $1
# prevent ssh login & assign SFTP group
sudo usermod -g sftpusers $1
sudo usermod -s /bin/nologin $1
# chroot user (so they only see their directory after login)
sudo chown root:$1 /home/$1
sudo chmod 755 /home/$1
sudo mkdir /home/$1/uploads
sudo chown $1:$1 /home/$1/uploads
sudo chmod 755 /home/$1/uploads
}
Проверьте, чтобы убедиться, что созданный вами пользователь может подключаться к серверу через SFTP ( Примечание . Подключайтесь с использованием SFTP, а не FTP) .
Автор Лами Адабонян