Исключить одного пользователя из chroot
У меня есть настройка 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
сгруппировать и установить разрешения на 0777, но:
- есть ли другой способ запретить пользователям изменять разрешения / удалять эти каталоги, которые я пропустил
- есть ли способ добавить
site_user
вsftp_users
но не суйся в тюрьме
1 ответ
Матч может принимать несколько условных выражений. Пытаться:
Match Group webrecom_sftpusers, User !site_user