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

10

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

Бред
источник

Ответы:

11

Системы 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есть права на все папки :(
Delirium
@Delirium см. Мой обновленный ответ
Рахул
Большое спасибо за ваш ответ. Но должна быть какая-то ошибка .. Я добавил, 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
Delirium
2
@Delirium Я четко упомянул, чтобы поместить Match.....раздел в конец файла. Поместите этот код в конец файла и перезапустите его.
Рахул
1
Извините за мои слепые глаза, но это работает, так что большое спасибо.
Бред