Разрешение только на чтение для пользователя sftp в определенном каталоге

Разрешение только на чтение для пользователя sftp в определенном каталоге

Я хочу создать определенного пользователя SFTP, который будет иметь разрешения только на чтение всех папок и подпапок в /var/www/vhosts. Есть ли какая-нибудь помощь по этому вопросу?

решение1

В системах Unix предусмотрена chrootкоманда, которая позволяет сбросить настройки /пользователя до некоторого каталога в иерархии файловой системы, где он не сможет получить доступ к «более высоким» файлам и каталогам.

Однако в вашем случае было бы целесообразно предоставить виртуальный chroot, реализованный службой удаленной оболочки. sftp можно легко настроить для ограничения локального пользователя определенным подмножеством файловой системы.

поэтому в вашем случае вы хотите, chrootскажем, ввести пользователя foouser в /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-сервера.

Связанный контент