Списки контроля доступа в Debian Lenny - PullRequest
2 голосов
/ 07 августа 2009

Итак, для моих клиентов, у которых есть сайты, размещенные на моем сервере, я создаю учетные записи пользователей со стандартными домашними папками внутри /home.

Я установил SSH-тюрьму для всех пользователей collective, потому что я действительно против использования отдельного FTP-сервера. Затем я установил ACL и добавил acl к своему /etc/fstab - все хорошо.

  1. Я перехожу на /home и chmod 700 ./*.
    • В этот момент пользователи не могут видеть домашние каталоги других пользователей (yay), но apache также не может их видеть (boo)
    • . Я побежал setfacl u:www-data:rx ./*. Я также пробовал отдельные каталоги.
    • Теперь apache может снова видеть сайты, но могут и все пользователи. ACL изменил разрешения для домашних папок на 750.

Как настроить ACL так, чтобы Apache мог видеть сайты, размещенные в домашних папках пользователя И 2. Пользователи не могут видеть вне своего дома и в чужих файлах.

Ответы [ 3 ]

2 голосов
/ 16 августа 2009

Поскольку я перекрестно опубликовал вопрос (я не знал о ServerFault до тех пор, пока не спросил), я сделаю перекрестный ответ, так как лично я нахожу вопрос подходящим для обоих сообществ.

комментарий Хаяльчи (на ServerFault), что

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.
1 голос
/ 15 ноября 2010

Мой типичный способ сделать это, предполагая, что все пользователи находятся в группе «пользователи»:

chmod 701 /home/*
chgrp users /home/*

При необходимости сделайте то же самое для / home, чтобы пользователи не могли видеть список домашних каталогов. Однако они могут получить почти тот же список из / etc / passwd или getent passwd

Теперь всем в группе пользователей будет отказано в доступе ко всем домашним папкам (кроме их собственных). Пользователи, не являющиеся членами (например, Apache и другие сервисы), все еще смогут подключаться к домашним каталогам, но не могут выполнять ls.

chmod 755 /home/*/public_html <- Заменить на любой путь www, который вы используете </p>

Теперь Apache и другие сервисы будут свободны для cd / home / foobar / public_html для просмотра списка файлов и всего, что нужно веб-серверу.

1 голос
/ 16 августа 2009

Один трюк, который я использовал для общих ящиков, это:

  • рекурсивно устанавливает содержимое домашних каталогов, чтобы запретить доступ "другим" пользователям

    chmod -R o-rwx /home/*

  • установить все права доступа к домашним каталогам пользователей верхнего уровня для выполнения «другими» пользователями

    chmod o+x /home/*

  • изменить группу каталогов public_html каждого пользователя на www-data (или вашу группу apache)

    chgrp www-data / home / * / public_html

  • изменить все каталоги в / home / * / public_html на setgid

    find / home / user / public_html -type d -exec chmod 2750 {} \;

Не добавляйте ни одного пользователя в www-данные (или группу apache). Даже несмотря на то, что они не являются членами, трюк setgid сделает файлы доступными для чтения с помощью apache. Он не является полностью защищенным (перемещение файлов не всегда меняет владельца группы, а иногда права других пользователей остаются, если они присутствуют до перемещения), но он работает на моем компьютере. Надеюсь, это немного поможет! Может быть, у кого-то еще будет лучшее решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...