C'è qualche differenza tra i valori della modalità 0777 e 777


Risposte:


76

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)


14
Giusto per essere chiari: il valore che passi al chmodcomando viene sempre interpretato come ottale. L'utilizzo chmod 888darà un errore.
— Mattdm,

ma ogni cifra è ottale, non l'intero numero stesso.
— Drake Clarris,

1
Una stringa di cifre ottali è un numero ottale. 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.)
— alexis

Quindi, in un programma C, se vuoi passare 1777, devi scrivere 01777?
— Faheem Mitha,

1
@ Faheem, esatto. Octal 1777è scritto 01777in C. (O potresti scrivere 1023, che è lo stesso numero in decimale. Ma non :-)
— alexis

4

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.


3
La parte adesiva non è la prima, ma la terza. Il primo è il bit di suid e il secondo quello di sgid. Se si impostano le autorizzazioni utilizzando tre cifre, anche la prima cifra mancante influirà (cioè rimuoverà) questi tre bit.
— jlliagre,

Hai ragione. Ergo, la "risposta fornita da alexis sta
— scrivendo

2
@jlliagre Dalla pagina man di chmod - "Si presume che le cifre omesse siano zeri iniziali.". Inoltre, la prima cifra di 4 è il bit appiccicoso. Di nuovo dalla pagina man: "La prima cifra seleziona l'ID utente impostato (4) e imposta l'ID gruppo (2) e la cancellazione limitata o gli attributi appiccicosi (1). La seconda cifra seleziona le autorizzazioni per l'utente che possiede il file: read ( 4), scrivi (2) ed esegui (1); il terzo seleziona le autorizzazioni per altri utenti nel gruppo del file, con gli stessi valori; e il quarto per gli altri utenti non nel gruppo del file, con gli stessi valori. ".
— Faheem Mitha,

1
@FaheemMitha, cifre omesse si presume siano zeri quindi si rimuovere i bit suddetti. Inoltre, sembri confondere bit e cifre, stavo commentando il primo bit, non la prima cifra.
— jlliagre,

1
@jlliagre Ok, abbastanza giusto.
— Faheem Mitha,

1

La risposta interessante è:

  • non vi è alcuna differenza tra 0700e 700, come spiegato nelle altre risposte
  • ma v'è una differenza tra 00700e 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 .


-1

Nel sistema Linux sono disponibili due tipi di autorizzazioni:

  1. Autorizzazione file
  2. Autorizzazione speciale

In Autorizzazione file impostiamo l'autorizzazione per file e cartelle:

Le autorizzazioni sono:

  • leggere (4)
  • write (2)
  • eseguire (1)

Con l'autorizzazione speciale tre tipi di autorizzazione sono:

  • SUID (4)
  • SGID (2)
  • Sticky Bit (1)

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.

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.