GNU/Linux >> Linux Esercitazione >  >> Linux

Linux:comprensione delle autorizzazioni e dei tipi di file Unix?

Non ho mai veramente capito come chmod lavorato fino ad oggi. Ho seguito un tutorial che mi ha spiegato un grosso problema.

Ad esempio, ho letto che hai tre diversi gruppi di autorizzazioni:

  • proprietario (u )
  • gruppo (g )
  • tutti (o )

Sulla base di questi tre gruppi, ora so che:

  • Se il file è di proprietà dell'utente, i permessi dell'utente determinano l'accesso.
  • Se il gruppo del file è uguale al gruppo dell'utente, l'autorizzazione del gruppo determina l'accesso.
  • Se l'utente non è il proprietario del file e non è nel gruppo, viene utilizzata l'altra autorizzazione.

Ho anche appreso che hai le seguenti autorizzazioni:

  • leggi (r )
  • scrivi (w )
  • esegui (x )

Ho creato una directory per testare le mie nuove conoscenze acquisite:

mkdir test

Poi ho fatto delle prove:

chmod u+rwx test/
# drwx------
chmod g+rx test/
# drwxr-x---
chmod u-x test/
# drw-r-x---

Dopo aver scherzato per un po', penso di aver finalmente imparato a usare chmod e il modo in cui hai impostato l'autorizzazione utilizzando questo comando.

Ma...

Ho ancora alcune domande:

  • Cosa significa d all'inizio per?
  • Qual ​​è il nome e l'uso dello slot contenitore e quali altri valori può contenere?
  • Come posso impostarlo e annullarlo?
  • Qual ​​è il valore di questo d ? (Dato che hai solo 7=4+2+1 7=4+2+1 7=4+2+1)
  • Perché le persone a volte usano 0777 invece di 777 per impostare le loro autorizzazioni?

Ma poiché non dovrei fare più domande, proverò a farle in una domanda.

Nei sistemi basati su UNIX come tutte le distribuzioni Linux, per quanto riguarda i permessi, cosa fa la prima parte (d ) sta per e a cosa serve questa parte delle autorizzazioni?

Risposta accettata:

Risponderò alle tue domande in tre parti:tipi di file, autorizzazioni e casi d'uso per le varie forme di chmod .

Tipi di file

Il primo carattere in ls -l output rappresenta il tipo di file; d significa che è una directory. Non può essere impostato o disattivato, dipende da come è stato creato il file. Puoi trovare l'elenco completo dei tipi di file nella documentazione ls; quelli che probabilmente incontrerai sono

  • - :file “normale”, creato con qualsiasi programma in grado di scrivere un file
  • b :file speciali di blocco, tipicamente dischi o dispositivi di partizione, possono essere creati con mknod
  • c :file speciale di caratteri, può essere creato anche con mknod (vedi /dev per esempi)
  • d :directory, può essere creata con mkdir
  • l :collegamento simbolico, può essere creato con ln -s
  • p :named pipe, può essere creato con mkfifo
  • s :socket, può essere creato con nc -U
  • D :porta, creata da alcuni processi del server su Solaris/openindiana.

Autorizzazioni

chmod 0777 viene utilizzato per impostare tutti i permessi in un chmod esecuzione, anziché combinare le modifiche con u+ ecc. Ciascuna delle quattro cifre è un valore ottale che rappresenta un insieme di autorizzazioni:

  • suid , sgid e "appiccicoso" (vedi sotto)
  • autorizzazioni utente
  • autorizzazioni di gruppo
  • Autorizzazioni "altre"

Il valore ottale viene calcolato come somma dei permessi:

  • "letto" è 4
  • "scrivi" è 2
  • "esegui" è 1

Per la prima cifra:

  • suid è 4; i binari con questo set di bit vengono eseguiti come utente proprietario (comunemente root )
  • sgid è 2; i file binari con questo set di bit vengono eseguiti come gruppo proprietario (questo è stato utilizzato per i giochi in modo che i punteggi più alti potessero essere condivisi, ma spesso è un rischio per la sicurezza se combinato con le vulnerabilità nei giochi) e i file creati nelle directory con questo set di bit appartengono al gruppo proprietario della directory per impostazione predefinita (questo è utile per creare cartelle condivise)
  • "sticky" (o "eliminazione limitata") è 1; i file nelle directory con questo set di bit possono essere eliminati solo dal loro proprietario, dal proprietario della directory o da root (vedi /tmp per un esempio comune di questo).
Correlati:Linux:la procedura corretta per sostituire MDM con LightDM su Linux Mint?

Vedi il chmod manpage per i dettagli. Nota che in tutto questo sto ignorando altre funzionalità di sicurezza che possono alterare i permessi degli utenti sui file (SELinux, file ACL...).

I bit speciali vengono gestiti in modo diverso a seconda del tipo di file (file normale o directory) e del sistema sottostante. (Questo è menzionato nel chmod manpage.) Sul sistema l'ho usato per testarlo (con coreutils 8.23 su un ext4 filesystem, con kernel Linux 3.16.7-ckt2), il comportamento è il seguente. Per un file, i bit speciali vengono sempre cancellati a meno che non siano impostati esplicitamente, quindi chmod 0777 è equivalente a chmod 777 , ed entrambi i comandi cancellano i bit speciali e danno a tutti i permessi completi sul file. Per una directory, i bit speciali non vengono mai completamente cancellati utilizzando il modulo numerico a quattro cifre, quindi in effetti chmod 0777 è anche equivalente a chmod 777 ma è fuorviante poiché alcuni dei bit speciali rimarranno così come sono. (Una versione precedente di questa risposta ha sbagliato.) Per cancellare i bit speciali sulle directory devi usare u-s , g-s e/o o-t in modo esplicito o specificare un valore numerico negativo, quindi chmod -7000 cancellerà tutti i bit speciali su una directory.

In ls -l output, suid , sgid e "sticky" appaiono al posto di x voce:suid è s o S invece del x dell'utente , sgid è s o S invece del x del gruppo e "sticky" è t o T invece di x di altri . Una lettera minuscola indica che sono impostati sia il bit speciale che il bit eseguibile; una lettera maiuscola indica che è impostato solo il bit speciale.

Le varie forme di chmod

A causa del comportamento sopra descritto, utilizzare le quattro cifre complete in chmod può creare confusione (almeno si scopre che ero confuso). È utile quando vuoi impostare bit speciali e bit di autorizzazione; altrimenti i bit vengono cancellati se stai manipolando un file, conservati se stai manipolando una directory. Quindi chmod 2750 assicura che otterrai almeno sgid ed esattamente u=rwx,g=rx,o=; ma chmod 0750 non cancellerà necessariamente i bit speciali.

Usare le modalità numeriche invece dei comandi di testo ([ugo][=+-][rwxXst] ) è probabilmente più un caso di abitudine e lo scopo del comando. Una volta che sei abituato a utilizzare le modalità numeriche, è spesso più semplice specificare la modalità completa in questo modo; ed è utile poter pensare ai permessi usando le modalità numeriche, dato che molti altri comandi possono usarli (install , mknod …).

Alcune varianti di testo possono tornare utili:se vuoi semplicemente assicurarti che un file possa essere eseguito da chiunque, chmod a+x lo farà, indipendentemente da quali siano le altre autorizzazioni. Allo stesso modo, +X aggiunge il permesso di esecuzione solo se uno dei permessi di esecuzione è già impostato o il file è una directory; questo può essere utile per ripristinare le autorizzazioni a livello globale senza dover utilizzare file di casi speciali rispetto alle directory. Pertanto, chmod -R ug=rX,u+w,o= equivale ad applicare chmod -R 750 a tutte le directory e file eseguibili e chmod -R 640 a tutti gli altri file.


Linux
  1. Nozioni di base sui permessi dei file Linux

  2. Permessi Linux:un'introduzione a chmod

  3. Permessi e salvataggio dei file?

  4. Permessi dei file in Linux con esempio

  5. UNIX / Linux:Guida per principianti alle autorizzazioni di file e directory ( umask, chmod, read, write, execute )

Comprendere i permessi dei file Linux

Comando Chmod in Linux (autorizzazioni file)

Permessi e proprietà dei file Linux spiegati con esempi

Comprendere i permessi dei file Linux

Comando AWK in Linux/Unix

Comprendere le autorizzazioni di base dei file e la proprietà in Linux