GNU/Linux >> Linux Esercitazione >  >> Linux

Modifica delle autorizzazioni Linux

Questo articolo descrive come modificare le autorizzazioni su un server cloud Linux® utilizzando chmod comando.

Cos'è il comando chmod?

In parole povere, chmod sta per cambia modalità e viene utilizzato per impostare i permessi di file o directory in Linux. Gli utenti root usano chmod per determinare quali utenti, gruppi e altri possono accedere a file o directory.

In genere, usi il chmod comando nei seguenti formati:

$ chmod (options) (permissions) (file name)
$ chmod (permissions) (file name)

L'uso delle opzioni con chmod il comando è facoltativo. Il secondo esempio riceve l'uso più frequente. Senza un'opzione presente, chmod modifica i permessi del file o della directory designati nel comando.

Autorizzazioni

In un sistema Linux, puoi utilizzare le autorizzazioni per fare riferimento al proprietario del file o della directory (utente), del gruppo che possiede il file o della directory (gruppo) o di chiunque altro acceda al file o alla directory (altri).

Indica queste autorizzazioni utilizzando la seguente notazione:

  • caratteri alfanumerici (r, w, x)
  • numeri ottali (0-7)

Ad esempio, hai un file chiamato example.txt e vuoi impostare le seguenti autorizzazioni:

  • L'utente può leggere, scrivere ed eseguire il file.
  • I membri del gruppo possono leggere ed eseguire, ma non scrivere il file.
  • Gli altri possono solo leggere il file.

La seguente opzione di comando imposta le autorizzazioni desiderate per example.txt :

$ chmod u=rwx,g=rx,o=r example.txt

Questa opzione utilizza caratteri alfanumerici per indicare gli utenti che possono accedere al file e le autorizzazioni che desideri impostare per questi utenti designati.

  • La lettera 'u' =utente
  • La lettera 'g' =gruppo
  • La lettera 'o' =altro
  • La lettera 'r' =letta
  • La lettera 'w' =scrivi
  • La lettera 'x' =esegui

L'esempio seguente mostra come Linux rappresenta le autorizzazioni concesse nell'esempio precedente:

-rwxr-xr--

Le prime tre lettere (rwx) sono i permessi dell'utente. I secondi tre (r-x) rappresentano i permessi del gruppo e gli ultimi tre (r–) rappresentano i permessi degli altri.

Successivamente, abbiamo l'opzione ottale per il nostro example.txt esercizio:

$ chmod 754 example.txt

In questo esempio, i numeri 7, 5 e 4 rappresentano ciascuno l'utente, il gruppo e altri permessi. La prima posizione del numero determina i permessi dell'utente, il secondo numero determina i permessi del gruppo e il terzo numero assegna i permessi per gli altri.

Questi numeri non sono selezionati casualmente. Sommando i numeri 4, 2, 1 e 0 si determinano le autorizzazioni. I numeri hanno le seguenti assegnazioni:

  • 4 sta per 'leggi'
  • 2 sta per 'scrivere'
  • 1 sta per 'esegui'
  • 0 sta per "nessuno"

Pertanto, nel nostro esempio precedente, il 7 è determinato dalla combinazione di lettura (4), scrittura (2) ed esecuzione (1):4 + 2 + 1 =7. Il 5 è preso dalla somma di lettura (4), none (0) ed eseguire (1):4 + 0 + 1 =5. Infine, il 4 è una combinazione di read (4), none (0) e none (0):4 + 0 + 0 =4 .

Opzioni

In genere non è necessario utilizzare le opzioni in chmod comando, ma nel caso, puoi usare le seguenti opzioni con chmod :

  • -c , --changes :Fornisce un output dettagliato per le modifiche apportate
  • -f , --silent , --silent :silenzia la maggior parte dei messaggi di errore
  • -v , --verbose :restituisce un messaggio dettagliato per ogni azione elaborata
  • --no-preserve-root :Ignora la deferenza normalmente data per impostazione predefinita alla directory / (root)
  • --preserve-root :non opera in modo ricorsivo nella directory / (root)
  • --reference=RFILE :imposta le autorizzazioni in modo che corrispondano a quelle di RFILE, ignorando qualsiasi MODE specifica
  • -R , --recursive :le modifiche apportate a file o directory vengono applicate in modo ricorsivo
  • --help :Visualizza il messaggio di aiuto, quindi esce
  • --version :Visualizza le informazioni sulla versione, quindi esce

Extra

Oltre ai permessi già discussi, il chmod comando può impostare altre tre autorizzazioni speciali in Linux.

  • SUID (Imposta ID utente)
  • SGID (Imposta ID gruppo)
  • Punto appiccicoso

SUID

Un s nel rwx dell'utente set di autorizzazioni, sostituendo la x , rappresenta questa autorizzazione, come mostrato nell'esempio seguente:

$ chmod 4755 /usr/bin/passwd
$ ls -lh /usr/bin/passwd
-rwsr-xr-x.  1  root  root  28K  Mar  10  2020  /usr/bin/passwd

Le prime tre lettere in rwsr-xr-x rappresentano i permessi dell'utente. Nota che invece di una x c'è una s nei tre slot di autorizzazione dell'utente. Invece di mostrare x per eseguire, c'è un s nel punto di esecuzione. Perché?

Nota: Il 4 davanti al solito set di autorizzazioni ottali rappresenta questa autorizzazione. Quindi invece di 755 , l'autorizzazione è scritta come 4755 .

Dovresti usare questa opzione con cautela perché questa particolare autorizzazione consente a un utente di eseguire un programma binario come se fosse il proprietario di quel programma anche se non lo è. L'esempio più noto di questo è il passwd comando.

Nel caso di passwd , l'utente è in grado di eseguire il programma anche se il programma binario è di proprietà di root. Tuttavia, poiché passwd è impostato come SUID per impostazione predefinita, viene sempre eseguito come utente root.

Se un utente normale ha i permessi SUID su altri programmi binari, potrebbe eseguire comandi come root senza avere root permessi. Consente un'escalation anormale dei privilegi che di solito richiedono sudo privilegi di accesso.

I permessi SUID possono effettuare una precauzione incorporata nel sistema operativo Linux sotto forma di soli binari. Non influisce sugli script.

SGID

Un s nel rwx del gruppo set di autorizzazioni, sostituendo la x in t r-x segmento, rappresenta l'autorizzazione SGID, come mostrato nell'esempio seguente:

$ chmod 2755 /usr/bin/screen
$ ls -lh /usr/bin/screen
-rwxr-sr-x.  1  root  screen  465K  Feb  10  2020  /usr/bin/screen

Questo s è nel secondo gruppo di tre autorizzazioni, che abbiamo scoperto essere le autorizzazioni del gruppo in precedenza quando scritte in stile alfanumerico. Nel rendering ottale, un 2 davanti agli altri tre numeri di autorizzazione ottali denota questa autorizzazione. Invece di 755 , scrivilo come 2755 .

Come SUID, le autorizzazioni SGID funzionano solo sui binari. Non funzionano sugli script. Per quanto riguarda ciò che fa SGID, consente ai membri del gruppo senza privilegi di eseguire un file binario come se fossero l'utente root.

In genere, puoi utilizzare questa autorizzazione sulle directory in cui i membri del gruppo devono avere accesso all'interno della directory condivisa dal gruppo. Tutti i file creati in questa directory hanno lo stesso proprietario del gruppo, indipendentemente dal membro del gruppo che ha creato il file.

Punto appiccicoso

Un t nel rwx degli altri set di autorizzazioni, sostituendo la x , rappresenta questa autorizzazione, come mostrato nell'esempio seguente:

$ chmod 1777 /tmp
$ ls -lhd /tmp
drwxrwxrwt.  8  root  root  4.0K  Nov  6  14:42  /tmp

Nota il t nell'ultima serie di tre lettere. L'equivalente ottale di t è un 1 davanti ai tre ottali di permesso. Invece di 777 , scrivilo come 1777 .

Cosa fa questo bit appiccicoso? In genere, utilizzi questa autorizzazione su un tmp directory e la sua funzione è impedire agli utenti di eliminare i file di proprietà di altri utenti. Di solito, se un gruppo ha accesso in scrittura a una directory, qualsiasi utente all'interno di quel gruppo può eliminare qualsiasi file all'interno di quella directory. Il permesso del bit appiccicoso lo ferma. Solo il creatore del file può eliminarlo.

Come best practice, dovresti impostare l'autorizzazione sticky bit su qualsiasi directory la cui altra autorizzazione è ottale 7 (lettura, scrittura, esecuzione). Nel nostro 754 ad esempio, vuoi usare l'autorizzazione sticky bit se gli ottali sono 757 dove 7 è il terzo ottale (che rappresenta il permesso degli altri).

Cheat sheet per le autorizzazioni per file e directory

Di seguito è riportato un rapido cheat sheet che spiega ogni parte dell'output di esempio:

-rwxrw-r--  rack  space  123G  Feb  03  15:36  example.txt
  • - :Il - all'inizio ti dice che questo è un file. Un d all'inizio indica una directory.
  • rwx :le prime tre lettere rappresentano i permessi del proprietario del file e significano che il proprietario può leggere, scrivere ed eseguire il file example.txt.
  • rw- :le seconde tre lettere rappresentano i permessi del gruppo e significano che i membri del gruppo possono leggere e scrivere sul file, ma non possono eseguirlo.
  • r-- :le terze tre lettere rappresentano i permessi degli altri e significano che chiunque non sia il proprietario o nel gruppo che possiede il file può solo leggere il file. Non possono scrivere sul file o eseguire il file.
  • rack :il proprietario del file.
  • space :il proprietario del gruppo.
  • 123G :La dimensione del file in gigabyte. Un M indicherebbe megabyte e un K indicherebbe kilobyte.
  • Feb 03 15:36 :Indica la data e l'ora dell'ultima modifica del file.
  • example.txt :Il nome del file. Se lo elenchi come '/example', è il nome della directory.

Linux
  1. Autorizzazioni Linux 101

  2. Cos'è Umask in Linux

  3. Nozioni di base sui permessi dei file Linux

  4. Permessi Linux:un'introduzione a chmod

  5. Linux:modificare le autorizzazioni delle cartelle?

Come modificare ricorsivamente le autorizzazioni dei file in Linux

Come modificare le autorizzazioni in Linux

Comando Chmod in Linux

Comando Chmod:come modificare le autorizzazioni dei file in Linux

Impara l'uso del comando chmod (Cambia modalità) in Linux

Esempi di comandi chmod di Linux