Предположим, что мой umask - 0077.
У меня есть каталог, к foo
которому я хочу применить специальные разрешения. Все файлы, в которых я создаю, foo
должны быть доступны для чтения всему миру, а все каталоги должны быть доступны для чтения и выполнения.
В настоящее время, если я создам файл, это будет 0600, а каталог будет 0700:
$ cd foo/
$ touch file
$ mkdir directory
$ ls -l
drwx------ 2 nfm nfm 4096 2012-01-12 16:16 directory
-rw------- 1 nfm nfm 0 2012-01-12 16:15 file
Я хочу, чтобы файл был 0644, а каталог 0755, независимо от моего umask:
drwxr-xr-x 2 nfm nfm 4096 2012-01-12 16:16 directory
-rw-r--r-- 1 nfm nfm 0 2012-01-12 16:15 file
Как мне этого добиться?
linux
permissions
access-control-list
umask
stickmangumby
источник
источник
Ответы:
Да, ACL могут сделать это.
Убедитесь, что ваша файловая система смонтирована с помощью acl. Чтобы проверить это, введите
mount
. Вы должны увидеть 'acl' в списке других разрешений, например:Если он не смонтирован с помощью acl, откройте / etc / fstab и добавьте 'acl' в список параметров:
Теперь перемонтируйте работающую файловую систему с новыми параметрами:
Установите утилиты acl. На Ubuntu / Debian это:
Ваши новые друзья
setfacl
иgetfacl
. Используйте,setfacl
чтобы изменить acl по умолчанию для каталога:-d
устанавливает значение по умолчанию,-m
изменяет acl иo:r
предоставляет «прочим» право на чтение. Установка по умолчанию для каталога примерно эквивалентна установке setgid для каталога, но вместо вновь созданных файлов, наследующих группу, они наследуют acl. Вместе, setgid и acl могут быть мощными, потому что вы можете предоставить разрешения по умолчанию группе и получить вновь созданные файлы, принадлежащие к этой группе, для эффективного umask для каждого каталога на основе группы.Проверьте свою работу:
ls -l
теперь должен отображаться дополнительный знак «+», указывающий на наличие acl в дополнение к стандартным разрешениям для файлов.Вы можете получить подробную информацию о ACL, используя
getfacl
.источник
setfacl
иgetfacl
возвращают ожидаемый результат, но только каталоги (не файлы) в родительском каталоге наследуют acl, и даже тогда мой umask имеет приоритет над значением по умолчанию (если они не доступны для чтения всему миру,default:other::r--
он не позволяет другому пользователю доступ к ним). Я что-то упустил очевидное?Вы также можете использовать umask для каталога, установив ACL-свойство mask следующим образом:
источник
Просто установите OnDir и настройте его в соответствии с вашими потребностями. Я ответил на похожую проблему, расположенную здесь .
источник