Quale è più ampiamente usato: chmod 777 o chmod a + rwx [chiuso]


20

Tra le due opzioni per modificare le autorizzazioni:

  • chmod 777 file.txt
  • chmod a+rwx file.txt

Sto scrivendo un documento con i dettagli che gli utenti devono modificare le autorizzazioni per un determinato file. Voglio dettagliarlo come il modo più comune di modificare i permessi dei file.

Attualmente dice:

- Set permissions on file.txt as per the example below:
    - chmod 777 /tmp/file.txt

Questo è solo un esempio e non cambierà i file per avere le autorizzazioni complete per tutti.


6
la prima soluzione è più corta e ampiamente utilizzata, non ho mai visto la seconda.
Archemar,

2
impostare autorizzazioni di lettura, scrittura ed esecuzione per tutti non è davvero una buona idea in termini di sicurezza. Dovresti usare invece chmod 773.
Martin Erhardt,

1
@MartinErhardt Normalmente userei solo 775o solo 755per file eseguibili.
Kevdog777,

3
chmod 777è come chmod a=rwxno chmod a+rwx.
Stéphane Chazelas,

1
777o 666è semplice e molto più memorabile di ugo+rwx, a+rwxo ugo+rwche è molto confuso in quanto oambiguo e può significare per te o il proprietario o gli altri, che scegli. Quindi, invece di fare il grosso errore, continui a controllare manper verificare quale sia quale, o semplicemente usi i numeri.
Kenorb,

Risposte:


29

Google dà:

chmod 777 è circa 3 volte più popolare.

Detto questo, preferisco usare lunghe opzioni nella documentazione e negli script, perché sono auto-documentati. Se stai seguendo le tue istruzioni con "Esegui ls -l | grep file.txte verifica le autorizzazioni", ti consigliamo di utilizzarlo chmod a+rwxperché è così che verranno visualizzate le autorizzazioni.


Grazie per questo. Immagino che scrivendolo per intero (alfanumerico) impedirà alle persone di chiedere cosa 7significa, ecc.
Kevdog777,

1
Penso che il motivo chmod 777sia più popolare (come evocato prima di vedere i tuoi numeri) è semplicemente che scrivi 2 caratteri in meno :)
Ángel,

Se ti piacciono i suggerimenti nella tua documentazione, puoi aggiungere un suggerimento che chmod 777è una scorciatoia utile per ottenere lo stesso effetto. I tuoi lettori apprezzerebbero l'elemento educativo nella tua documentazione. 777 è più popolare perché è molto più facile e veloce colpire 7 tre volte, ma quando un nuovo utente vede 777 per la prima volta potrebbe non sapere cosa significhi esattamente. Ecco perché è una cattiva scelta come documentazione principale. Ma vale sicuramente la pena menzionarlo come suggerimento.
ADTC,

Come tangente, mio ​​fratello e i suoi amici avrebbero usato questa tecnica per consentire le parole Scrabble. Avevano una certa soglia per il numero di hit di Google prima che una parola fosse considerata "reale"
Wayne Werner,

Penso che sia popolare perché è più vecchio (la notazione simbolica è stata aggiunta in seguito), quindi quando qualcuno lo sceglie, cerca su google o qualunque sia l'equivalente del tempo e va con la folla. Penso che sia più facile usare il simbolico, perché quando ho elaborato i numeri avrei potuto digitare i simboli, anche io tendo a farlo bene la prima volta.
ctrl-alt-delor,

26

[Modifico per aggiungere le migliori pratiche, seguendo il suggerimento di Dotancohen nella sua risposta. Spero che non lo renda meno chiaro e che venga presa la buona abitudine]

Informazioni aggiuntive importanti: non sono equivalenti.

chmod a+rwx: imposta gli ultimi 3 ottali su 777, in modo che il proprietario, il gruppo e gli utenti abbiano impostato "rwx". Se ci sono bit aggiuntivi nel primo ottale (setuid, setgid e / o Sticky bit) li lascia intatti. Pensalo come un binario "o 00777".

chmod 777 : imposta i diritti su 00777, quindi assicurati che Proprietario, Gruppo e Utenti abbiano impostato "rwx", E NIENTE ALTRO. Inoltre, verifica che i bit aggiuntivi (setuid, setgid e / o Sticky bit) siano impostati su 0.

Quindi usa il primo modulo, se vuoi solo assicurarti di concedere l'accesso a tutti (e per favore assicurati che sia doppio, triplo sicuro che sia necessario ... apre la porta a tutti i tipi di problemi di sicurezza, alcuni inaspettatamente ampi in ciò che consentono a un utente malintenzionato di fare)

Usa il modulo 777 se vuoi anche assicurarti di ripristinare qualsiasi bit setuid / setgid / sticky, cioè se i file devono essere "00777", che è probabilmente più probabile nel tuo caso (il diritto del file è noto e dovrebbe essere : 00777). Anche qui, assicurati di triplicare che sia davvero necessario ...

Di solito è meglio mantenere l'accesso al proprietario (e talvolta al gruppo): quindi utilizzare i gruppi per concedere l'accesso ad alcuni utenti specifici al file / directory. a + rwx è sia semplice che di solito è il modo sbagliato di concedere l'accesso (ovviamente ci sono casi molto rari quando è l'unico modo ...)

http://en.wikipedia.org/wiki/Chmod è una buona lettura in quanto spiega cosa rappresenta ogni numero o lettera (incluso setuid / setgid / sticky)


1
Inoltre, chmod a + w (incluso a + rwx) in un file di suid è molto pericoloso. Devo elaborare chmod a + w *?
Giosuè,

Qual è lo scopo nell'impostare l' othersautorizzazione? Se hai effettuato l'accesso alla macchina come utente, sicuramente puoi semplicemente usare l' usersautorizzazione?
Kevdog777,

@ Kevdog777: Altri sono per le persone non il proprietario né nel gruppo, ovvero chiunque altro nel sistema
Olivier Dulac

1
@ Kevdog777: se solo root e l'utente hanno bisogno di accedere: chmod 00600 (se non è necessario eseguire il file) o chmod 00700 (se è necessario eseguire il file -oppure- è una directory). o chmod 00400 per aggiungere una protezione (minuscola, facilmente sostituibile) contro la modifica / scrittura nel file (00500 per una directory). Quindi gli altri (e le persone nel gruppo ma non l'utente) non possono accedere al file / dir. (seguendo la nota dotandcohen, aggiungo la quarta ottale lì dentro + uno "0" prima di essa: non fa differenza per la shell, ma aiuta se si imposta via perl / C / etc e la quarta ottale è una specie di promemoria che esiste , e anche quello è ambientato)
Olivier Dulac il

4
chmod 777è come chmod a=rwx.
Stéphane Chazelas,

1

Di solito penso che la differenza sia che l'impostazione dei permessi su 0777 li imposta esplicitamente su 0777. Come accennato in precedenza, lo 0 iniziale verrà inferito se si digita semplicemente 777. Considerando che un + rwx aggiunge read / write / execute lasciando il setuid / sticky un po 'intatto.

Supponiamo che tu voglia solo essere sicuro che un file sia eseguibile, potresti usare un + x in modo da poter modificare il privilegio di esecuzione senza preoccuparti o modificare le altre autorizzazioni. Se hai utilizzato la rappresentazione ottale, devi sapere quali autorizzazioni sono attualmente impostate per essere sicuri di non modificare le autorizzazioni in altro modo oltre a quello che intendevi.


0

Direi che dare i valori numerici è molto più comune nelle "guide delle persone semplici" come quelle prodotte per gli utenti del web hosting budget. Tuttavia, fai attenzione a specificarli come valori ottali , non decimali:

$ chmod 0777 some_dir

Nota il primo 0posto 0777. Sebbene Bash e altri ambienti CLI facciano la cosa giusta con l'uso del non-padded 777, molti linguaggi di programmazione come PHP e Perl hanno funzioni simili che richiedono il comando 0. Quindi raccomando il suo uso anche in Bash, per ricordare che dovrebbe essere lì.

Nota per i downvoter: come chiarito nei commenti, il chmodcomando in effetti sa passare la direttiva come ottale anche se viene specificata la notazione decimale. Tuttavia, non tutti gli ambienti supportano questa, quindi è meglio pratica per abituarsi a specificare in modo esplicito.


10
chmodnon considera mai il numero come decimale. chmod 777 filee chmod 0777 filesono completamente equivalenti.
Celtschk,

3
@ Kevdog777: "ottale" significa solo base-8. Ma non è necessario preoccuparsene, per quanto riguarda l'uso del chmodcomando shell; puoi solo pensare alle tre cifre come indipendenti l'una dall'altra, ognuna ti dice un set di autorizzazioni.
Celtschk,

3
Per chmod, lo 0 in 0777 significa in realtà "cancella i bit setuid, setgid e sticky". Ciò equivale a 777, poiché l'argomento è sempre riempito con zeri iniziali a quattro cifre. Per lo stesso motivo, chmod 77equivale a chmod 077.
Emil Jeřábek sostiene Monica il

1
Il chmodcomando interpreta il suo argomento mode in ottale. Devi prestare attenzione se stai usando la maggior parte dei linguaggi di programmazione (C, Perl, ...), ma in uno script shell è ottale per chmod.
Gilles 'SO- smetti di essere malvagio' il

1
+1 per la tua nota, poiché è davvero bene anteporre sempre uno 0 (anche se l'impostazione di tutti e 4 gli ottali: 01777 per esempio) in quanto non fa differenza per la shell, ma assicurati che C, perl e altri lo interpretino come ottale
Olivier Dulac,
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.