GNU/Linux >> Tutoriels Linux >  >> Linux

10 exemples de commandes Linux restorecon pour restaurer le contexte SELinux

Sur votre serveur Linux, il est très important d'avoir un contexte de sécurité SELinux approprié pour les fichiers et les répertoires.

Lorsque vous ajoutez votre fichier personnalisé à un répertoire qui est déjà géré par la politique SELinux, et si votre fichier personnalisé n'a pas le bon contexte SELinux, vous n'obtiendrez pas le résultat attendu.

restorecon signifie Restaurer le contexte SELinux.

La commande restorecon réinitialisera le contexte de sécurité SELinux pour les fichiers et les répertoires à ses valeurs par défaut. Cela ne réinitialisera que l'attribut type du contexte SELinux.

Dans ce tutoriel, nous expliquerons comment utiliser la commande restorecon avec quelques exemples pratiques.

1. Restaurer le contexte SELinux d'un fichier

Dans l'exemple suivant, le fichier index.html a "user_home_t" dans le contexte SELinux pour le type. C'est faux, et apache ne pourra pas servir ce fichier. Vous verrez l'autorisation refusée dans le error_log pour l'apache avec ce contexte de sécurité.

# cd /var/www/html

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

Remarque :L'option Z (Z majuscule) dans la commande ls ci-dessus affichera le contexte SELinux pour un fichier particulier.

Lorsque nous utilisons la commande restorecon, nous n'avons vraiment pas besoin de connaître le contexte de sécurité d'origine correct pour le fichier. restorecon s'en chargera automatiquement pour nous.

L'exemple suivant restaurera le contexte de sécurité de index.html à la valeur appropriée. Comme vous le voyez ci-dessous, il a réinitialisé la partie type du contexte SELinux sur "httpd_sys_content_t". C'est le bon type. Maintenant, apache pourra servir ce fichier sans aucune erreur.

# restorecon index.html

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

2. Afficher le changement de contexte de sécurité à l'écran

Par défaut, lorsque vous exécutez la commande restorecon, elle ne vous dira pas si elle a modifié le contexte Linux de sécurité du fichier.

v signifie verbeux. L'option -v affichera à l'écran le contexte de sécurité précédent et le contexte selinux nouvellement modifié, comme indiqué ci-dessous.

# 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. Utiliser un caractère générique pour traiter plusieurs objets

Comme toute autre commande Linux, vous pouvez également utiliser des caractères génériques pour les noms de fichiers, comme indiqué ci-dessous.

Cela affectera tous les fichiers se terminant par l'extension .html dans le répertoire courant

restorecon -v *.html

Cela affectera tous les fichiers sous le répertoire courant.

restorecon -v *

Cela affectera tous les fichiers sous le répertoire /var/www/html.

restorecon -v /var/www/html/*

Cela affectera tous les fichiers se terminant par .htm (ou) .html (ou) .htm avec n'importe quel autre caractère à la fin.

restorecon -v *.htm?

4. Traiter les fichiers et les répertoires de manière récursive

Vous pouvez également réinitialiser le contexte de sécurité des fichiers de manière récursive. Utilisez l'option -R comme indiqué ci-dessous. Ici, nous combinons R avec l'option v.

Cela réinitialisera le contexte ou tous les fichiers dans /var/www/html et sous ses sous-répertoires.

# 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

Vous pouvez également utiliser des r minuscules pour la récursivité. Ce qui suit est exactement le même que la commande ci-dessus.

# restorecon -vr /var/www/html

5. Enregistrer la liste des fichiers avec un contexte SELinux incorrect

Lorsque vous réinitialisez le contexte SELinux pour un grand nombre de fichiers, si vous souhaitez voir uniquement le fichier modifié, nous pouvons utiliser l'option -v comme expliqué précédemment. Mais cela ne l'affichera qu'à l'écran.

Si vous souhaitez capturer la liste des fichiers avec un contexte de sécurité incorrect dans un fichier de sortie, utilisez l'option -o.

o signifie fichier de sortie.

Dans l'exemple suivant, nous stockons la liste des fichiers qui ont été affectés par la commande restorecon dans le fichier modified.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

Comme nous nous attendons à ce que ce fichier modified.log contienne la liste des noms de fichiers concernés ainsi que le chemin complet, comme indiqué ci-dessous.

# 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. Restaurer le contexte basé sur le fichier d'entrée

Vous pouvez également restaurer le contexte de sécurité d'une liste de fichiers que vous avez à partir d'un fichier d'entrée.

Dans ce qui suit, sous le répertoire /var/www/html, tous ces fichiers ont actuellement un mauvais contexte de sécurité.

# 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

Créez un fichier input.txt comme indiqué ci-dessous, qui n'aura que deux fichiers. Ici, vous devez spécifier le chemin complet du nom de fichier, y compris le répertoire.

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

Pour spécifier ce fichier d'entrée dans le restorecon, utilisez l'option -f comme indiqué ci-dessous. Cela modifiera le contexte SELinux uniquement pour about.html et data.html, comme indiqué ci-dessous.

# 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

Utilisez la commande ls -lZ pour vérifier que seul le contexte de sécurité de ces deux fichiers est modifié.

# 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

Remarque :Au lieu de spécifier input.txt, vous pouvez également spécifier - qui demandera la liste des fichiers d'entrée à partir de l'entrée standard.

7. Ignorer les fichiers qui n'existent pas

Dans l'exemple suivant, nous avons créé un input.txt qui contient une liste de plusieurs fichiers. Nous utiliserons cette liste pour réinitialiser le contexte de sécurité.

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

Mais, comme indiqué ci-dessous, cela affichera le message d'erreur lorsqu'un fichier particulier dans la liste ci-dessus n'est pas présent.

# 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

Pour éviter cela, vous pouvez utiliser l'option -i. je signifie ignorer. Comme vous le voyez ci-dessous, la commande suivante avec l'option -i ne donne aucun des messages d'erreur ci-dessus concernant le fichier manquant. Cela ignorera simplement ces fichiers manquants et passera au reste des fichiers dans le fichier input.txt.

# restorecon -if input.txt
#

8. Effectuez uniquement une simulation de restauration du contexte SELinux

Au lieu de vraiment changer le contexte SELinux des fichiers, vous pouvez simplement voir quels fichiers pourraient potentiellement être modifiés en utilisant l'option -n.

L'option -n est comme une simulation.

Lorsque vous l'utilisez, il effectuera tous les mouvements d'exécution de la commande restorecon, mais ne fera vraiment rien.

Comme vous le voyez ci-dessous, nous avons exécuté le restorecon avec l'option -n sur tous les fichiers sous le répertoire /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

Même si la sortie de restorecon ci-dessus montre que le contexte SELinux de plusieurs fichiers a été modifié, cela n'a vraiment rien fait, car nous avons utilisé l'option -n.

Lorsque vous faites le ls -lZ comme indiqué ci-dessous, vous pouvez voir que le contexte SELinux n'a pas vraiment changé.

# 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. Afficher la progression actuelle pendant la grande opération

Lorsque vous restaurez le contexte SELinux de plusieurs fichiers, la commande peut prendre un certain temps. Si vous voulez savoir ce que la commande fait actuellement, vous pouvez utiliser l'option -p.

L'option -p affichera le nombre de fichiers qu'elle a traités jusqu'à présent par incrément de 1000 fichiers. p signifie progrès.

Comme vous le voyez ci-dessous, je réinitialise ici le contexte SELinux de tous les fichiers sous le répertoire /var de manière récursive avec l'option -p.

Cela montre qu'à partir de maintenant, 2 000 fichiers (2 000 fichiers) sont traités.

# restorecon -pr /var
2k

Remarque :Si vous réinitialisez le contexte SELinux pour tous les fichiers de votre système d'exploitation à l'aide de l'option -p, il affichera le pourcentage d'avancement actuel.

10. Exclure les répertoires à traiter

Vous pouvez également exclure le répertoire à traiter à l'aide de l'option -e. e signifie Exclure.

Dans l'exemple suivant, nous traitons tous les fichiers sous le répertoire /var/www/html, mais excluons les fichiers du sous-répertoire /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

Veuillez noter que vous devez utiliser le chemin complet du répertoire dans l'option -e. Sinon, vous obtiendrez le message d'erreur suivant.

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

Vous pouvez également exclure plusieurs répertoires en fournissant plusieurs options -e comme indiqué ci-dessous.

Les éléments suivants excluront à la fois les répertoires des ventes et du marketing du traitement.

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

Linux
  1. 7 Exemples de commandes Linux df

  2. 8 Exemples de commandes Linux TR

  3. chcon exemples de commandes sous Linux

  4. Exemples de commande rm sous Linux

  5. Exemples de commandes ps sous Linux

10 exemples de commandes iftop sous Linux

16 exemples de commandes Echo sous Linux

9 exemples de commandes tee sous Linux

9 exemples de commande diff sous Linux

sestatus Exemples de commandes sous Linux

Exemples de commandes id sous Linux