Как заставить новое разрешение файла наследоваться родительскому каталогу?

Мне назвали каталог data. Затем я запускаю скрипт под идентификатором пользователя 'робот'. робот пишет в data каталог и файлы обновления внутри. Идея data открыто и для меня и для робота для обновления.

Таким образом, я устанавливаю разрешение и группу владельца как это

drwxrwxr-x  2 me robot-grp 4096 Jun 11 20:50 data

где и меня и робот принадлежит 'группе робота'. Я изменяю разрешение и группу владельца рекурсивно как родительский каталог.

Я регулярно загружаю новые файлы в data использование каталога rsync. К сожалению, новые загруженные файлы не наследовали разрешение родительского каталога, как я надеюсь. Вместо этого это похоже на это

-rw-r--r-- 1 me users       6 Jun 11 20:50 new-file.txt

Когда робот пытается обновить new-file.txt, это перестало работать из-за отсутствия разрешения файла.

Я не уверен, если установка umask помогает. В anycase новые файлы действительно не следует за ним.

$ umask -S
u=rwx,g=rx,o=rx

Я часто соединяюсь разрешением файла Unix. У меня даже есть правильный план? Я использую Debian lenny.

85
задан 23.07.2014, 15:03

3 ответа

Вы не хотите изменять значение по умолчанию своей системы umask, который является угрозой безопасности. Липкая разрядная опция будет работать в некоторой степени, но использование ACL является лучшим способом пойти. Это легче, чем Вы думаете. Проблема с основным ACL состоит в том, что они не являются рекурсивными по умолчанию. При установке ACL на каталоге только файлы в том каталоге наследовали ACL. При создании подкаталога это не получает родительский ACL, если ACL не установлен рекурсивно вызвать.

Во-первых, удостоверьтесь, что ACLs включены для объема, каталог идет. Если Вы имеете tune2fs, можно выполнить следующее:

# tune2fs -l /dev/sda1 | grep acl
Default mount options:    user_xattr acl

Если Вы не имеете tune2fs, затем исследуйте fstabs:

# cat /etc/fstab 
/dev/system/root        /                       ext3    defaults        1 1
/dev/system/home        /home                   ext3    defaults        1 2
/dev/storage/data       /data                   ext3    defaults        1 2
LABEL=/boot             /boot                   ext3    defaults        1 2

4-й столбец, в котором говорятся средства "значений по умолчанию" относительно моей системы (CentOS 5.5), ACL, идет. Когда в сомнении, оставьте его как значения по умолчанию. При попытке установить ACL и это ошибки, возвратитесь и добавьте acl опцию к/etc/fstab праву после значений по умолчанию: defaults,acl.

Из того, что я понимаю, Вы хотите, чтобы у всех в группе пользователей был доступ для записи к каталогу данных. Это выполняется следующим:

setfacl -Rm g:users:rwX,d:g:users:rwX data/
53
ответ дан 07.12.2019, 08:01

Отмечание каталога setgid (g+s) заставит новые файлы наследовать владение группы каталога, но -g опция rsync попытается переопределить это.

32
ответ дан 07.12.2019, 08:01

Ваш umask является неправильным при полномочиях, которые Вы хотите. Вы хотите umask 002. У Вас в настоящее время есть umask 022. Кроме того, комментарий о создании каталога setgid корректен, но я не уверен, является ли владение группы файлов чем-то, что Вы хотите изменить или нет.

Полномочия файла Unix являются на самом деле очень простой моделью. Я нахожу ACLs абсолютно сбивающий с толку сам.:-)

3
ответ дан 07.12.2019, 08:01

Теги

Похожие вопросы