Могу ли я переопределить свой umask, используя ACL, чтобы сделать все файлы, созданные в данном каталоге, доступными для чтения?
Предположим, что мой 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
Как мне этого добиться?
3 ответа
Да, ACL могут сделать это.
Убедитесь, что ваша файловая система смонтирована с помощью acl. Чтобы проверить это, введите
mount
, Вы можете увидеть 'acl' в списке других разрешений, например:/dev/sda1 on / type ext4 (rw,errors=remount-ro,acl)
Если он не смонтирован с помощью acl, откройте / etc / fstab и добавьте 'acl' в список параметров:
# /etc/fstab: static file system information. # # <file system> <mount point> <type> <options> <dump> <pass> /dev/sda1 / ext3 noatime,errors=remount-ro,acl 0 1
Теперь перемонтируйте работающую файловую систему с новыми параметрами:
mount -v -o remount /
Установите утилиты acl. В Ubuntu / Debian это:
sudo apt-get install acl
Ваши новые друзья
setfacl
а такжеgetfacl
, использованиеsetfacl
чтобы изменить acl по умолчанию для каталога:setfacl -d -m o:r foo
-d
устанавливает значение по умолчанию,-m
изменяет acl иo:r
предоставляет "другим" право на чтение. Установка по умолчанию для каталога примерно эквивалентна установке setgid для каталога, но вместо вновь созданных файлов, наследующих группу, они наследуют acl. Вместе, setgid и acl могут быть мощными, потому что вы можете предоставить разрешения по умолчанию для группы и получить вновь созданные файлы, принадлежащие к этой группе, для эффективного umask для каждого каталога на основе группы.Проверьте свою работу:
ls -l
теперь должен показывать дополнительный знак "+", указывающий на наличие acl в дополнение к стандартным разрешениям для файлов.% ls -la foo/ drwxr--r--+
Вы можете получить подробную информацию о ACL, используя
getfacl
,% getfacl foo # file: foo # owner: you # group: you user::rwx group::r-- other::r-- default:user::rwx default:group::--- default:other::r--
Вы также можете использовать umask для каталога, установив ACL-свойство mask следующим образом:
setfacl -d -m mask:07 .