Как umask влияет на ACLs?

Они идентичны в Bash. Посмотрите на builtins/colon.def в исходном коде Bash-4.2.

В Вашей команде strace true Вы на самом деле выполняете двоичный файл /bin/true вместо удара, встроенного верный.

10
09.07.2013, 15:20
1 ответ

Я нашел этот пример, названный: ACL и МАСКА в Linux. В этой статье продемонстрированы следующие примеры, который я думаю, что справка понимает как ACL и umask взаимодействуйте друг с другом.

Фон

Когда файл создается в системе Linux полномочия по умолчанию 0666 применяются тогда как, когда каталог создается полномочия по умолчанию 0777 применяются.

пример 1 - файл

Предположим, что мы устанавливаем наш umask на 077 и касаемся файла. Мы можем использовать strace для наблюдения, что на самом деле происходит, когда мы делаем это:

$ umask 077; strace -eopen touch testfile 2>&1 | tail -1; ls -l testfile
open("testfile", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
-rw-------. 1 root root 0 Sep 4 15:25 testfile

В этом примере мы видим что системный вызов open() сделан с полномочиями 0666, однако когда umask 077 затем применяется ядром, следующие полномочия удалены (---rwxrwx) и с нами оставляют rw------- иначе 0600.

пример - 2 каталога

То же понятие может быть применено к каталогам, за исключением того, что вместо полномочий по умолчанию, являющихся 0666, они 0777.

$ umask 022; strace -emkdir mkdir testdir; ls -ld testdir
mkdir("testdir", 0777)                  = 0
drwxr-xr-x 2 saml saml 4096 Jul  9 10:55 testdir

На этот раз мы используем mkdir команда. mkdir управляйте затем названный системным вызовом mkdir(). В вышеупомянутом примере мы видим что mkdir команда, названная mkdir() системный вызов с defaul полномочиями 0777 (rwxrwxrwx). На этот раз с umask 022 следующие полномочия удалены (----w--w-), таким образом, нас оставляют с 0755 (rwxr-xr-x) когда каталоги создаются.

пример 3 (Применение ACL по умолчанию)

Теперь давайте создадим каталог и продемонстрируем то, что происходит, когда ACL по умолчанию применяется к нему наряду с файлом в нем.

$ mkdir acldir
$ sudo strace -s 128 -fvTttto luv setfacl -m d:u:nginx:rwx,u:nginx:rwx acldir

$ getfacl --all-effective acldir
# file: acldir
# owner: saml
# group: saml
user::rwx
user:nginx:rwx          #effective:rwx
group::r-x          #effective:r-x
mask::rwx
other::r-x
default:user::rwx
default:user:nginx:rwx      #effective:rwx
default:group::r-x      #effective:r-x
default:mask::rwx
default:other::r-x

Теперь давайте создадим файл, aclfile:

$ strace -s 128 -fvTttto luvly touch acldir/aclfile

# view the results of this command in the log file "luvly"
$ less luvly

Теперь получите полномочия недавно созданного файла:

$ getfacl --all-effective acldir/aclfile 
# file: acldir/aclfile
# owner: saml
# group: saml
user::rw-
user:nginx:rwx          #effective:rw-
group::r-x          #effective:r--
mask::rw-
other::r--

Заметьте маску, mask::rw-. Почему это не mask::rwx точно так же, как, когда каталог был создан?

Проверьте luvly файл журнала для наблюдения, какие полномочия по умолчанию использовались для создания файла:

$ less luvly |grep open |tail -1
10006 1373382808.176797 open("acldir/aclfile", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3 <0.000060>

Это то, где это get's, немного путающий. С комплектом масок к rwx когда каталог был создан, Вы будете ожидать то же поведение для создания файла, но это не прокладывает себе путь. Это - потому что ядро звонит open() функция с полномочиями по умолчанию 0666.

Подводить итог

  • Файлы не доберутся, выполняют разрешение (маскирование или эффективный). Не имеет значения, какой метод мы используем: ACL, umask, или маска и ACL.
  • Каталоги могут добраться, выполняют полномочия, но это зависит от того, как поле маскирования установлено.
  • Единственный способ установить выполняет полномочия для файла, который находится под полномочиями ACL, должен вручную установить их использование chmod.

Ссылки

10
27.01.2020, 20:02
  • 1
    @jofel - сообщает мне, имеет ли это смысл. –  slm♦ 09.07.2013, 18:41
  • 2
    @sIm за Ваш подробный ответ. Это приближает меня к моей фактической проблеме: разрешение группы в chmod syscall влияет на маску файла (chmod("file",0760) -> mask:rw, chmod("file",0770) -> mask:rwx ). Возможно, я должен запустить новый вопрос об этом... –  jofel 09.07.2013, 19:13
  • 3
    @jofel - да, который походит на другой вопрос. –  slm♦ 09.07.2013, 20:01
  • 4
    @sIm и этому уже ответили здесь. –  jofel 09.07.2013, 20:40
  • 5
    , "Когда файл создается в системе Linux полномочия по умолчанию 0666, применяется..." - хорошо это не точно правильно, так как это до приложения создания. –  ilkkachu 14.04.2017, 16:21

Теги

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