Задать вопрос

Как ограничить юзера в его домашней папке?

За N-ое количество лет сформировалась привычная мне схема на веб-сервере, которая оставляла открытыми вопросы безопасности, и сейчас, когда придется впускать к себе сторонних юзеров, они стали критичными.

Связка NGINX + PHP5-FPM, пользователи базируются в /var/www/USER/SITE.
Владелец /var/www/USER - root. Всего внутри - USER. Все пользователи висят на разных пулах PHP-FPM. Обращение исключительно через SFTP, пользователи закрыты в свой папке через установку в sshd_config:
Subsystem sftp internal-sftp

Match group www-data
        ChrootDirectory %h
        X11Forwarding no
        AllowTcpForwarding no
        ForceCommand internal-sftp


Пример пула в PHP-FPM:
[USER]
user = USER
group = www-data
listen = 127.0.0.1:PORT
chdir = /var/www/USER/


1) Если залить r57shell, то ничего не мешает подняться выше своего уровня и заглядывать куда угодно. Как это исправить?
2) Некоторые из сайтов используют импровизированную PHP-библиотеку, лежащую в /var/www/libs, делая её Include в скриптах - как правильно организовать "общую библиотеку"? (догадываюсь, что при правильном ограничении пользователей, выше /var/www/USER они не смогут ничего заинклудить).

P.S. Найденные в сети варианты при любом виде шаманств и правке basedir приводили к File not found при исполнении *.php
  • Вопрос задан
  • 474 просмотра
Подписаться 3 Оценить Комментировать
Решения вопроса 1
BuriK666
@BuriK666 Куратор тега Nginx
Компьютерный псих
; Chroot to this directory at the start. This value must be defined as an
; absolute path. When this value is not set, chroot is not used.
; Note: you can prefix with '$prefix' to chroot to the pool prefix or one
; of its subdirectories. If the pool prefix is not set, the global prefix
; will be used instead.
; Note: chrooting is a great security feature and should be used whenever 
;       possible. However, all PHP paths will be relative to the chroot
;       (error_log, sessions.save_path, ...).
; Default Value: not set
;chroot =

а /var/www/lib нужно положить каждому юзеру.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
djdeniro
@djdeniro
DeNet
открываешь консоль
chmod 666 -R /YOU/DIR/HERE
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы