2009-08-06 3 views
2

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

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

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

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

ответ

2

С тех пор, как я перекрестил вопрос (я не знал о ServerFault до тех пор, пока не спросил), я перекрестно опубликую ответ, так как лично считаю, что вопрос подходит для обеих сообществ.

hayalci (о 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

Один трюк я использовал на общих коробках заключается в следующем:

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

    chmod -R o-rwx /home/*

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

    chmod o+x /home/*

  • изменение public_html каждого пользователя каталога группы для WWW-данных (или вашей апача группы)

    команда chgrp WWW-данные/дома/*/public_html

  • изменения всех каталогов в/дома/*/public_html to setgid

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

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

+0

Я вижу, как это будет работать, но мне не нравится идея папки /home/joeuser/joeuser.com, принадлежащей кому-либо, кроме joeuser: collect. – arbales

1

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

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

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

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

chmod 755 /home/*/public_html < - Заменить любой WWW пути вы используете

Теперь Apache и другие услуги будут свободно кд/дома/Foobar/public_html список файлов и все остальное, на потребности веб-сервере.