Perché usare `chmod 644` invece di` chmod u = rw, go = r, ... `?


38

Sto lavorando su * nix da alcuni anni, e una delle cose a cui non riesco ad abituarmi sono le autorizzazioni ottali nel codice. C'è qualche altro motivo che la lunghezza della linea a preferire chmod 644 ...sopra chmod u=rw,go=r ...?

PS: Non sto cercando una spiegazione delle autorizzazioni ottali. So come funzionano ed è ben spiegato nel manuale. Sto chiedendo perché l'ottale sembra essere preferito rispetto alla forma più leggibile dall'uomo.

Risposte:


40

L'uso dei codici ottali ha due vantaggi che mi vengono in mente, nessuno dei quali è così grande:

  1. Sono più brevi, più facili da digitare.
  2. Alcune cose li comprendono solo e se li usi abitualmente non ti gratterai la testa (o corri alla documentazione) quando ti imbatti in uno. Ad esempio, devi usare ottale per chmodin Perl o C.

A volte le utility davvero semplici non gestiscono le versioni "amichevoli"; specialmente nelle aree utente non GNU.

Inoltre, alcune utility sputano ottale. Ad esempio, se corri umaskper vedere qual è la tua umask attuale, la sputerà in ottale (anche se in bash, umask -Sfa simbolico).

Quindi, in breve, direi che l'unico motivo per preferirli è digitare meno caratteri, ma che anche se decidi di non usarli, dovresti sapere come mappano in modo da poter capire un codice ottale se corri in una delle cose che fa solo ottale. Ma non hai bisogno di sapere immediatamente che 5 mappe rx, devi solo essere in grado di capirlo.


1
Dire che chmodin Perl o C ha bisogno di usare la rappresentazione ottale non è davvero un vantaggio visto che la rappresentazione esisteva già in primo luogo.
n0pe

@MaxMackie: è un vantaggio per te usarli. Chiarirò.
derobert,

18

Suppongo che sto usando l'ottale da troppo tempo.

7 è rwx (fare qualsiasi cosa con esso), 5 è rx (devo leggerlo per eseguirlo), 6 è wr (qualsiasi file di dati che è necessario modificare), 4 è r (ti faremo guardare), e 0 è - (scusa, niente qui da vedere). E l'ordine siamo io, noi, tutti. Queste sono le combinazioni di base.

755 Posso cambiarlo ed eseguirlo, tutti gli altri possono eseguirlo.

644 Posso cambiarlo, tutti gli altri possono leggerlo.

444 Sola lettura per tutti, siamo qui.

500 Posso eseguirlo, non voglio che cambi, tutti gli altri si staccano.

Per me, è breve, al punto. 9 caratteri e una specifica di file e andare avanti.


Bene, ottale (base-8), non esadecimale (base-16).
derobert,

Sì, quello, il mezzo esagono. <grin>
Fiasco Labs

Lo stesso qui, trovo l'ottale più facile da leggere rispetto alla versione testuale ...
Brian Knoblauch

13

Non mi è mai piaciuta molto la rappresentazione ottale, ho sempre cercato la rwxr-xr-xnotazione diretta in quanto mi sembra più semplice. Tuttavia, da quello che raccolgo esiste una rappresentazione ottale per rendere effettivamente più facile per noi ricordare (non vedo come funziona).

L'unico altro vantaggio possibile che vedo portare in tavola è la mancanza di ambiguità. Le 8 diverse configurazioni di bit di autorizzazione sono rappresentate da un singolo numero distinto, che sono sicuro che alcune persone possono mettere accidentalmente wdove non dovrebbero avere.

Sfortunatamente, ho memorizzato questa tabella:

#  r  w  x
0  0  0  0
1  0  0  1
2  0  1  0
3  0  1  1
4  1  0  0
5  1  0  1
6  1  1  0
7  1  1  1

8
L'ho imparato usando binario per ogni set di 3. quindi rw ------- sarebbe (110) (000) (000), che è (6) (0) (0). rwxr-xr-x sarebbe (111) (101) (101), quindi (7) (5) (5).
Rob,

4
Il motivo principale per cui esiste la rappresentazione ottale è perché è così che è stato programmato il sistema di autorizzazione Unix originale, da C. 4 cifre ottali (ricordate quelle speciali, come 1777 per /tmp, incluso il bit appiccicoso) prende 12 bit, una dimensione conveniente su PDP, in particolare il PDP-8. Se fossero andati con hex, una mappatura naturale di un set di autorizzazioni per cifra esadecimale avrebbe richiesto una macchina a 16 bit + word, cosa che non tutti i PDP erano. Avrebbe anche sprecato 3 bit o richiesto di inventare un uso per quei bit, che probabilmente avrebbe complicato i permessi Unix senza alcun vantaggio reale.
Warren Young,

⁺¹ va su @Rob tra l'altro. Infatti, dopo che calcolare un numero reale dalla rappresentazione binaria è una combinatoria di base, e non è nemmeno necessario ricordare di avere "ottale" perché il numero massimo (cioè 111b) non supererà 7.
Hi-Angel

Questa tabella lo rende molto chiaro. È fantastico!!!
Little Roys,

6

Penso che la ragione sia di nuovo: la storia. Inizialmente i valori ottali erano gli unici. Quelli simbolici sono arrivati ​​dopo.

Preferisco quelli simbolici. Soprattutto se si desidera modificare i valori esistenti senza toccare altre porzioni.

Come chmod -R u=rwx,g-w+X,o=-farlo in ottale ...


3

Si noti che le modalità ottali possono rimuovere bit setuid e setgid su alcuni sistemi.

Fedora 16:

$ mkdir dir
$ chmod 2775 dir
$ stat -c %a dir
2775
$ chmod 770 dir
$ stat -c %a dir
2770

(il 2è conservato)

FreeBSD 9:

$ mkdir dir
$ chmod 2775 dir
$ stat -f %Mp%Lp dir
2775
$ chmod 770 dir
$ stat -f %Mp%Lp dir
0770

(il 2divenne a 0)

Se si desidera modificare le autorizzazioni di un file o di una directory, può essere meglio specificare semplicemente i bit che si desidera modificare (ad es. chmod o= dirO chmod o-rwx dirnell'esempio sopra).


2

La storia spiega perché esistono le modalità ottali , ma penso che la funzionalità sia la ragione per cui esiste la forma mnemonica. E tutti i punti su altri strumenti che utilizzano modalità esclusivamente ottale sono perfettamente validi e penso che devi imparare e conoscere. Tuttavia, trovo che gli amministratori conservatori non vedano la vera utilità derivante dalla forma mnemonica.

La forma ottale, specialmente se usata in modo ricorsivo, tende a costringere gli amministratori a fare cose stupide. O meglio, la negligenza aggiunta si traduce in una stupidità. Ogni volta che ti imbatti in qualche cartella con molti file di testo e il xbit impostato, hai la prova.

Perché qualcuno dovrebbe impostare un xpo 'così? Perché è difficile non farlo a meno che non si usi la forma mnemonica per le modalità. Considera di voler ripristinare le autorizzazioni /var/wwwe di non eseguire CGI vecchio stile, quindi il xbit deve essere rimosso. Tuttavia, il xbit ha un altro scopo nelle directory. Quindi finisci per fare qualcosa (come root) come:

chmod -R 666 /var/www
find /var/www -type d -exec chmod 777 {} \;

Se, tuttavia, stessi usando la forma mnemonica, potresti dargli una "ricetta":

chmod -R a=rwX /var/www

che è la forma abbreviata di chmod -R ugo=rwX /var/www(raggiungere lo stesso, ma percorso diverso:) chmod -R a-x,a+rwX /var/www.

Ma c'è un'altra cosa più banale che non può essere raggiunta con le modalità ottali. Non è possibile regolare la usero groupo othermascherare singolarmente con la forma ottale.

In breve: è come confrontare un bisturi (mnemonico) e un coltello da cucina affilato (ottale) ... ma devi ancora conoscere i bit della modalità ottale per altri motivi :)

Il motivo per cui le modalità ottali sono ancora preferite , penso, non è più la tipizzazione coinvolta nella forma mnemonica, ma amministratori eccessivamente conservatori. E sì, chiamata del 2013, quegli amministratori eccessivamente conservatori esistono ancora e sono qui per rimanere per un po 'di tempo.


0

Quando devi modificare le autorizzazioni dei file in ogni momento , apprezzi i 3 caratteri. Molte volte utilizzo le versioni +o -per modificare le autorizzazioni.

Ad esempio, creo un nuovo PHP, Python o altri script nella mia cartella apache. chmod a+xè tutto ciò che faccio in modo che possa essere eseguito. L'ho letto come "all plus execute". Ora so che funzionerà e avevo solo bisogno di 3 personaggi.

Altre volte uso automaticamente 644 e 755. Ci penso solo come 644file, 755significa script.


0

Si adatta perfettamente alle impostazioni di umask, che di solito sono riportate in caratteri ottali (in pamo fstab).


0

Suggerisco che un motivo importante sia che la rappresentazione ottale corrisponde esattamente a ciò che vedi ls -l(o, piuttosto, lo fa quando ti converti mentalmente tra ottale e binario).

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.