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.