GNU/Linux >> Tutoriales Linux >  >> Linux

10 ejemplos de comandos de restauración de Linux para restaurar el contexto de SELinux

En su servidor Linux, es muy importante tener un contexto de seguridad SELinux adecuado para archivos y directorios.

Cuando agrega su archivo personalizado a un directorio que ya está administrado por la política de SELinux, y si su archivo personalizado no tiene el contexto de SELinux adecuado, entonces no obtendrá el resultado esperado.

restorecon significa Restaurar Contexto SELinux.

El comando restorecon restablecerá el contexto de seguridad de SELinux para archivos y directorios a sus valores predeterminados. Esto solo restablecerá el atributo de tipo del contexto de SELinux.

En este tutorial, explicaremos cómo usar el comando restorecon con algunos ejemplos prácticos.

1. Restaurar contexto SELinux de un archivo

En el siguiente ejemplo, el archivo index.html tiene "user_home_t" en el contexto de SELinux para el tipo. Esto es incorrecto y apache no podrá entregar este archivo. Verá el permiso denegado en error_log para Apache con este contexto de seguridad.

# cd /var/www/html

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

Nota:La opción Z (Z mayúscula) en el comando ls anterior mostrará el contexto de SELinux para un archivo en particular.

Cuando usamos el comando restorecon, realmente no tenemos que conocer el contexto de seguridad original correcto para el archivo. restorecon lo resolverá automáticamente.

El siguiente ejemplo restaurará el contexto de seguridad de index.html al valor adecuado. Como puede ver a continuación, ha restablecido la porción de tipo del contexto de SELinux a "httpd_sys_content_t". Este es el tipo correcto. Ahora, apache podrá servir este archivo sin ningún error.

# restorecon index.html

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

2. Mostrar cambio de contexto de seguridad en pantalla

De forma predeterminada, cuando ejecuta el comando restorecon, no le indicará si cambió el contexto de seguridad de Linux del archivo.

v significa detallado. La opción -v mostrará en la pantalla el contexto de seguridad anterior y el contexto de selinux recién modificado como se muestra a continuación.

# 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. Utilice comodines para procesar varios objetos

Al igual que cualquier otro comando de Linux, también puede usar comodines para los nombres de archivo, como se muestra a continuación.

Esto afectará a todos los archivos que terminen con la extensión .html en el directorio actual

restorecon -v *.html

Esto afectará a todos los archivos del directorio actual.

restorecon -v *

Esto afectará a todos los archivos del directorio /var/www/html.

restorecon -v /var/www/html/*

Esto afectará a todos los archivos que terminen con .htm (o) .html (o) .htm con cualquier otro carácter único al final.

restorecon -v *.htm?

4. Procesar archivos y directorios de forma recursiva

También puede restablecer el contexto de seguridad de los archivos de forma recursiva. Use la opción -R como se muestra a continuación. Aquí estamos combinando R con la opción v.

Esto restablecerá el contexto o todos los archivos en /var/www/html y en sus subdirectorios.

# 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

También puede usar la r minúscula para recursivo. Lo siguiente es exactamente igual que el comando anterior.

# restorecon -vr /var/www/html

5. Guardar lista de archivos con contexto SELinux incorrecto

Cuando está restableciendo el contexto de SELinux para un gran conjunto de archivos, si está interesado en ver solo el archivo modificado, podemos usar la opción -v como se explicó anteriormente. Pero esto solo lo mostrará en la pantalla.

Si desea capturar la lista de archivos con un contexto de seguridad incorrecto en un archivo de salida, use la opción -o.

o significa archivo de salida.

En el siguiente ejemplo, almacenamos la lista de archivos que se vieron afectados por el comando restorecon en el archivo changes.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

Como esperamos, este archivo changes.log contendrá la lista de nombres de archivo afectados junto con la ruta completa, como se muestra a continuación.

# 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. Restaurar contexto basado en archivo de entrada

También puede restaurar el contexto de seguridad de una lista de archivos que tiene a partir de un archivo de entrada.

A continuación, en el directorio /var/www/html, todos estos archivos actualmente tienen un contexto de seguridad incorrecto.

# 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

Cree un archivo input.txt como se muestra a continuación, que tendrá solo dos archivos. Aquí debe especificar la ruta completa del nombre del archivo, incluido el directorio.

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

Para especificar este archivo de entrada en la restauración, use la opción -f como se muestra a continuación. Esto cambiará el contexto de SELinux solo para about.html y data.html como se muestra a continuación.

# 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

Use el comando ls -lZ para verificar que solo se cambia el contexto de seguridad de esos dos archivos.

# 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:en lugar de especificar input.txt, también puede especificar, lo que le pedirá una lista de archivos de entrada desde la entrada estándar.

7. Ignorar archivos que no existen

En el siguiente ejemplo, hemos creado un input.txt que contiene una lista de varios archivos. Usaremos esta lista para restablecer el contexto de seguridad.

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

Pero, como se muestra a continuación, esto mostrará el mensaje de error cuando un archivo en particular en la lista anterior no esté 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

Para evitar esto, puede usar la opción -i. i significa ignorar. Como puede ver a continuación, el siguiente comando con la opción -i no muestra ninguno de los mensajes de error anteriores sobre el archivo que falta. Esto simplemente ignorará los archivos faltantes y continuará con el resto de los archivos en input.txt.

# restorecon -if input.txt
#

8. Realice solo una ejecución en seco de la restauración del contexto de SELinux

En lugar de cambiar realmente el contexto de SELinux de los archivos, puede ver qué archivos podrían cambiarse usando la opción -n.

La opción -n es como un simulacro.

Cuando use esto, realizará todos los movimientos para ejecutar el comando de restauración, pero en realidad no hará nada.

Como puede ver a continuación, hemos ejecutado la restauración con la opción -n en todos los archivos del directorio /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

Aunque la salida de restauración anterior muestra que el contexto de SELinux para varios archivos cambió, en realidad no hizo nada, ya que usamos la opción -n.

Cuando hace ls -lZ como se muestra a continuación, puede ver que el contexto de SELinux no cambió realmente.

# 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. Mostrar el progreso actual durante una gran operación

Cuando está restaurando el contexto de SELinux de varios archivos, el comando puede tardar algún tiempo. Si desea saber qué está haciendo el comando actualmente, puede usar la opción -p.

La opción -p mostrará la cantidad de archivos que ha procesado hasta ahora en incrementos de 1000 archivos. p significa progreso.

Como puede ver a continuación, aquí estoy restableciendo el contexto de SELinux de todos los archivos en el directorio /var recursivamente con la opción -p.

Esto muestra que, a partir de ahora, se procesan 2k archivos (2000 archivos).

# restorecon -pr /var
2k

Nota:si está restableciendo el contexto de SELinux para todos los archivos en su sistema operativo usando la opción -p, mostrará el porcentaje completo actualmente.

10. Excluir directorios para ser procesados

También puede excluir el directorio que se procesará usando la opción -e. e significa Excluir.

En el siguiente ejemplo, estamos procesando todos los archivos del directorio /var/www/html, pero excluyendo los archivos del subdirectorio /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

Tenga en cuenta que debe usar la ruta completa del directorio en la opción -e. De lo contrario, obtendrá el siguiente mensaje de error.

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

También puede excluir varios directorios proporcionando la opción -e múltiple como se muestra a continuación.

Lo siguiente excluirá del procesamiento tanto el directorio de ventas como el de marketing.

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

Linux
  1. 7 ejemplos de comandos Linux df

  2. 8 ejemplos de comandos TR de Linux

  3. ejemplos de comandos chcon en Linux

  4. Ejemplos de comandos sa en Linux

  5. Ejemplos de comandos de restauración en Linux

10 ejemplos de comandos iftop en Linux

16 ejemplos de comandos de eco en Linux

9 ejemplos de comandos tee en Linux

9 ejemplos de comandos diff en Linux

Ejemplos de comandos sestatus en Linux

Ejemplos de comandos id en Linux