Исключить одного пользователя из 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
Другие вопросы по тегам