У меня есть интранет компании, которую я недавно переместил от Novell до Linux. Я пытаюсь настроить полномочия пользователя, и я схожу с ума.
Существует пара дюжины отделов, каждого со специализированным каталогом в веб-корне. Существуют также общие каталоги для CSS, шаблонов, изображений, и т.д.
Я хочу, чтобы у всех пользователей были доступ только для чтения ко всему сайту и доступ для чтения-записи только к каталогу их отдела.
Что я уже попробовал:
Настройте группу пользователей для каждого каталога и назначенных пользователей группам по мере необходимости. Столкновение с полномочиями и проблемами наследования владения.
Созданный проверочный пользователь и затем созданный htdocs папка в корневом каталоге проверочного пользователя. Затем созданный ссылка, переименованная в него к названию отдела, и, бросил ссылку в основной htdocs каталог. Доступ для чтения прекрасен, но я не могу перечислить содержание того каталога при использовании DreamWeaver или клиента FTP от корня htdocs.
Я чувствую, что существует некоторая простая-но-крайне-важная часть информации, которую я пропускаю. Selectively, настраивающий доступ для чтения-записи к htdocs подкаталогам, не может возможно быть этим трудным.
Совет для неопытного пользователя, привыкшего к Novell и IIS?
Скажем, у Вас есть Sue & Sam в Продажах и Harry и Hermione в HR.
/var/www/htdocs
†Полезные команды (см. страницы справочника),
† или везде, где docroot Apache
Полномочия файла в Linux слушают назад старые корни Unix, из которых вырос Linux. Возможно, руководство, такое как этот по TuxFiles.org или этому материалу от TLDP может помочь Вам понять основную структуру полномочий.
Инструменты, с которыми по всей вероятности необходимо ознакомить себя, показывают и chmod. Или альтернативы GUI, если Вам установили GUI на Вашем сервере.
Ваши потребности могут быть лучше удовлетворены ACLs, а не классической моделью полномочий UNIX.
Сделайте одну группу для доступа только для чтения везде, затем сделайте одну группу для каждого отдела. Затем используйте setfacl
("файл набора ACL"), чтобы дать доступ для чтения группы только для чтения ко всем папкам и дать каждый доступ для записи групп к его папке отдела.
К сожалению, необходимо будет искать синтаксис для setfacl
. Я не очень знаком с ним. Для запущения Вас вот, мой cronjob, который дает апачскому пользователю на моем полном доступе сервера к public_html каталогу в доме каждого пользователя:
#!/bin/sh
HOME_DIR="/home"
WWW_DIRNAME="public_html"
WWW_USER="www-data"
setfacl -Rm "u:${WWW_USER}:rwX,d:u:${WWW_USER}:rwX" "$HOME_DIR/*/$WWW_DIRNAME"
Я поместил это в задание крона так, чтобы любые файлы, что я вставил свой public_html каталог, были вскоре сделаны доступными для апача.
При хранении с идеей групп создайте все каталоги, в которых Вы нуждаетесь для всех своих групп.
Сделайте все под веб-корнем принадлежавшим www-данным или апачу или что когда-либо пользователь Ваш веб-сервер выполняет под тем, таким образом, это будет иметь доступ. Это сделает все принадлежавшим веб-серверу и будет независимо группы веб-сервера:
EX: chown -R www-data:www-data /var/www
Затем измените группу для каждой из тех папок группы:
EX: chown -R www-data:group1 /var/www/group1
После того как все папки имеют правильные группы, можно добавить доступ для чтения-записи группы к ним:
EX: chmod -R g+rw /var/www/*