Могу ли я переопределить свой 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 могут сделать это.

  1. Убедитесь, что ваша файловая система смонтирована с помощью 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 /
    
  2. Установите утилиты acl. В Ubuntu / Debian это:

    sudo apt-get install acl
    
  3. Ваши новые друзья setfacl а также getfacl, использование setfacl чтобы изменить acl по умолчанию для каталога:

    setfacl -d -m o:r foo
    

    -d устанавливает значение по умолчанию, -m изменяет acl и o:r предоставляет "другим" право на чтение. Установка по умолчанию для каталога примерно эквивалентна установке setgid для каталога, но вместо вновь созданных файлов, наследующих группу, они наследуют acl. Вместе, setgid и acl могут быть мощными, потому что вы можете предоставить разрешения по умолчанию для группы и получить вновь созданные файлы, принадлежащие к этой группе, для эффективного umask для каждого каталога на основе группы.

  4. Проверьте свою работу: 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 .

Просто установите OnDir и настройте его в соответствии с вашими потребностями. Я ответил на похожую проблему, расположенную здесь.

Другие вопросы по тегам