Я хочу создать конкретного пользователя SFTP, у которого будут права на чтение только всех папок и подпапок /var/www/vhosts
. Любая помощь в этом?
источник
Я хочу создать конкретного пользователя SFTP, у которого будут права на чтение только всех папок и подпапок /var/www/vhosts
. Любая помощь в этом?
Системы Unix предоставляют chroot
команду, которая позволяет вам сбросить /
пользователя в некоторый каталог в иерархии файловой системы, где они не могут получить доступ к «более высоким» файлам и каталогам.
Однако в вашем случае было бы целесообразно предоставить виртуальный chroot, реализованный службой удаленной оболочки. sftp может быть легко настроен на ограничение локального пользователя определенным подмножеством файловой системы.
следовательно, в вашем случае, вы хотите chroot
, скажем, пользовательский foo
пользователь в /var/www/vhosts/
каталог.
Вы можете установить каталог chroot для своего пользователя, чтобы ограничить его подкаталогом, /var/www/vhosts/
как в /etc/ssh/sshd_config
;
Создать пользователя foo
с паролем
sudo useradd foo
sudo passwd foo
Создать только для SFTP группы
$ sudo groupadd sftp_users
Добавить к пользователю foo
только для SFTP группы
$ sudo usermod -G sftp_users foo
Смена владельца, потому что разрешение на чтение / запись
sudo chown root.root /var/www/vhosts/
Добавить разрешение
sudo chmod 755 /var/www/vhosts/
редактировать /etc/ssh/sshd_config
sudo vi /etc/ssh/sshd_config
Закомментируйте и добавьте строку, как показано ниже
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
Добавьте в конце
Match Group sftp_users
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory /var/www/vhosts/
ForceCommand internal-sftp
(Примечание: Match
блоки должны быть в КОНЦЕ из sshd_config
файла.)
Перезапустить ssh
сервис
sudo service ssh restart
С этой настройкой вы можете ssh в папку ubuntu
и получить файлы. Не может put
илиdelete
Для sftp в правой папке отредактируйте /etc/passwd
. Измените строку, чтобы пользователь foo
выглядел так
$ sudo vi /etc/passwd
..
foo:x:1001:1001::/var/www/vhosts/:
..
Это изменит foo
домашнюю папку пользователя на вашу папку сервера sftp.
Match Group sftp ChrootDirectory /var/www/vhosts AllowTcpForwarding no
In sshd_config и создал пользователя и группу, как и вы, но у пользователяfoo
есть права на все папки :(Subsystem sftp internal-sftp Match Group sftp ChrootDirectory /var/www/vhosts AllowTcpForwarding no ForceCommand internal-sftp
но есть ошибка, когда я хочу перезапустить ssh/etc/ssh/sshd_config line 92: Directive 'UsePAM' is not allowed within a Match block
Match.....
раздел в конец файла. Поместите этот код в конец файла и перезапустите его.