GNU/Linux >> Linux Esercitazione >  >> Linux

10 Esempi di comandi Linux restorecon per ripristinare il contesto SELinux

Sul server Linux, avere un contesto di sicurezza SELinux adeguato per file e directory è molto importante.

Quando aggiungi il tuo file personalizzato a una directory che è già gestita dalla politica di SELinux e se il tuo file personalizzato non ha il contesto SELinux corretto, non otterrai il risultato atteso.

restorecon sta per Restore SELinux Context.

Il comando restorecon ripristinerà il contesto di sicurezza di SELinux per file e directory ai suoi valori predefiniti. Questo ripristinerà solo l'attributo type del contesto SELinux.

In questo tutorial spiegheremo come utilizzare il comando restorecon con alcuni esempi pratici.

1. Ripristina il contesto SELinux di un file

Nell'esempio seguente, il file index.html ha "user_home_t" nel contesto SELinux per il tipo. Questo è sbagliato e Apache non sarà in grado di servire questo file. Vedrai l'autorizzazione negata nel log degli errori per l'Apache con questo contesto di sicurezza.

# cd /var/www/html

# ls -lZ index.html 
-rw-rw-r--. centos centos unconfined_u:object_r:user_home_t:s0 index.html

Nota:l'opzione Z (Z maiuscola) nel comando ls sopra mostrerà il contesto SELinux per un particolare file.

Quando utilizziamo il comando restorecon, non è necessario conoscere il corretto contesto di sicurezza originale per il file. restorecon lo scoprirà automaticamente.

L'esempio seguente ripristinerà il contesto di sicurezza di index.html al valore corretto. Come puoi vedere di seguito, ha reimpostato la parte del tipo del contesto SELinux su "httpd_sys_content_t". Questo è il tipo corretto. Ora, Apache sarà in grado di servire questo file senza alcun errore.

# restorecon index.html

# ls -lZ index.html 
-rw-rw-r--. centos centos unconfined_u:object_r:httpd_sys_content_t:s0 index.html

2. Visualizza la modifica del contesto di sicurezza sullo schermo

Per impostazione predefinita, quando esegui il comando restorecon, non ti dirà se ha cambiato il contesto Linux di sicurezza del file.

v sta per prolisso. L'opzione -v visualizzerà sullo schermo il contesto di sicurezza precedente e il contesto di selinux appena modificato come mostrato di seguito.

# restorecon -v index.html 
restorecon reset /var/www/html/index.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0

3. Usa il carattere jolly per elaborare più oggetti

Proprio come qualsiasi altro comando Linux, puoi anche usare i caratteri jolly per i nomi dei file come mostrato di seguito.

Ciò influenzerà tutti i file che terminano con estensione .html nella directory corrente

restorecon -v *.html

Ciò influenzerà tutti i file nella directory corrente.

restorecon -v *

Ciò influenzerà tutti i file nella directory /var/www/html.

restorecon -v /var/www/html/*

Ciò influenzerà tutti i file che terminano con .htm (o) .html (o) .htm con qualsiasi altro singolo carattere alla fine.

restorecon -v *.htm?

4. Elabora file e directory in modo ricorsivo

Puoi anche reimpostare il contesto di sicurezza dei file in modo ricorsivo. Usa l'opzione -R come mostrato di seguito. Qui stiamo combinando R con l'opzione v.

Questo ripristinerà il contesto o tutti i file in /var/www/html e nelle sue sottodirectory.

# restorecon -vR /var/www/html
restorecon reset /var/www/html/sales/graph.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0

Puoi anche usare la r minuscola per ricorsivo. Il seguente è esattamente lo stesso del comando precedente.

# restorecon -vr /var/www/html

5. Salva elenco di file con contesto SELinux errato

Quando stai reimpostando il contesto SELinux per un grande insieme di file, se sei interessato a vedere solo il file modificato, possiamo usare l'opzione -v come spiegato in precedenza. Ma questo lo visualizzerà solo sullo schermo.

Se desideri acquisire l'elenco dei file con un contesto di sicurezza errato in un file di output, utilizza l'opzione -o.

o sta per file di output.

Nell'esempio seguente, memorizziamo l'elenco dei file che sono stati interessati dal comando restorecon nel file modificato.log.

# restorecon -vR -o changed.log /var/www/html
restorecon reset /var/www/html/about.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/contact.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/data.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/index.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/sales context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/sales/graph.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0

Come prevediamo, questo file modificato.log conterrà l'elenco dei nomi di file interessati insieme al percorso completo come mostrato di seguito.

# cat changed.log
/var/www/html/about.html
/var/www/html/contact.html
/var/www/html/data.html
/var/www/html/index.html
/var/www/html/sales
/var/www/html/sales/graph.html

6. Ripristina il contesto in base al file di input

Puoi anche ripristinare il contesto di sicurezza di un elenco di file che hai da un file di input.

Di seguito, nella directory /var/www/html, tutti questi file hanno attualmente un contesto di sicurezza errato.

# ls -lZ
-rw-rw-r--. centos centos unconfined_u:object_r:user_home_t:s0 about.html
-rw-rw-r--. centos centos unconfined_u:object_r:user_home_t:s0 contact.html
-rw-rw-r--. centos centos unconfined_u:object_r:user_home_t:s0 data.html
-rw-rw-r--. centos centos unconfined_u:object_r:user_home_t:s0 index.html
drwxrwxr-x. centos centos unconfined_u:object_r:user_home_t:s0 sales

Crea un file input.txt come mostrato di seguito, che avrà solo due file. Qui dovrebbe specificare il percorso completo del nome del file inclusa la directory.

# cat input.txt
/var/www/html/about.html
/var/www/html/data.html

Per specificare questo file di input in restorecon, utilizzare l'opzione -f come mostrato di seguito. Questo cambierà il contesto di SELinux solo per about.html e data.html come mostrato di seguito.

# restorecon -vf input.txt 
restorecon reset /var/www/html/about.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/data.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0

Usa il comando ls -lZ per verificare che il contesto di sicurezza di questi due file sia stato modificato.

# ls -lZ
-rw-rw-r--. centos centos unconfined_u:object_r:httpd_sys_content_t:s0 about.html
-rw-rw-r--. centos centos unconfined_u:object_r:user_home_t:s0 contact.html
-rw-rw-r--. centos centos unconfined_u:object_r:httpd_sys_content_t:s0 data.html
-rw-rw-r--. centos centos unconfined_u:object_r:user_home_t:s0 index.html
-rw-r--r--. root   root   unconfined_u:object_r:httpd_sys_content_t:s0 input.txt
drwxrwxr-x. centos centos unconfined_u:object_r:user_home_t:s0 sales

Nota:invece di specificare input.txt, puoi anche specificare – che richiederà l'elenco dei file di input dall'input standard.

7. Ignora i file che non esistono

Nell'esempio seguente, abbiamo creato un input.txt che contiene un elenco di diversi file. Useremo questo elenco per reimpostare il contesto di sicurezza.

# cat input.txt 
/var/www/html/about.html
/var/www/html/meeting.html
/var/www/html/directions.html
/var/www/html/data.html

Ma, come mostrato di seguito, questo visualizzerà il messaggio di errore quando un particolare file nell'elenco sopra non è presente.

# restorecon -f input.txt
restorecon:  lstat(/var/www/html/meeting.html) failed:  No such file or directory
restorecon:  lstat(/var/www/html/directions.html) failed:  No such file or directory

Per evitare ciò, puoi usare l'opzione -i. sto per ignorare. Come puoi vedere di seguito, il seguente comando con l'opzione -i non fornisce nessuno dei messaggi di errore sopra riportati sul file mancante. Questo ignorerà semplicemente quei file mancanti e andrà avanti con il resto dei file in input.txt.

# restorecon -if input.txt
#

8. Esegui solo Dry-Run di Restore SELinux Context

Invece di cambiare realmente il contesto SELinux dei file, puoi semplicemente vedere quali file potrebbero essere potenzialmente modificati usando l'opzione -n.

L'opzione -n ​​è come una prova a secco.

Quando lo usi, eseguirà tutti i movimenti di esecuzione del comando restorecon, ma in realtà non farà nulla.

Come puoi vedere di seguito, abbiamo eseguito il restorecon con l'opzione -n ​​su tutti i file nella directory /var/www/html.

# restorecon -nv /var/www/html/*
restorecon reset /var/www/html/about.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/contact.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/data.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/index.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/sales context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0

Anche se l'output di restorecon sopra mostra che il contesto di SELinux per diversi file è stato modificato, in realtà non ha fatto nulla, poiché abbiamo usato l'opzione -n.

Quando esegui ls -lZ come mostrato di seguito, puoi vedere che il contesto di SELinux non è stato realmente modificato.

# ls -lZ /var/www/html
-rw-rw-r--. centos centos unconfined_u:object_r:user_home_t:s0 about.html
-rw-rw-r--. centos centos unconfined_u:object_r:user_home_t:s0 contact.html
-rw-rw-r--. centos centos unconfined_u:object_r:user_home_t:s0 data.html
-rw-rw-r--. centos centos unconfined_u:object_r:user_home_t:s0 index.html
drwxrwxr-x. centos centos unconfined_u:object_r:user_home_t:s0 sales

9. Visualizza i progressi attuali durante le grandi operazioni

Quando si ripristina il contesto SELinux di più file, il comando potrebbe richiedere del tempo. Se vuoi sapere cosa sta facendo il comando attualmente, puoi -p opzione.

L'opzione -p visualizzerà il numero di file che ha elaborato finora con incrementi di 1000 file. p sta per progresso.

Come puoi vedere di seguito, qui sto ripristinando il contesto SELinux di tutti i file nella directory /var in modo ricorsivo con l'opzione -p.

Ciò mostra che al momento vengono elaborati 2k file (2000 file).

# restorecon -pr /var
2k

Nota:se stai reimpostando il contesto SELinux per tutti i file nel tuo sistema operativo usando l'opzione -p, mostrerà la percentuale di completamento attualmente.

10. Escludi directory da elaborare

Puoi anche escludere la directory da elaborare usando l'opzione -e. e sta per Escludi.

Nell'esempio seguente, stiamo elaborando tutti i file nella directory /var/www/html, ma escludendo i file dalla sottodirectory /var/www/html/sales.

# restorecon -e /var/www/html/sales -Rv /var/www/html
restorecon reset /var/www/html/about.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/contact.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/data.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/index.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0

Si noti che è necessario utilizzare il percorso completo della directory nell'opzione -e. In caso contrario, riceverai il seguente messaggio di errore.

# restorecon -e sales -Rv /var/www/html
Full path required for exclude: sales.

Puoi anche escludere più directory fornendo l'opzione -e multipla come mostrato di seguito.

Quanto segue escluderà dall'elaborazione sia la directory di vendita che quella di marketing.

restorecon -e /var/www/html/sales -e /var/www/html/marketing -Rv /var/www/html

Linux
  1. 7 Esempi di comandi Linux df

  2. 8 Esempi di comandi TR Linux

  3. Esempi di comandi chcon in Linux

  4. Esempi di comandi rm in Linux

  5. ps Esempi di comandi in Linux

10 esempi di comandi iftop in Linux

16 Esempi di comandi Echo in Linux

9 Esempi di comandi tee in Linux

9 esempi di comandi diff in Linux

sestatus Esempi di comandi in Linux

Esempi di comandi id in Linux