GNU/Linux >> Linux Esercitazione >  >> Linux

Autorizzazioni Linux:SUID, SGID e sticky bit

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 è 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.


Linux
  1. Autorizzazioni Linux 101

  2. Che cos'è Sticky Bit, SUID e SGID in Linux

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

  4. Che cos'è SUID, SGID e Sticky bit?

  5. Domande per interviste su Linux – Permessi speciali (SUID, SGID e sticky bit)

Una guida per principianti ai permessi di Linux

Permessi e proprietà dei file Linux spiegati con esempi

Permessi speciali per i file in Linux:SUID, GUID e Sticky Bit

Permessi della directory Linux di base e come controllarli

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

Esegui rispetto al bit di lettura. Come funzionano i permessi di directory in Linux?