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. ( chmodinterpreterà 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)
chmodcomando viene sempre interpretato come ottale. L'utilizzo chmod 888darà un errore.
chmodinterpreta 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 01777in 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 è:
0700e 700, come spiegato nelle altre risposte00700e 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 0777perché c'è no any octal valuequale mostra il valore di (0) zero.