Když používám setfacl ke správě toho, jaká oprávnění by měly mít podřízené soubory / adresáře, z nějakého důvodu mají soubory všechna oprávnění kromě spouštěcího (“x”) jednoho.
[email protected]:/opt/lampp/htdocs/project$ getfacl .
# file: .
# owner: someuser
# group: webs
# flags: -s-
user::rwx
group::rwx
other::rwx
default:user::rwx
default:group::rwx
default:other::rwx
[email protected]:/opt/lampp/htdocs/project$ touch file
[email protected]:/opt/lampp/htdocs/project$ mkdir dir
[email protected]:/opt/lampp/htdocs/project$ ls -l
total 4
drwxrwsrwx+ 2 someuser webs 4096 paź 31 13:35 dir
-rw-rw-rw- 1 someuser webs 0 paź 31 13:35 file
Myslel jsem, že to má něco společného s umask, ale jeho různé změny nikdy nepřinesou očekávaný výsledek, pokud mi něco neunikne.
Jak to lze opravit?
Přijatá odpověď:
Odpověď Hauke Laging se snaží říci:
cp
a související programy (např.cpio
,tar
, atd.)
které zkopírují nebo jinak znovu vytvoří soubor,
což (pokusí se) nastaví nový soubor do stejného režimu
jako původní soubor.- Kompilátory, které vytvářejí binární spustitelné soubory, určují režim 777
(alespoň, pokud je kompilace úspěšná),
takže uživatel bude skutečně schopen spustit program, který právě zkompiloval.
Jakýkoli program, který vytváří soubor nebo adresář, určuje režim (oprávnění)
, který má daný soubor mít.
Toto je téměř vždy napevno zakódováno v programu C
(nebo v jakémkoli jiném použitém jazyce)
a téměř nikdy není přímo přístupné uživateli.
Poté umask
a výchozí ACL může vypnout bity oprávnění,
ale nepřidávat je.
Váš problém je, že zatímco mkdir
určuje režim 777 (rwxrwxrwx
),
téměř všechny programy, které vytvářejí soubory, specifikují 666 (rw-rw-rw-
).
To zahrnuje touch
, shell
(pro přesměrování I/O; např. program > file
),
editory (vi
, vim
, emacs
, atd...), dd
, split
, a tak dále.
Proto nezískáte oprávnění rwxrwxrwx
na prostý soubor
ihned po vytvoření (kterýmkoli z těchto programů),
bez ohledu na to, co děláte s ACL;
musíte vytvořit soubor a poté chmod
to.
Z tohoto pravidla existuje několik výjimek: