Назад | Перейти на главную страницу

Установка прав доступа к файлам по умолчанию в общем каталоге с помощью ACL и umask

У нас есть Linux под управлением Ubuntu 10.04. Его основная функция - это веб-сервер, и он настроен (я думаю) с обычным стеком LAMP.

Разработчики имеют доступ к общему каталогу "dev", который содержит подкаталог, который служит корневым веб-каталогом. У всех разработчиков есть индивидуальный доступ по SSH.

Когда разработчики создают файлы в дереве каталогов «dev» или загружают файлы в «dev» из репозитория, мы хотим, чтобы права доступа к файлам были rwxrwxr-x. Вместо этого вновь созданные файлы имеют права доступа rw-r - r--. Изменив ACL и установив группу и идентификатор пользователя на «dev» с помощью липких битов и т. Д., Мне удалось получить вновь созданные файлы с разрешениями rw-rw-r--.

Я предполагаю, что проблема заключается в конфигурации umask, которая в настоящее время установлена ​​с использованием глобального значения 022 в / etc / profile. Я не хочу изменять umask глобально или для каждого разработчика, чтобы разрешить более мягкие разрешения по умолчанию.

Я не вижу способа добиться того, чего мы хотим, с ACL и umask, если я чего-то не упускаю. Конечно, это довольно распространенное требование для веб-разработчиков, работающих над общими проектами.

Есть ли предпочтительный или рекомендуемый подход?

Изначально я установил gid на "dev" следующим образом.

chmod g+s dev
ls -l
drwxrwsr-x  8 755 admin 4096 Jan 19 13:24 dev

ACL по умолчанию для "dev" выглядит следующим образом.

getfacl dev

# file: dev
# owner: 755
# group: admin
# flags: -s-
user::rwx
group::rwx
other::r-x

Я применил ACL для группы «admin» (к которой принадлежат разработчики).

setfacl -Rm d:g:admin:rwX

getfacl dev

# file: dev
# owner: 755
# group: admin
# flags: -s-
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:group:admin:rwx
default:mask::rwx
default:other::r-x

Создаю файл и проверяю права доступа к файлу.

touch dev/foo

ls -l dev

-rw-rw-r--+  1 duncmc admin    0 Jan 19 16:03 foo

На этот раз я добавляю ACL для своего пользователя "duncmc"

setfacl -Rm u:duncmc:rwX dev

getfacl dev
# file: dev
# owner: 755
# group: admin
# flags: -s-
user::rwx
user:duncmc:rwx
group::rwx
mask::rwx
other::r-x
default:user::rwx
default:group::rwx
default:group:admin:rwx
default:mask::rwx
default:other::r-x

Создаю новый файл и проверяю разрешения.

touch dev/bar

ls -l dev

-rw-rw-r--+  1 duncmc admin    0 Jan 19 16:07 bar
-rw-rwxr--+  1 duncmc admin    0 Jan 19 16:03 foo

Добавление ACL для моего пользователя, похоже, изменило разрешение группы (было rw- теперь rwx) для существующего файла «foo». Вновь созданный файл унаследовал разные разрешения. Для меня это не имеет смысла и предполагает, что в том, как это работает, есть что-то фундаментальное, чего я не понимаю.

Оказывается, права доступа к файлам rw-rw-r-- (или 644) соответствуют нашим требованиям.