Назад | Перейти на главную страницу

Как ограничить пользователя SSH / SFTP подпапкой веб-сайта apache?

В настоящее время я настраиваю apache на сервере Linux, и мне нужно создать нового пользователя, который может входить в систему и редактировать файлы только в определенном каталоге.

В настоящее время мой веб-сайт настроен как

/ данные / htdocs / mywebsite /

Разрешения на это apache: apache

Теперь мне нужно создать нового пользователя «joeblogs» и ограничить этого пользователя доступом только к / data / htdocs / mywebsite / store /

Пользователи должны иметь возможность использовать SSH, а также SFTP, но всегда быть направленными непосредственно в эту папку, также пользователь должен иметь полный доступ к папке / store /, но не иметь возможности видеть какие-либо другие папки или файлы на система /

Любая помощь в этом будет оценена по достоинству. Я бегал по кругу часами.

SSH имеет встроенную возможность chroot для пользователя (начиная с 4.9p1), но использовать его для интерактивных сеансов довольно сложно.

Однако ограничить sftp довольно просто, и его можно настроить для каждого пользователя или группы.

Match User joeblogs
    ChrootDirectory /data/htdocs/mywebsite/store/
    ForceCommand internal-sftp
    AllowTcpForwarding no

Интерактивные сеансы более сложны, потому что пользователю нужна оболочка и некоторые файлы устройств.

Из man 5 sshd_config:

ChrootDirectory должен содержать необходимые файлы и каталоги для поддержки сеанса пользователя. Для интерактивного сеанса требуется как минимум оболочка, обычно sh (1), и базовые узлы / dev, такие как null (4), zero (4), stdin (4), stdout (4), stderr (4), arandom (4) и tty (4) устройства

Я бы не рекомендовал это, так как вам нужно будет создавать и поддерживать копии любых утилит, которые им нужны, в их chroot. Если вы все еще хотите попробовать пойти по этому пути, вы можете узнать больше об этом на странице руководства sshd_config и Вот