Я пытаюсь создать среду, в которой несколько пользователей могут работать над одним проектом веб-сайта. Кроме того, каждый должен иметь возможность предоставить дополнительные разрешения на запись для apache.
Идея состоит в том, что каждый использует отдельный логин (допустим, это joe
, jane
и mark
в группе users
). Apache работает как apache:www
. Каждый должен иметь права на запись во все файлы, apache имеет доступ только для чтения. Теперь файлы, выбранные пользователями, должны быть доступны для записи Apache (важно, чтобы apache не имел прав на запись для всех файлов - соображения безопасности).
Я пробовал две настройки: одна с использованием ACL, другая с использованием umask, common group и т. Д. Оба имеют один и тот же недостаток - пользователи не могут изменять права на запись для apache.
Я попробовал два подхода:
setfacl -m default:group:users:rwx project/
Таким образом, мне легко управлять разрешениями на запись для всех пользователей. Никаких дополнительных настроек, просто работает. Каким бы ни был владелец файла, каждый пользователь команды может изменить файл. К сожалению, только владелец файла может добавить права на запись для apache
umask 0002
в .bashrc
, все пользователи в одной группе
Основываясь на простых разрешениях, каждый пользователь имеет доступ для чтения и записи ко всем файлам. chgrp www ...
необходимо, чтобы apache имел права на запись. Опять же - это может сделать только владелец файла.
Поэтому я в основном ищу способ предоставить нескольким пользователям разрешение на выполнение g+w
в файле. Я думал о других способах сделать это, например:
setfacl -m d:group:users:rwx
)setfacl -m d:user:apache:rwx
)./www
каталог должен быть доступен для записи apache
, должен быть создан в ./data
и связаны символическими ссылками - но это не элегантно и не удобноПоэтому я ищу простое в использовании решение. Первоначальная настройка может быть сложной, но повседневное использование не должно. Какие-либо предложения?
Ничто не позволяет пользователю без полномочий root изменять права доступа к файлам. Я бы выбрал сценарий sudo'd - хотя я не понимаю, что в этом такого сложного. Использовать readlink -f
чтобы канонизировать имя файла для изменения, чтобы вы могли проверить правильность префикса, не позволяйте пользователю указывать разрешения, просто сделайте это сценарием «предоставить доступ на запись к Apache».