GNU/Linux >> Linux Esercitazione >  >> Linux

In che modo umask influisce sugli ACL?

Ho trovato questo esempio, intitolato:ACL e MASK in Linux. In questo articolo vengono dimostrati i seguenti esempi che penso aiutino a capire come ACL e umask interagiscono tra loro.

Sfondo

Quando un file viene creato su un sistema Linux, i permessi predefiniti 0666 vengono applicati mentre quando viene creata una directory i permessi predefiniti 0777 vengono applicati.

esempio 1 - file

Supponiamo di impostare il nostro umask su 077 e di toccare un file. Possiamo usare strace per vedere cosa sta realmente accadendo quando lo facciamo:

$ 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

In questo esempio possiamo vedere che la chiamata di sistema open() è fatto con i permessi 0666, tuttavia quando il umask 077 viene quindi applicato dal kernel, vengono rimosse le seguenti autorizzazioni (---rwxrwx ) e rimaniamo con rw------- ovvero 0600.

esempio - 2 directory

Lo stesso concetto può essere applicato alle directory, tranne per il fatto che invece di essere le autorizzazioni predefinite 0666, sono 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

Questa volta stiamo usando mkdir comando. Il mkdir comando quindi chiamato la chiamata di sistema mkdir() . Nell'esempio precedente possiamo vedere che mkdir comando chiamato mkdir() chiamata di sistema con i permessi predefiniti 0777 (rwxrwxrwx ). Questa volta con un umask di 022 le seguenti autorizzazioni vengono rimosse (----w--w- ), quindi ci resta 0755 (rwxr-xr-x ) quando sono state create le directory.

esempio 3 (applicazione dell'ACL predefinito)

Ora creiamo una directory e dimostriamo cosa succede quando ad essa viene applicato l'ACL predefinito insieme a un file al suo interno.

$ 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

Ora creiamo il file, aclfile :

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

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

Ora ottieni i permessi del file appena creato:

$ 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--

Nota la maschera, mask::rw- . Perché non è mask::rwx proprio come quando è stata creata la directory?

Controlla il luvly log per vedere quali autorizzazioni predefinite sono state utilizzate per la creazione del file:

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

Questo è dove diventa un po 'confuso. Con la maschera impostata su rwx quando la directory è stata creata, ti aspetteresti lo stesso comportamento per la creazione del file, ma non funziona in questo modo. È perché il kernel sta chiamando il open() funzione con i permessi predefiniti di 0666 .

Per riassumere

  • I file non riceveranno il permesso di esecuzione (mascheramento o effetto). Non importa quale metodo usiamo:ACL, umask o mask &ACL.
  • Le directory possono ottenere i permessi di esecuzione, ma dipende da come è impostato il campo di mascheramento.
  • L'unico modo per impostare i permessi di esecuzione per un file che è sotto i permessi ACL è impostarli manualmente usando chmod .

Riferimenti

  • pagina man acl

per motivi di sicurezza, il sistema operativo Linux non consente la creazione automatica di un file con un bit di esecuzione. Questo per impedire agli aggressori informatici di scrivere programmi in tali file e di eseguirli se ottengono l'accesso al tuo server. È solo una precauzione di sicurezza. Dovrai per sempre impostare manualmente il bit di esecuzione sui file dopo averli creati con l'utility chmod


Linux
  1. Come modificare le autorizzazioni dei file su un'unità Fat32??

  2. Come modificare i permessi dei file in cPanel File Manager

  3. Capire come Umask controlla i permessi iniziali di file/directory in Linux

  4. Spostare un file mentre è in uso:come funziona?

  5. In che modo ACL calcola le autorizzazioni effettive su un file?

Autorizzazioni Linux:come trovare le autorizzazioni di un file

Comando Chmod:come modificare le autorizzazioni dei file in Linux

Come modificare le autorizzazioni dei file utilizzando FileZilla

Come modificare le autorizzazioni dei file in cPanel

Come modificare le autorizzazioni dei file

Come funziona /proc/*?