I permessi di Linux sono un concetto con cui ogni utente acquisisce una profonda familiarità all'inizio del suo sviluppo. Abbiamo bisogno di eseguire script, modificare file ed eseguire processi per amministrare i sistemi in modo efficace, ma cosa succede quando vediamo Autorizzazione negata ? Sai perché vediamo questo messaggio? Se conosci la causa del problema, sai come implementare la soluzione?
Darò una rapida spiegazione dei vari modi per calcolare i permessi, quindi ci concentreremo sui permessi speciali all'interno di Linux. Se vuoi dare un'occhiata in profondità a chmod
comando, dai un'occhiata a questo articolo di Sudoer Shashank Hegde, autorizzazioni Linux:un'introduzione a chmod.
Il TL;DR è che ci sono due modi principali per assegnare i permessi.
Metodo simbolico
Il metodo simbolico utilizza la seguente sintassi:
[tcarrigan@server ~]$ chmod WhoWhatWhich file | directory
Dove:
- Chi - rappresenta le identità:u,g,o,a (utente, gruppo, altro, tutto)
- Cosa - rappresenta le azioni:+, -, =(aggiungi, rimuovi, imposta esatta)
- Quale - rappresenta i livelli di accesso:r, w, x (lettura, scrittura, esecuzione)
Un esempio è se voglio aggiungere il leggi e scrivi autorizzazioni per un file denominato test.txt per utente e gruppo , utilizzo il seguente comando:
[tcarrigan@server ~]$ chmod ug+rw test.txt
Divulgazione completa, questo non è il mio metodo preferito per assegnare le autorizzazioni e, se desideri maggiori informazioni su questo metodo, ti consiglio il motore di ricerca più vicino.
Metodo numerico
Il metodo numerico è, nella mia esperienza, il modo migliore per imparare e fare pratica con i permessi. Si basa sulla seguente sintassi:
[tcarrigan@server ~]$ chmod ### file | directory
Qui, da sinistra a destra, il carattere # rappresenta un livello di accesso. Sono disponibili tre livelli di accesso:utente, gruppo e altri. Per determinare qual è ogni cifra, utilizziamo quanto segue:
- Inizia da 0
- Se il letto è necessario impostare l'autorizzazione, aggiungere 4
- Se il scrivi è necessario impostare l'autorizzazione, aggiungere 2
- Se esegui è necessario impostare l'autorizzazione, aggiungere 1
Questo è calcolato in base al livello di accesso. Interpretiamo questo esempio di autorizzazioni:
-rw-r-x---
Le autorizzazioni sono rappresentate come 650 . Come sono arrivato a quei numeri?
- Le autorizzazioni dell'utente sono:rw- o 4+2=6
- Le autorizzazioni del gruppo sono:r-x o 4+1=5
- Le altre autorizzazioni sono:--- o 0
Per inserirlo nella sintassi del comando, appare così:
[tcarrigan@server ~]$ chmod 650 test.txt
Ora che hai compreso le basi del calcolo dei permessi in Linux, diamo un'occhiata alle autorizzazioni speciali incluso nel sistema operativo.
[ Potrebbe piacerti anche: Un'introduzione agli elenchi di controllo di accesso (ACL) di Linux]
Spiegazione del permesso speciale
Permessi speciali costituiscono un quarto livello di accesso oltre a utente , gruppo e altro . Permessi speciali consentono privilegi aggiuntivi rispetto ai set di autorizzazioni standard (come suggerisce il nome). C'è un'opzione di autorizzazione speciale per ogni livello di accesso discusso in precedenza. Diamo un'occhiata a ciascuno individualmente, a cominciare da Set UID:
utente + s (speciale)
Comunemente indicato come SUID , l'autorizzazione speciale per il livello di accesso utente ha un'unica funzione:un file con SUID viene sempre eseguito come l'utente proprietario del file, indipendentemente dall'utente che ha passato il comando. Se il proprietario del file non dispone delle autorizzazioni di esecuzione, utilizza una S maiuscola qui.
Ora, per vedere questo in una luce pratica, diamo un'occhiata a /usr/bin/passwd
comando. Questo comando, per impostazione predefinita, ha l'autorizzazione SUID impostata:
[tcarrigan@server ~]$ ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 33544 Dec 13 2019 /usr/bin/passwd
Nota le s dove x di solito indica le autorizzazioni di esecuzione per l'utente.
gruppo + s (speciale)
Comunemente indicato come SGID , questa autorizzazione speciale ha un paio di funzioni:
- Se impostato su un file, consente di eseguire il file come gruppo che possiede il file (simile a SUID)
- Se impostato su una directory, tutti i file creati nella directory avranno il loro gruppo proprietà impostata su quella del proprietario della directory
[tcarrigan@server article_submissions]$ ls -l
total 0
drwxrws---. 2 tcarrigan tcarrigan 69 Apr 7 11:31 my_articles
Questo set di autorizzazioni è indicato da una s minuscola dove la x normalmente indicherebbe esegui privilegi per il gruppo . È anche particolarmente utile per le directory che vengono spesso utilizzate negli sforzi di collaborazione tra i membri di un gruppo. Qualsiasi membro del gruppo può accedere a qualsiasi nuovo file. Questo vale anche per l'esecuzione di file. SGID è molto potente se utilizzato correttamente.
Come indicato in precedenza per SUID , se il gruppo proprietario non dispone delle autorizzazioni di esecuzione, una S maiuscola viene utilizzato.
altro + t (appiccicoso)
L'ultimo permesso speciale è stato soprannominato il "bit appiccicoso". Questa autorizzazione non ha effetto sui singoli file. Tuttavia, a livello di directory, limita l'eliminazione dei file. Solo il proprietario (e root ) di un file può rimuovere il file all'interno di quella directory. Un esempio comune è il /tmp
directory:
[tcarrigan@server article_submissions]$ ls -ld /tmp/
drwxrwxrwt. 15 root root 4096 Sep 22 15:28 /tmp/
Il set di autorizzazioni è indicato dalla t minuscola , dove la x normalmente indicherebbe il privilegio di esecuzione.
Impostazione di autorizzazioni speciali
Per impostare autorizzazioni speciali su un file o una directory, puoi utilizzare uno dei due metodi descritti sopra per le autorizzazioni standard:simbolico o numerico.
Supponiamo di voler impostare SGID nella directory community_content
.
Per fare ciò utilizzando il metodo simbolico, procediamo come segue:
[tcarrigan@server article_submissions]$ chmod g+s community_content/
Usando il metodo numerico, dobbiamo passare una quarta cifra precedente nel nostro chmod
comando. La cifra utilizzata viene calcolata in modo simile alle cifre di autorizzazione standard:
- Inizia da 0
- SUID =4
- SGID =2
- Appiccicoso =1
La sintassi è:
[tcarrigan@server ~]$ chmod X### file | directory
Dove X è la cifra delle autorizzazioni speciali.
Ecco il comando per impostare SGID su community_content
utilizzando il metodo numerico:
[tcarrigan@server article_submissions]$ chmod 2770 community_content/
[tcarrigan@server article_submissions]$ ls -ld community_content/
drwxrws---. 2 tcarrigan tcarrigan 113 Apr 7 11:32 community_content/
[ Download gratuito:cheat sheet dei comandi avanzati di Linux. ]
Riepilogo
In conclusione, le autorizzazioni sono di fondamentale importanza per essere un amministratore Linux efficace. Ci sono due modi definiti per impostare i permessi usando chmod
comando:simbolico e numerico. Abbiamo esaminato la sintassi e i calcoli richiesti per entrambi i metodi. Abbiamo anche considerato le autorizzazioni speciali e il loro ruolo nel sistema. Ora che hai compreso le autorizzazioni e i concetti sottostanti, puoi risolvere il fastidioso Autorizzazione negata errore quando tenta di ostacolare il tuo lavoro.