Всем здравствуйте. Перед вопросом краткое описание: имеется сервер, установлена Ubuntu, настроен вход по SFTP для каждого пользователя.
Кусочек конфигурационного файла sshd:
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
Каждый пользователь в своем клиенте заходит только в свою домашнюю директорию, все работает.
Вопрос следующий: к примеру есть пользователь user, с домашней директорией /var/www/user/, у этого пользователя есть два сайта которые лежат соответственно в /var/www/user/site1, /var/www/user/site2. Каждый сайт ведут разные разработчики user-dev1 и user-dev2. Как разграничить права или может сконфигурировать ssh, чтобы user-dev1 при входе по SFTP видел и имел доступ только к /var/www/user/site1, user-dev2 соответственно только к /var/www/user/site2, а user к своей домашней директории со своими сайтами?
P.S. Пробовал задать пользователю user-dev1 в качестве домашней директорию /var/www/user/site1, но тогда ее владелец должен быть root (ChrootDirectory %h, если я правильно понимаю), и у пользователя user тогда нет к ней доступа, а должен быть к обоим директориям.
Проблемы с правами решаются с помощью POSIX ACL:
setfacl -dm u:user:rwx /var/www/user/site1
setfacl -dm u:user:rwx /var/www/user/site2
setfacl -Rm u:user:rwx /var/www/user/site1
setfacl -Rm u:user:rwx /var/www/user/site2
Примерно как-то так. После этого пользователь user будет иметь права доступа к подпапкам, даже если их владельцами будет кто-то другой. Чтобы ACL работали файловая система должна быть смонтирована с флагом acl.