Я хочу создать определенного пользователя SFTP, который будет иметь разрешения только на чтение всех папок и подпапок в /var/www/vhosts
. Есть ли какая-нибудь помощь по этому вопросу?
решение1
В системах Unix предусмотрена chroot
команда, которая позволяет сбросить настройки /
пользователя до некоторого каталога в иерархии файловой системы, где он не сможет получить доступ к «более высоким» файлам и каталогам.
Однако в вашем случае было бы целесообразно предоставить виртуальный chroot, реализованный службой удаленной оболочки. sftp можно легко настроить для ограничения локального пользователя определенным подмножеством файловой системы.
поэтому в вашем случае вы хотите, chroot
скажем, ввести пользователя foo
user в /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-сервера.