Несколько пользователей sftp и доступ к подкаталогу /var/www
У меня есть несколько пользователей на моем сервере Ubuntu с vsftpd
установлены.
Сервер используется в качестве веб-сервера и имеет общий каталог sftp, к которому обращаются публичные клиенты (предоставляя им пользователя и пароль).
Из-за этой архитектуры моя цель состояла в том, чтобы ограничить пользователя общедоступного клиента только доступом к его домашнему каталогу и ограничить доступ к другим каталогам. Я сделал это с помощью ChrootDirectory следующим образом:
- создайте публичного пользователя: public_sftp с домашним каталогом:
/home/public_sftp/
/home/public_sftp
принадлежит root- внутри
/home/public_sftp
Есть два каталога, принадлежащих public_sftp: www-data - создать группу sftponly
- добавьте public_sftp в группу sftponly
Изменить
/etc/ssh/sshd_config
и добавить в концеMatch group sftponly ChrootDirectory %h X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp -u 73
Это прекрасно работает, за исключением сценария, который мне нужно запустить с другого сервера, используя пользователя www-data. При запуске этого скрипта, который будет подключаться к серверу sftp с пользователем www-data, я получаю:
Write failed: Broken pipe
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(605) [sender=3.0.9]
Домашний каталог моего пользователя www-data /var/www/
и rsync Scrypt пытается записать в подкаталог из /var/www
,
1 ответ
POSIX ACL (списки контроля доступа) полезны для того, что вы описываете. Они допускают более детализированную модель разрешений по сравнению с моделью user:group:other. Я обнаружил, что их легче держать в голове, поскольку я могу быть более явным, а также могу установить поведение «по умолчанию» для ветви файловой системы.
Например, вы можете явно указать разрешения для каждого пользователя:
setfacl -Rm d:u:userA:rwX,u:userA:rwX /var/www
setfacl -Rm d:u:userB:rwX,u:userB:rwX /var/www
Или вы можете сделать это на основе некоторой общей группы:
setfacl -Rm d:g:groupA:rwX,u:groupA:rwX /var/www
И, возможно, вы хотите, чтобы пользователь вашего веб-сервера был доступен только для чтения
setfacl -Rm d:u:www-data:rX,u:www-data:rX /var/www
Справочные страницы:
http://linux.die.net/man/1/setfacl http://linux.die.net/man/1/getfaclhttps://websistent.com/linux-acl-tutorial/