Gestisci le autorizzazioni di directory e file con chmod ricorsivo

Sei stanco di dover cambiare manualmente i permessi dei file e delle directory? Stai cercando un modo più rapido ed efficiente per modificare i permessi dei tuoi file e delle tue directory? In tal caso, sei nel posto giusto perché, in questo articolo, imparerai come cambiare i permessi dei file e delle directory utilizzando il comando chmod in modo ricorsivo!

Continua a leggere per saperne di più!

Prerequisiti

Per seguire questa procedura, è necessario un dispositivo Linux e una directory i cui file e sottodirectory abbiano i permessi disponibili per esercitarsi.

Informazioni sugli Utenti e Gruppi Linux

I proprietari e i gruppi sono importanti in Linux, necessari per gestire in modo sicuro file e directory. Il proprietario è colui a cui è assegnato un file o una directory, di default è il creatore. In Linux, file e directory appartengono anche a dei gruppi. Sia gli utenti che i gruppi vengono impostati tramite il comando chown.

Nella schermata sottostante, il contenuto evidenziato in verde mostra l’utente che possiede il file o la directory, mihail in questo esempio. Il contenuto evidenziato in blu mostra a quale gruppo il file o la directory appartiene, di proprietà del gruppo staff in questo esempio.

Listing the owner and group of a set of files and directories

Comprensione dei Permessi dei File e delle Directory in Linux

I permessi stabiliscono quali azioni un utente o un gruppo possono eseguire su un dato file o directory. Sono indicati da una rappresentazione carattere e anche assegnati un valore numerico.

  • Leggere (r o 4): Indica se un utente o un gruppo può leggere il contenuto del file o della directory. Il permesso di lettura è concesso per impostazione predefinita a tutti i file e le directory appena creati per tutte le parti.
  • Scrivere (w o 2): Indica se un utente o un gruppo può modificare il contenuto di un oggetto. Questo permesso è concesso per impostazione predefinita solo al proprietario di un file o di una directory.
  • Eseguire (x o 1): Indica se un utente o un gruppo può eseguire un file o eseguire comandi all’interno di una directory. Il permesso di esecuzione è concesso per impostazione predefinita solo alle directory ma non ai file.

Se non si concedono all’utente (u) i permessi di esecuzione su una directory, non sarà in grado di elencare i contenuti poiché l’utente non sarà in grado di eseguire comandi all’interno della directory!

Un esempio è mostrato di seguito, l’output del comando ls -l dimostra i diversi tipi di permesso. Quei permessi preceduti dal valore d, indicano una directory.

Listing file and directory permissions

Perché allora ci sono apparentemente tre insiemi di permessi per ogni oggetto? Il controllo granulare dei permessi è ottenuto dividendo i permessi nelle sezioni (riferite come parti ai fini di questo tutorial) elencate di seguito.

  • Utente (u): Il proprietario di un file o di una directory, evidenziato in blu.
  • Gruppo (g): Membri del gruppo a cui appartiene un file o una directory, evidenziati in verde.
  • Altro (o): Tutti gli utenti e i gruppi aggiuntivi non assegnati esplicitamente, evidenziati in rosso.
Demonstrating the combined permissions for a file or directory

Cambiare le autorizzazioni dei file tramite il comando ricorsivo chmod

Con una corretta comprensione dei permessi di Linux, continua a leggere per imparare come cambiare le autorizzazioni dei file. Le autorizzazioni vengono modificate tramite il comando ricorsivo chmod come mostrato negli esempi seguenti.

1. Prima di tutto, controlla le autorizzazioni attuali con il comando ls -l. Qui viene mostrato il file my_dir/index.js.

Checking the current permission of index.js.

2. Esegui il comando chmod, specificando la parte, a (tutti), e le autorizzazioni, rwx, o lettura/scrittura/esecuzione. Il comando completo è il seguente: chmod a=rwx index.js.

Changing index.js’ permissions.

3. Come puoi vedere, l’esecuzione di chmod ricorsivo non restituisce alcun output. Per verificare che le autorizzazioni siano state cambiate, esegui nuovamente il comando ls -l.

Verifying index.js permissions

Impostare le autorizzazioni dei file tramite valori numerici

Ricorda i numeri associati alle autorizzazioni come lettura o scrittura? Invece di specificare i valori dei caratteri, puoi specificare autorizzazioni specifiche tramite un numero. Aggiungendo i valori, crei un’autorizzazione specifica come 6 che è una combinazione delle autorizzazioni di scrittura (2) e lettura (4).

Nell’esempio seguente, imposta i permessi per il file **main.py** tramite il comando `chmod 664 main.py`. I valori numerici si suddividono come segue.

  • Utente: Lettura e Scrittura (6).
  • Gruppo: Lettura e Scrittura (6).
  • Altro: Lettura (4).
Changing permissions for main.py.

Una volta modificati i permessi, verifica i nuovi permessi per il file **main.py** con il comando `ls -l`.

Verifying permissions for main.py

Rimuovere e Aggiungere Permessi ai File

Le istruzioni non numeriche che hai eseguito finora hanno utilizzato il parametro di assegnazione (=) con **chmod** ricorsivo, per impostare permessi espliciti. In alternativa, puoi rimuovere (-) o aggiungere (+) permessi agli insiemi di permessi esistenti.

1. Per prima cosa, elenca i permessi esistenti per il file **README.md** tramite il comando ls -l README.md.

Checking README.md current permissions

2. Successivamente, aggiungi (+) i permessi di esecuzione (x) alla parte utente (u), mentre rimuovi (-) i permessi di lettura (r) dalla parte altro (o) per **README.md**, con il seguente comando chmod u+x,o-r README.md. I permessi delle parti diverse sono separati da virgole (,).

Changing README.md permissions

3. Esegui il comando ls -l README.md per verificare che i permessi siano stati modificati.

Checking README.md new permissions

Modifica Ricorsiva dei Permessi dei File e delle Directory

Anche se stai facendo progressi, stai operando solo su un file alla volta. Cosa succede se hai un gran numero di file per cui cambiare le autorizzazioni? È ora di migliorare le tue capacità e imparare a cambiare le autorizzazioni per più file.

Una delle opzioni per cambiare le autorizzazioni su più file è eseguire chmod in modo ricorsivo con l’opzione -R (ricorsiva, e non in maiuscolo). L’opzione ricorsiva cambierà le autorizzazioni per tutti i file, inclusi quelli nelle sottodirectory, all’interno di un percorso specificato.

1. Considera il seguente comando, chmod -R a=r,u=rwx my_dir. La maggior parte delle opzioni che hai già visto in precedenza.

Questo comando cambierà le autorizzazioni per tutti i file nella directory, my_dir e nelle sottodirectory, tramite l’opzione ricorsiva (-R). I file sono impostati come leggibili (r) per tutti (a), con permessi diversi per l’utente corrente (u) impostati su permessi completi (lettura, scrittura, esecuzione).

Nella schermata sottostante, vedrai le autorizzazioni risultanti dopo l’esecuzione del comando, che non mostra output.

Checking my_dir files new permissions

2. Supponiamo che tu esegua il comando, chmod -R a=rwx my_dir, sulla stessa directory di prima, my_dir. Ancora una volta, stai cambiando tutti i file in my_dir, e nelle sue sottodirectory, per dare a tutti (a) permessi completi (lettura, scrittura, esecuzione). Ecco il risultato del comando, poiché il comando chmod ricorsivo non mostra output.

Checking my_dir files new permissions to confirm every part now has every permission

3. Come funziona il metodo numerico? Come mostrato di seguito, il metodo ricorsivo funziona anche con le autorizzazioni numeriche, chmod -R 770 my_dir. Qui stai concedendo pieni permessi all’utente e al gruppo, ma nessun permesso all’altra parte.

Recursively changing permissions with the numeric method

4. Esegui ls -l per verificare che i permessi dei file e delle sotto-directory di my_dir siano impostati con il metodo numerico.

Checking the permissions set once again, this time with the numeric method

Definizione del comportamento dei file e delle cartelle tramite autorizzazioni speciali

Le autorizzazioni speciali consentono diversi privilegi aggiuntivi unici rispetto ai set di autorizzazioni standard. Ci sono tre autorizzazioni speciali. Ecco come funzionano queste autorizzazioni speciali e come è possibile aggiungerle a un file o a una directory.

Impostazione delle autorizzazioni SUID (User + S)

Comunemente indicato come SUID, è una autorizzazione speciale per l’utente. Il SUID ha una sola funzione: un file con SUID viene sempre eseguito come l’utente che possiede il file, indipendentemente da chi sta eseguendo il file.

Ad esempio, considera index.js. Per dare l’autorizzazione aggiuntiva SUID, esegui chmod u+s index.js.

Ora, se esegui ls -l index.js, troverai che l’utente ha una s nei loro permessi invece di una x.

Checking index.js new permissions

Impostazione delle autorizzazioni SGID (Group + S)

Comunemente indicato come SGID, questa autorizzazione speciale ha due funzioni:

  • Se impostato per un file, consente al file di essere eseguito come il gruppo che possiede il file, indipendentemente da chi sta eseguendo il file.
  • Se impostato per una directory, tutti i file creati nella directory avranno il loro possesso di gruppo impostato su quello del proprietario della directory.

Esercitati sul file index.php. Per aggiungere il permesso SGID a questo file, esegui il seguente comando: chmod g+s index.php.

Ora, se esegui ls -l index.php, noterai che il gruppo ha una s nei loro permessi.

Checking index.php new permissions

Sposta su una directory: my_dir. Puoi aggiungere il permesso SGID a questa directory utilizzando il seguente comando: chmod g+s my_dir. I file creati in questa directory avranno ora il loro possesso di gruppo impostato sul proprietario della directory. Puoi verificare i nuovi permessi della directory usando ls -ld my_dir (il parametro d limita l’output solo alle directory).

Checking my_dir new permissions

Cambiare il Permesso del Bit Appiccicoso

L’ultimo permesso speciale è anche conosciuto come “bit appiccicoso”. Questo permesso non influenza singoli file. Ma, a livello di directory, limita l’eliminazione dei file. Solo il proprietario di un file può rimuovere un file all’interno di quella directory.

Aggiungi il bit appiccicoso alla vecchia familiare directory my_dir. Per farlo, esegui il comando come segue: chmod +t my_dir.

Nota che, per aggiungere il bit appiccicoso, non indicare il gruppo (o) prima del +t.

Quando controlli i nuovi permessi di my_dir, vedrai una T maiuscola nei permessi altro, come mostrato nella schermata sottostante.

Checking my_dir new and special permissions

Conclusione

Congratulazioni! Hai coperto molti argomenti su chmod ricorsivo. Ora sei pronto a affrontare qualsiasi fastidioso problema di autorizzazione che sorga con l’onnipotente strumento chmod. Hai persino imparato come sfruttare il potere dell’opzione ricorsiva (-R).

Come intendi implementare la versatile funzionalità di chmod a tuo vantaggio la prossima volta che avrai bisogno di gestire le autorizzazioni dei file o delle directory?

Source:
https://adamtheautomator.com/chmod-recursive/