Ho visto una modifica del codice al lavoro, in cui i valori della modalità sono stati cambiati da 777 a 0777 per far funzionare nfs setattr. Qual è la differenza tra i 2 valori?
mkdir()
. 0777 vs 777
Ho visto una modifica del codice al lavoro, in cui i valori della modalità sono stati cambiati da 777 a 0777 per far funzionare nfs setattr. Qual è la differenza tra i 2 valori?
mkdir()
. 0777 vs 777
Risposte:
Se li stai passando a chmod
(il programma da riga di comando), non c'è differenza. Ma in un programma C o simile, 0777
è ottale (tre serie di tre 1 bit, che è quello che intendi), mentre 777
è decimale, ed è un modello di bit piuttosto diverso. ( chmod
interpreterà qualsiasi argomento numerico come ottale, quindi non è necessario lo zero iniziale).
0777 (ottale) == binario 0b 111 111 111
== autorizzazioni rwxrwxrwx
(== decimale 511
)
777 (decimale) == binario 0b 1 100 001 001
== autorizzazioni sr----x--x
(== ottale 1411
)
chmod
comando viene sempre interpretato come ottale. L'utilizzo chmod 888
darà un errore.
chmod
interpreta un argomento numerico come ottale, indipendentemente dal prefisso. (Ma in realtà il numero stesso non ha alcuna funzione; solo le cifre, o piuttosto i bit.)
1777
, devi scrivere 01777
?
1777
è scritto 01777
in C. (O potresti scrivere 1023
, che è lo stesso numero in decimale. Ma non :-)
Il primo bit viene utilizzato per il bit appiccicoso http://en.wikipedia.org/wiki/Sticky_bit
Se si imposta l'autorizzazione utilizzando 4 cifre, la prima imposterà o rimuoverà questo bit.
La risposta interessante è:
0700
e 700
, come spiegato nelle altre risposte00700
e 0700
(per le directory)Almeno questo è il caso della versione chmod di GNU coreutils, che è l'impostazione predefinita su Linux.
Vedi questo esempio:
$ ls -ld mydir
drws--s--- 4 myuser mygroup 4096 Jul 8 09:27 mydir
$ chmod 0710 mydir ; ls -ld mydir # surprise ahead -- s-bits remain:
drws--s--- 4 myuser mygroup 4096 Jul 8 09:27 mydir
$ chmod 00710 mydir ; ls -ld mydir # _now_ they're gone:
drwx--x--- 4 myuser mygroup 4096 Jul 8 09:27 mydir
Questo per evitare la cancellazione accidentale di bit setuid / setgid per le directory. Per i dettagli, consultare la documentazione di chmod .
Nel sistema Linux sono disponibili due tipi di autorizzazioni:
In Autorizzazione file impostiamo l'autorizzazione per file e cartelle:
Le autorizzazioni sono:
Con l'autorizzazione speciale tre tipi di autorizzazione sono:
Nella tua domanda chiedi qual è la differenza, quindi non c'è alcuna differenza tra chmod 777 and 0777
perché c'è no any octal value
quale mostra il valore di (0) zero.