Итак, для моих клиентов, у которых есть сайты, размещенные на моем сервере, я создаю учетные записи пользователей со стандартными домашними папками внутри / home.
Я установил SSH-тюрьму для всех collective
пользователей, потому что я действительно против использования отдельного FTP-сервера. Затем я установил ACL и добавил acl в свой /etc/fstab
- все хорошо.
/home
и chmod 700 ./*
. setfacl u:www-data:rx ./*
. Я также пробовал отдельные каталоги.750
.Как мне настроить ACL, чтобы Apache мог видеть сайты, размещенные в домашних папках пользователя, И 2. Пользователи не могут видеть за пределами своего дома и в чужие файлы.
Изменить: подробнее:
Вывод после chmod -R 700 ./*
sh-3.2# chmod 700 ./*
sh-3.2# ls -l
total 72
drwx------+ 24 austin austin 4096 Jul 31 06:13 austin
drwx------+ 8 jeremy collective 4096 Aug 3 03:22 jeremy
drwx------+ 12 josh collective 4096 Jul 26 02:40 josh
drwx------+ 8 joyce collective 4096 Jun 30 06:32 joyce
(Недоступно для других пользователей ИЛИ apache)
setfacl -m u:www-data:rx jeremy
(Теперь доступен для членов apache и коллективного - почему тоже коллективный?)
sh-3.2# getfacl jeremy
# file: jeremy
# owner: jeremy
# group: collective
user::rwx
user:www-data:r-x
group::r-x
mask::r-x
other::---
Решение
В конечном итоге я сделал следующее:
chmod 755 *
setfacl -R -m g::--- *
setfacl -R -m u:www-data:rx *
Попробуйте поменять маску на "---"?
Или отмените разрешение группы с помощью setfacl. chmod и setfacl не работают слишком хорошо все вместе.
комментарий hayalci, что
chmod и setfacl не очень хорошо работают вместе.
помогло много. Вместо использования CHMOD для предотвращения доступа к данным другим группам я использовал:
cd /home
setfacl -m g::0 joeuser # Removes permissions for the owning group.
setfacl -m g:www-data:r joeuser # Adds read permissions for Apache
cd joeuser/joeuser.com/static/
setfacl -m g:www-data:rwx uploads # So apache can write to the uploads directory.
Что касается заключения в тюрьму, более новые версии ssh поддерживают параметр ChrootDirectory. Для соединений только scp я использовал scponly успешно в прошлом.
Что касается того, что apache видит файлы, вы не совсем правильно поняли chmod. Попробуйте что-то вроде этого (предполагается, что apache использует группу apache):
cd / home
chmod -750 * # владельцы могут все делать, члены группы могут читать, другие ничего не могут
chgrp -R apache * # изменив группу на apache, теперь apache может читать файлы.
Помните, что вы не хотите добавлять обычных пользователей в группу apache.
Ну, вы не можете запретить пользователям видеть "за пределами своих домашних каталогов" без полного chroot, потому что они всегда смогут видеть системные каталоги, например /usr/bin
(потому что так запускаются программы). Я не понимаю, как setfacl
введенная вами команда даст показанные результаты; вы можете дать результат getfacl
и ls -l
для домашнего каталога пользователя в вашем вопросе?