У меня есть каталог под названием data
. Затем я запускаю скрипт под идентификатором пользователя «робот». робот пишет в data
каталог и обновляет файлы внутри. Идея в том, data
что я и робот открыты для обновления.
Поэтому я настроил группу прав и владельцев следующим образом
drwxrwxr-x 2 me robot-grp 4096 Jun 11 20:50 data
где и я, и робот принадлежит к «robot-grp». Я изменяю разрешение и группу владельцев рекурсивно, как родительский каталог.
Я регулярно загружаю новые файлы в data
каталог, используя rsync
. К сожалению, новые загруженные файлы не наследуют разрешения родительского каталога, как я надеюсь. Вместо этого это выглядит так
-rw-r--r-- 1 me users 6 Jun 11 20:50 new-file.txt
Когда робот пытается выполнить обновление new-file.txt
, происходит сбой из-за отсутствия разрешения на доступ к файлу.
Я не уверен, поможет ли установка umask. В любом случае новые файлы на самом деле не следуют этому.
$ umask -S
u=rwx,g=rx,o=rx
Я часто путаюсь с разрешением файла Unix. У меня даже есть правильный план? Я использую Debian Lenny.
источник
sudo setfacl -Rm g:users:rwX,d:g:users:rwX /var/www/logs_or_something
. Возникла проблема с тестами PHPUnit. После создания лог-файлов из запущенных тестов пользователь apachewww-data
не смог их записать / прочитать.setfacl
странице руководства ,-b
или--remove-all
удаляет расширенные ACL.setfacl -Rm g:users:rwX,d:g:users:rwX data/
в конце/etc/fstab
?defaults
наdefaults,acl
.setfacl
это команда, которую вы должны запустить из терминала.data/
должен быть заменен путем к каталогу, который вы хотите изменить.Пометка каталога setgid (
g+s
) заставит новые файлы наследовать групповое владение каталогом, но-g
опция rsync попытается переопределить это.источник
Другие ответы применимы в общем случае, но, как вы упомянули, что rsync является источником проблемы, вам может потребоваться просто настроить его вызов.
Для начала, популярный
-a
флаг делает rsync разрешения на копирование; использовать-r
вместо-a
или добавить-no-p
(для синхронизации без разрешения) и-no-g
(для синхронизации группы). Также rsync поддерживает--chmod
флаг для изменения прав доступа к вновь создаваемым файлам.источник
Ваш umask не подходит для разрешений, которые вы хотите. Вам нужен umask 002. В настоящее время у вас есть umask 022. Кроме того, комментарий о создании setgid каталога правильный, но я не уверен, хотите ли вы изменить принадлежность файловой группы или нет.
Права доступа к файлам Unix на самом деле очень простая модель. Я нахожу ACL полностью запутывающими себя. :-)
источник