Quando uso setfacl per gestire quali autorizzazioni dovrebbero avere i file/directory figli, per qualche motivo i file hanno tutti i permessi tranne quello di esecuzione ("x").
[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
Pensavo avesse qualcosa a che fare con umask ma cambiarlo in vari modi non dà mai il risultato atteso a meno che non mi manchi qualcosa.
Come può essere risolto?
Risposta accettata:
La risposta di Hauke Laging sta cercando di dire:
cp
e programmi correlati (ad es.cpio
,tar
, ecc.)
che copiano o ricreano in altro modo un file,
che (cercherà di) impostare il nuovo file sulla stessa modalità
del file originale.- I compilatori, che creano file eseguibili binari, specificano una modalità 777
(almeno, se la compilazione riesce),
in modo che l'utente possa effettivamente eseguire il programma che ha appena compilato.
Qualsiasi programma che crea un file o una directory specifica la modalità (autorizzazioni)
che desidera che il file abbia.
Questo è quasi sempre codificato nel programma C
(o qualunque linguaggio venga utilizzato)
e non è quasi mai direttamente accessibile all'utente.
Poi il umask
value e l'ACL predefinito possono disattivare i bit di autorizzazione,
ma non aggiungerli.
Il tuo problema è che, mentre mkdir
specifica una modalità 777 (rwxrwxrwx
),
quasi tutti i programmi che creano file specificano 666 (rw-rw-rw-
).
Ciò include touch
, la shell
(per il reindirizzamento I/O; ad esempio, program > file
),
gli editori (vi
, vim
, emacs
, ecc…), dd
, split
, e così via.
Pertanto, non otterrai i permessi di rwxrwxrwx
su un file semplice
immediatamente dopo la creazione (da uno qualsiasi di questi programmi),
non importa cosa fai con gli ACL;
devi creare il file e poi chmod
esso.
Ci sono un paio di eccezioni a questa regola: