У меня есть настройка chroot на моем сервере CentOS (chroot без доступа к оболочке / строго sftp). Для справки, папки такие:
home/sftp_users/%u (root:root 750)
home/sftp_users/%u/input (site_user:sftp_users 770)
home/sftp_users/%u/input/result (site_user:sftp_users 770)
В моем файле sshd.conf у меня есть это:
Subsystem sftp internal-sftp
Match Group webrecom_sftpusers
ChrootDirectory /home/sftp_users/%u
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
Это в значительной степени то, что я хочу. Если вы заметили выше, я не делал пользователя владельцем папок в их home directory
. Причина в том, что я не хочу, чтобы они могли удалять эти каталоги или изменять разрешения для них. В противном случае кто-то может в какой-то момент все испортить. У них все еще есть доступ к -r -w -e
из-за их группы. Хотя это в основном то, что я хочу, из-за их способности писать в input
они могут удалить result
каталог. Я могу обойти это in PHP
путем воссоздания этой единственной папки. PHP будет искать в этих папках файлы, которые нужно подобрать и запустить, а затем вернет отчеты по ним.
Проблема в том, что site_user
принадлежит к своей группе site_user
а в PHP я могу назначать папку только тем группам, к которым принадлежит пользователь. Если я добавлю site_user
к sftp_users
потом застревает в тюрьме CHROOT.
Полагаю, я могу сделать папки, принадлежащие site_user
и в site_user
group и установите разрешения на 0777, но:
site_user
к sftp_users
но не суй его в тюрьмуСоответствие может принимать несколько условных выражений. Пытаться:
Match Group webrecom_sftpusers, User !site_user