Они идентичны в Bash. Посмотрите на builtins/colon.def
в исходном коде Bash-4.2.
В Вашей команде strace true
Вы на самом деле выполняете двоичный файл /bin/true
вместо удара, встроенного верный.
Я нашел этот пример, названный: ACL и МАСКА в Linux. В этой статье продемонстрированы следующие примеры, который я думаю, что справка понимает как ACL и umask
взаимодействуйте друг с другом.
Когда файл создается в системе Linux полномочия по умолчанию 0666
применяются тогда как, когда каталог создается полномочия по умолчанию 0777
применяются.
Предположим, что мы устанавливаем наш 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.
То же понятие может быть применено к каталогам, за исключением того, что вместо полномочий по умолчанию, являющихся 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
) когда каталоги создаются.
Теперь давайте создадим каталог и продемонстрируем то, что происходит, когда 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
.
chmod
.
chmod("file",0760)
->mask:rw
,chmod("file",0770)
->mask:rwx
). Возможно, я должен запустить новый вопрос об этом... – jofel 09.07.2013, 19:13