Come vengono applicate le autorizzazioni ai file appena creati?


12

Ho una directory con le seguenti autorizzazioni impostate:

drwxr-s---. user group folder

Sul desktop, accedo a questa cartella e faccio clic con il pulsante destro del mouse per creare una nuova chiamata al file foo.txt. Quindi usando il terminale, ho creato un altro file usando il comando $ touch bar.txt.

Quando controllo le autorizzazioni per questi file, ho:

-rw-r--r--. user group foo.txt
-rw-rw-r--. user group bar.txt

Mi aspettavo -rw-r-----. user group. Come è nata l'autorizzazione di scrittura extra per il gruppo e l'autorizzazione di lettura per gli altri?

Risposte:


16

setguid

Ci sono 2 forze qui al lavoro. Il primo è il bit setgid che è abilitato per la cartella, folder.

drwxr-s---. user group folder

Questo è il spacchetto di personaggi all'inizio di questa riga. Sono così raggruppati:

d - directory
rwx - read/write/execute bits for user
r-s - read/execute/setuid bits for group
--- - nothing for other users

I r-smezzi che i file o le directory creati all'interno di questa cartella verrà assegnato al gruppo impostato automaticamente al gruppo group.

Questo è ciò che ha causato i file foo.txte bar.txtcreato in questo modo:

-rw-r--r--. user group foo.txt
-rw-rw-r--. user group bar.txt

permessi e umask

Le autorizzazioni che stai vedendo sono un'altra questione. Questi sono regolati dalle impostazioni per il tuo umask. Puoi vedere a cosa sei umaskimpostato con il comando umask:

$ umask
0002

NOTA: questi bit sono anche chiamati bit "mode".

È una maschera, quindi disabiliterà tutti i bit relativi alle autorizzazioni abilitate. In questo esempio l'unico bit che desidero è le autorizzazioni di scrittura per gli altri.

0 - skipping for this conversation
0 - value of user bits
0 - value of group bits
2 - value of other bits

La rappresentazione dei "bit" in questo comando è in forma decimale. Quindi un 2 equivale a 010 in forma binaria, che è il bit di scrittura. Un 4 (100) significherebbe che si desidera disabilitare la lettura. Un 7 (111) significa che vuoi leggere / scrivere / eseguire tutto disabilitato. Costruendolo da qui:

$ umask 007

Disabiliterebbe i bit di lettura / scrittura / esecuzione per altri utenti.

E allora i tuoi file?

Bene umaskgoverna le autorizzazioni che verranno impostate quando viene creato un nuovo file. Quindi se avessimo il seguente umaskset:

$ umask 007

E abbiamo iniziato a toccare nuovi file, li vedremmo creati così:

$ touch newfile1.txt newfile2.txt
$ ls -l |grep newfile
-rw-rw----   1 saml saml        0 Nov  3 22:34 newfile1.txt
-rw-rw----   1 saml saml        0 Nov  3 22:34 newfile2.txt

Se l'abbiamo cambiato in qualcos'altro, dì questo:

$ umask 037
$ ls -l |grep newfile
-rw-rw----   1 saml saml        0 Nov  3 22:36 newfile1.txt
-rw-rw----   1 saml saml        0 Nov  3 22:36 newfile2.txt
-rw-r-----   1 saml saml        0 Nov  3 22:35 newfile3.txt
-rw-r-----   1 saml saml        0 Nov  3 22:35 newfile4.txt

Tuttavia, non avrà alcun impatto sui file che abbiamo già creato. Vedere qui:

$ umask
0037
$ touch newfile1.txt newfile2.txt
$ ls -l | grep newfile
-rw-rw----   1 saml saml        0 Nov  3 22:37 newfile1.txt
-rw-rw----   1 saml saml        0 Nov  3 22:37 newfile2.txt
-rw-r-----   1 saml saml        0 Nov  3 22:35 newfile3.txt
-rw-r-----   1 saml saml        0 Nov  3 22:35 newfile4.txt

Allora cosa sta succedendo con il browser dei file?

Il umaskè quello che io avevo chiamato un ambiente "soft". Non è assolutamente assoluto e può essere bypassato abbastanza facilmente in Unix in diversi modi. Molti degli strumenti utilizzano switch che consentono di specificare le autorizzazioni come parte del loro funzionamento.

Prendi mkdirad esempio:

$ umask
0037

$ mkdir -m 777 somedir1
$

$ ls -ld somedir1
drwxrwxrwx 2 saml saml 4096 Nov  3 22:44 somedir1

Con l' -minterruttore possiamo ignorare umask. Il touchcomando non ha questa funzione, quindi devi essere creativo. Vedi le domande e risposte U&L intitolate: È possibile creare file con autorizzazioni impostate nella riga di comando? proprio per tali metodi.

Altri modi? Sostituisci umask. Molto probabilmente il browser dei file sta eseguendo questa operazione o semplicemente ignorando completamente umaske stabilendo il file utilizzando qualsiasi autorizzazione sia configurata per fare come.


Ho pensato che umask avrebbe dovuto rimuovere i privilegi, non aggiungere. Oppure mi sfugge qualcosa?
Domanda Overflow

@QuestionOverflow: la maschera controlla quali autorizzazioni sono consentite quando vengono creati file e directory. Da qui il suo nome. Impedisce ai bit di essere utilizzati durante il processo di creazione.
slm

La mia umask legge 0002. Se umask imposta le autorizzazioni invece di rimuovere le autorizzazioni, il bit di esecuzione verrebbe impostato sia per l'utente che per il gruppo quando lo faccio touch, ma non lo è.
Domanda Overflow

@QuestionOverflow: questa è una limitazione del touchcomando. Vedi il link che ho incluso nel mio A. Questo link: unix.stackexchange.com/questions/47178/…
slm

Solo per chiarire alcuni punti in base ai commenti: 1) le autorizzazioni per il nuovo file sono sempre determinate da umask + il programma utilizzato per creare il file, 2) le autorizzazioni non vengono mai ereditate dalla directory principale.
Domanda Overflow
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.