SELinux
- CONTENU
La rubrique fournit des informations de base concernant Security-Enhanced Linux.
- MOTIF
Vous voulez comprendre SELinux et comment le configurer sous SLE Micro.
- EFFORT
La lecture de l'article prend environ 40 minutes.
1 À propos de SELinux #
SELinux a été développé en tant que solution de sécurité Linux supplémentaire qui utilise l'infrastructure de sécurité du kernel Linux. L'objectif était de permettre une stratégie de sécurité plus granulaire allant au-delà des contrôles d'accès discrétionnaires (Discretionary Access Controls - DAC) standard, des autorisations de fichier traditionnelles du propriétaire/du groupe/du monde et de lecture/d'écriture/d'exécution.
SELinux utilise des étiquettes jointes aux objets (par exemple, des fichiers et des sockets réseau) et les utilise pour les décisions d'accès.
L'action par défaut de SELinux consiste à refuser tout accès. SELinux n'autorise que les opérations spécifiquement autorisées dans la stratégie SELinux. Une autre caractéristique de SELinux qui renforce la sécurité est que SELinux permet un confinement strict des processus à tel point que les processus ne peuvent pas accéder aux fichiers d'autres processus sur le même système.
SELinux a été conçu pour améliorer les solutions de sécurité existantes et non pour les remplacer. Par exemple, le contrôle d'accès discrétionnaire (DAC) est toujours d'application, même si le système utilise SELinux. En cas de refus d'accès par DAC, SELinux n'est alors pas utilisé, puisque l'accès a déjà été bloqué en amont par un autre mécanisme.
2 Obtention de SELinux #
SELinux est installé par défaut lors de l'installation de SLE Micro par YaST ou fait partie des images prédéfinies.
Si SELinux n'est pas configuré sur votre système, exécutez la commande suivante :
#
transactional-update setup-selinux
Redémarrez votre système une fois la commande terminée. La commande installe la stratégie SELinux si elle n'est pas installée, définit le mode SELinux enforcing
, puis reconstruit initrd
.
3 Modes SELinux #
SELinux peut être exécuté dans l'un des trois modes suivants : disabled
, permissive
ou enforcing
.
L'utilisation du mode disabled
signifie qu'aucune règle de la stratégie SELinux n'est appliquée et que votre système n'est pas protégé. Nous vous déconseillons donc d'utiliser le mode disabled
.
Avec le mode permissive
, SELinux est actif, la stratégie de sécurité est chargée, le système de fichiers est étiqueté et des entrées sont consignées en cas de refus d'accès. Toutefois, la stratégie n'est pas appliquée et aucun accès n'est donc réellement refusé.
En mode enforced
, la stratégie de sécurité est appliquée. Chaque accès qui n'est pas explicitement autorisé par la stratégie est refusé.
Pour plus d'informations sur la procédure pour passer d'un mode SELinux à un autre, reportez-vous à la Section 3.1, « Modification du mode SELinux »
3.1 Modification du mode SELinux #
Vous pouvez changer de mode SELinux de façon temporaire ou permanente.
3.1.1 Changement temporaire du mode SELinux #
Pour définir temporairement SELinux en mode permissive
ou enforcing
, utilisez la commande setenforce
.
La commande setenforce
présente la syntaxe suivante :
#
setenforceMODE_ID
où MODE_ID est 0 pour le mode permissive
ou 1 pour le mode enforced
.
N'oubliez pas que vous ne pouvez pas désactiver SELinux à l'aide de la commande setenforce
.
3.1.2 Modification permanente du mode SELinux #
Pour que les modifications apportées au mode SELinux restent applicables après le redémarrage du système, modifiez le fichier de configuration /etc/selinux/config
. Dans ce fichier, vous pouvez également désactiver SELinux sur votre système. Toutefois, cette opération n'est pas recommandée. Si vous pensez que SELinux est peut-être à l'origine de certains problèmes sur votre système, passez alors en mode permissive
et déboguez votre système.
Dans le fichier /etc/selinux/config
, modifiez la valeur de SELINUX
en disabled
, permissive
ou enforced
comme suit :
SELINUX=disabled
Les modifications apportées au fichier seront appliquées après le prochain redémarrage.
disabled
Si vous désactivez SELinux sur votre système et que vous le réactivez par la suite, veillez à réétiqueter votre système. Lorsque SELinux est désactivé et que vous apportez des modifications à votre système de fichiers, les modifications ne sont plus prises en compte dans le contexte (par exemple, les nouveaux fichiers n'ont aucun contexte). Par conséquent, vous devez réétiqueter votre système à l'aide de la commande restorecon
, du paramètre de démarrage autorelabel
ou en créant un fichier qui déclenchera le réétiquetage au prochain démarrage. Pour créer le fichier, exécutez la commande suivante :
#
touch /etc/selinux/.autorelabel
Après le redémarrage, le fichier /etc/selinux/.autorelabel
est remplacé par un autre fichier d'indicateur (/etc/selinux/.relabelled
) pour empêcher le réétiquetage lors des redémarrages suivants.
3.1.3 Vérification du mode SELinux actif #
Pour vérifier le mode, exécutez la commande suivante :
#
getenforce
La commande doit renvoyer permissive
ou enforced
selon l'ID de mode MODE_ID fourni.
3.2 Vérification du fonctionnement de SELinux #
Pour apporter des modifications de configuration, il peut être utile de passer en mode permissif. Pendant ce temps, les utilisateurs risquent d'étiqueter les fichiers de manière incorrecte et provoquer des problèmes lors du retour au mode d'application.
Pour rétablir l'état sécurisé du système, procédez comme suit :
Réinitialisez le contexte de sécurité :
>
sudo
restorecon -R /
Passez en mode d'application en définissant
SELINUX=enforcing
dans le fichier à l'emplacement suivant/etc/selinux/config
.Redémarrez le système, puis reconnectez-vous.
Exécutez la commande
sestatus -v
. Vous devriez obtenir une sortie similaire à ce qui suit :>
sudo
sestatus -v
SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: enforcing Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Memory protection checking: requested(insecure) Max kernel policy version: 33 Process contexts: Current context: unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 Init context: system_u:system_r:init_t:s0 /usr/sbin/sshd system_u:system_r:sshd_t:s0-s0:c0.c1023 File contexts: Controlling terminal: unconfined_u:object_r:user_tty_device_t:s0 /etc/passwd system_u:object_r:passwd_file_t:s0 /etc/shadow system_u:object_r:shadow_t:s0 /bin/bash system_u:object_r:shell_exec_t:s0 \ -> system_u:object_r:shell_exec_t:s0 /bin/login system_u:object_r:login_exec_t:s0 /bin/sh system_u:object_r:bin_t:s0 \ -> system_u:object_r:shell_exec_t:s0 /sbin/agetty system_u:object_r:bin_t:s0 \ -> system_u:object_r:getty_exec_t:s0 /sbin/init system_u:object_r:bin_t:s0 -> \ system_u:object_r:init_exec_t:s0 /usr/sbin/sshd system_u:object_r:sshd_exec_t:s0Si le système ne fonctionne pas correctement, vérifiez les fichiers journaux à l'emplacement suivant :
/var/log/audit/audit.log
. Pour plus d'informations, reportez-vous à la documentation SELinux troubleshooting.
4 Contexte de sécurité SELinux #
Le contexte de sécurité est un ensemble d'informations assignées à un fichier ou à un processus. Il se compose de l'utilisateur SELinux, de son rôle, du type, du niveau et de la catégorie. Ces informations servent à prendre des décisions en matière de contrôle d'accès.
- utilisateur SELinux
Identité définie dans la stratégie qui est autorisée pour un ensemble spécifique de rôles et pour une plage de niveau spécifique. Chaque utilisateur Linux est assigné à un seul utilisateur SELinux. Toutefois, un utilisateur SELinux peut avoir plusieurs rôles.
SELinux n'utilise pas la liste des comptes utilisateur gérée par Linux dans le fichier à l'emplacement
/etc/passwd
, mais utilise sa propre base de données et son assignation. Par convention, le nom de l'identité a le suffixe_u
, par exemple :user_u
.Lorsqu'un nouveau compte Linux est créé et que l'utilisateur SELinux n'est pas assigné au compte, l'utilisateur SELinux par défaut est utilisé. Habituellement, la valeur par défaut est
unconfined_u
. Pour consulter la procédure de modification de la valeur par défaut, reportez-vous à la Section 7.5.2, « Commandesemanage login
».- rôle
Définit un ensemble d'autorisations qu'un utilisateur peut se voir accorder. Un rôle définit les types auxquels un utilisateur assigné à ce rôle peut accéder. Par convention, le nom du rôle a le suffixe
_r
, par exemple :system_r
.- type
Le type transmet des informations sur la façon dont certains fichiers et processus peuvent interagir. Un processus est constitué de fichiers d'un type SELinux bien spécifique et ne peut pas accéder aux fichiers qui ne sont pas de ce type. Par convention, le nom du type a le suffixe
_t
, par exemple :var_t
- niveau
Attribut facultatif qui spécifie la plage de niveaux d'autorisation dans le cadre d'une sécurité à plusieurs niveaux.
- catégorie
Attribut facultatif qui vous permet d'ajouter des catégories à des processus, à des fichiers et à des utilisateurs. Un utilisateur peut alors accéder aux fichiers d'une même catégorie.
Voici un exemple de contexte SELinux :
allow user_t bin_t:file {read execute gettattr};
Cet exemple de règle indique que l'utilisateur qui possède le type de contexte user_t
(cet utilisateur est appelé l'objet source) est autorisé à accéder aux objets du fichier de classe dont le type de contexte est bin_t
(la cible), à l'aide des autorisations read
, execute
et getattr
.
5 Présentation de la stratégie SELinux #
La stratégie est le composant clé de SELinux. Votre stratégie SELinux définit des règles qui spécifient les objets qui peuvent accéder aux fichiers, répertoires, ports et processus d'un système. Pour ce faire, un contexte de sécurité est défini pour l'ensemble de ces éléments.
Une stratégie SELinux contient un grand nombre de règles. Pour faciliter leur gestion, les stratégies sont souvent divisées en modules. De cette façon, l'administrateur peut activer ou désactiver la protection pour différentes parties du système.
Lors de la compilation de la stratégie pour votre système, vous aurez le choix entre une stratégie modulaire ou monolithique. La stratégie monolithique est une stratégie gigantesque qui servira à protéger l'ensemble de votre système. Nous vous recommandons vivement d'utiliser une stratégie modulaire plutôt qu'une stratégie monolithique. Les stratégies modulaires sont beaucoup plus simples à gérer.
SLE Micro est fourni avec la stratégie SELinux targeted
.
5.1 Utilisation des modules SELinux #
En tant qu'administrateur, vous pouvez activer ou désactiver des modules. Cela peut être utile si vous souhaitez désactiver uniquement une partie de la stratégie SELinux et que vous ne souhaitez pas exécuter un service spécifique sans la protection SELinux.
Pour afficher tous les modules de stratégie SELinux en cours d'utilisation, exécutez la commande :
semodule -l
Une fois que vous avez obtenu le nom du module que vous souhaitez désactiver, exécutez la commande :
>
sudo
semodule -d MODULENAME
Pour activer le module de stratégie, exécutez la commande :
>
sudo
semodule -e MODULENAME
5.2 Création de stratégies pour les conteneurs #
SLE Micro est fourni avec une stratégie qui, par défaut, n'autorise pas les conteneurs à accéder aux fichiers en dehors des données de conteneur. En revanche, tous les accès au réseau sont autorisés. En règle générale, les conteneurs sont créés avec des montages liés et doivent pouvoir accéder à d'autres répertoires, tels que /home
ou /var
. Vous souhaiterez peut-être avoir la possibilité d'autoriser l'accès à ces répertoires ou, au contraire, de limiter certains ports au conteneur, même si SELinux est utilisé sur votre système. Dans ce cas, vous devez créer de nouvelles règles de stratégie qui activent ou désactivent l'accès. SLE Micro fournit l'outil Udica pour ce faire.
La procédure suivante décrit comment créer une stratégie personnalisée pour vos conteneurs :
Assurez-vous que SELinux est en mode d'application. Pour plus d'informations, reportez-vous à la Section 3.1, « Modification du mode SELinux ».
Démarrez un conteneur à l'aide des paramètres suivants :
#
podman run -v /home:/home:rw -v /var/:/var/:rw -p 21:21 -it sle15 bashLe conteneur s'exécute avec la stratégie par défaut qui n'autorise pas l'accès aux points de montage, mais ne limite pas les autres ports.
Vous pouvez quitter le conteneur.
Obtenez l'ID du conteneur :
#
podman ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e59f9d0f86f2 registry.opensuse.org/devel/bci/tumbleweed/containerfile/opensuse/bci/ruby:latest /bin/bash 8 minutes ago Up 8 seconds ago 0.0.0.0:21->21/tcp zen_ramanujanCréez un fichier JSON qu'Udica utilisera pour créer une stratégie personnalisée pour le conteneur :
#
podman inspect e59f9d0f86f2 >OUTPUT_JSON_FILEPar exemple, remplacez OUTPUT_JSON_FILE par
container.json
.Exécutez Udica pour générer une stratégie en fonction des paramètres du conteneur :
#
udica -jOUTPUT_JSON_FILECUSTOM_CONTAINER_POLICYPar exemple :
#
udica -j container.json custom_policySelon les instructions fournies, chargez les modules de stratégie en exécutant :
#
semodule -i custom_policy.cil /usr/share/udica/templates/{base_container.cil,net_container.cil,home_container.cil}Exécutez un conteneur avec le nouveau module de stratégie en utilisant l'option
--security-opt
comme suit :#
podman run --security-opt label=type:custom_policy.process -v /home:/home:rw -v /var/:/var/:rw -p 21:21 -it sle15 bash
6 Attributs booléens SELinux #
Les attributs booléens SELinux prennent en charge une approche flexible de gestion des stratégies. Par exemple, les attributs booléens vous permettent de désactiver une stratégie spécifique d'un serveur, tout en maintenant la même stratégie active sur un autre. Autrement dit, un attribut booléen peut être interprété comme un paramètre de règle de stratégie. Au lieu de modifier une stratégie particulière, vous pouvez la désactiver. Dans le code de la stratégie, les attributs booléens sont appelés variables programmables. Étant donné que les attributs booléens sont inclus dans la stratégie, ils sont disponibles dès qu'une stratégie est chargée.
Les modifications apportées aux valeurs booléennes peuvent être permanentes ou temporaires et dans ce cas, ne durer que jusqu'à la fin de la session.
SELinux propose des outils qui vous permettent de lister et d'afficher les détails ou de modifier l'état des attributs booléens. Reportez-vous aux sections suivantes pour plus de détails.
6.1 Utilisation d'attributs booléens #
6.1.1 Liste des attributs booléens #
Vous pouvez utiliser la commande getsebool
ou semanage
pour lister les attributs booléens actuellement définis. Pour lister tous les attributs booléens actuellement définis, ainsi que leur état, exécutez la commande suivante :
#
getsebool -a
abrt_anon_write --> off
abrt_handle_event --> off
abrt_upload_watch_anon_write --> on
...
Pour obtenir plus de détails sur des attributs booléens spécifiques, vous pouvez utiliser la commande semanage
comme suit :
#
semanage boolean -l
SELinux boolean State Default Description
abrt_anon_write (off , off) Allow abrt to anon write
abrt_handle_event (off , off) Allow abrt to handle event
abrt_upload_watch_anon_write (on , on) Allow abrt to upload watch anon write
Pour obtenir l'état d'un attribut booléen individuel, vous pouvez utiliser la commande suivante :
#
getseboolBOOLEAN_NAME
Vous pouvez également utiliser la commande grep
sur la sortie semanage boolean
:
#
semanage boolean -l | grepBOOLEAN_NAME
6.1.2 Affichage/masquage des attributs booléens #
Les commandes setsebool
et semanage
peuvent être utilisées pour changer la valeur des attributs booléens. Vous pouvez modifier l'état d'un attribut booléen de façon permanente ou temporaire (jusqu'à la fin de la session). Pour modifier temporairement une valeur booléenne, exécutez la commande suivante :
#
setseboolBOOLEAN_NAMEBOOLEAN_VALUE
où BOOLEAN_VALUE est soit on
, soit off
.
Pour modifier une valeur booléenne de façon permanente, exécutez l'une des deux commandes suivantes :
#
setsebool -PBOOLEAN_NAMEBOOLEAN_VALUE
Vous pouvez également utiliser la commande semanage
:
#
semanage boolean -m --BOOLEAN_VALUEBOOLEAN_NAME
où BOOLEAN_VALUE est soit on
, soit off
Un seul attribut booléen peut activer ou désactiver plusieurs règles de stratégie. Pour afficher les règles de stratégie activées ou désactivées par les attributs booléens, employez l'outil sedispol
qui permet d'analyser le fichier de stratégie :
#
sedispol /etc/selinux/targeted/policy/policy.32
Les règles de stratégie étant généralement très volumineuses, nous vous recommandons de définir un fichier de sortie en sélectionnant f
et en spécifiant un nom de fichier. Après avoir spécifié le nom du fichier, appuyez sur 6
. Vous pouvez ensuite inspecter le fichier.
7 Outils de gestion de SELinux #
SLE Micro vous fournit des outils pour gérer SELinux sur votre système. Si les outils décrits ci-dessous ne sont pas installés sur votre système, installez-les en exécutant :
#
transactional-update pkg install policycoreutils-python-utils
Une fois l'installation réussie, redémarrez le système.
7.1 Utilisation de l'option Z
#
Lorsque SELinux est installé et configuré, vous pouvez utiliser l'option -Z
dans les commandes standard telles que ls
, id
, ou ps
. Cette option vous permet d'afficher le contexte de sécurité des fichiers ou des processus. Par exemple, pour la commande ls
:
>
ls -Z /etc/shadow
system_u:object_r:shadow_t:s0 /etc/shadow
7.2 Commande chcon
#
Le nom de la commande chcon
signifie « change context » (modifier le contexte). La commande peut modifier l'ensemble du contexte de sécurité d'un fichier par la valeur fournie dans l'interface de ligne de commande ou n'en modifier que certaines parties. Vous pouvez également fournir un fichier pour qu'il serve de référence.
Pour modifier l'ensemble du contexte de sécurité d'un fichier, la syntaxe de la commande se présente comme suit :
#
chconSECURITY_CONTEXTFILENAME
où :
SECURITY_CONTEXT est au format : SELinux_USER:ROLE:TYPE:LEVEL:CATEGORY. Par exemple, le contexte peut être : system_u:object_r:httpd_config_t:s0.
FILENAME est le chemin d'accès au fichier dont le contexte doit être modifié.
Pour définir un contexte de sécurité en fonction d'un fichier fourni à titre de référence, exécutez chcon
comme suit :
#
chcon --reference=REFERENCE_FILEFILENAME
où :
REFERENCE_FILE est le chemin d'accès à un fichier qui doit servir de référence.
FILENAME est le chemin d'accès au fichier dont le contexte doit être modifié.
Vous pouvez également modifier uniquement une partie du contexte de sécurité. La syntaxe générale de la commande chcon
est la suivante :
#
chconCONTEXT_OPTIONCONTEXT_PARTFILENAME
Les options et arguments ont la signification suivante :
En fonction de la partie du contexte, CONTEXT_OPTION peut être l'un des éléments suivants :
-u
resp--user
Indique qu'un contexte utilisateur SELinux sera modifié dans le fichier fourni :
#
chcon -u system_u logind.conf-r
resp--role
Seule la partie role (rôle) sera modifiée dans le contexte du fichier fourni :
#
chcon -r object_r logind.conf-t
resp--type
Seule la partie type (type) sera modifiée dans le contexte du fichier fourni :
#
chcon -t etc_t logind.conf-l
resp--range
Seule la partie range (plage) du contexte de sécurité sera modifiée :
#
chcon -l s0 logind.conf
CONTEXT_PART est la valeur spécifique du contexte de sécurité à définir.
FILENAME est un chemin d'accès au fichier dont le contexte sera modifié.
chcon
sur des liens symboliques
Par défaut, lorsque vous modifiez le contexte de sécurité d'un lien symbolique, le contexte du lien cible est modifié et le contexte du lien symbolique n'est pas modifié. Pour forcer chcon
à modifier le contexte du lien symbolique et non de la cible du lien, utilisez l'option --no-dereference
ci-dessous :
#
chcon --no-dereference -u system_u -t etc_t network.conf
Vous pouvez modifier le contexte de tous les fichiers d'un répertoire à l'aide de l'option récursive :
#
chcon --recursive system_u:object_r:httpd_config_t:s0 conf.d
7.3 Commandes getenforce
et setenforce
#
La commande getenforce
renvoie le mode SELinux actuel : Enforcing
, Permissive
ou Disabled
.
#
getenforce
Permissive
La commande setenforce
change temporairement le mode SELinux en mode d'application ou permissif. Vous ne pouvez pas utiliser cette commande pour désactiver SELinux. N'oubliez pas que la modification ne reste active que jusqu'au prochain redémarrage. Pour modifier l'état de façon permanente, lisez la description de la Section 3.1, « Modification du mode SELinux ».
#
setenforceMODE_ID
où MODE_ID est 0 pour le mode permissive
ou 1 pour le mode enforced
.
7.4 Script fixfiles
#
Le script vous permet d'effectuer la tâche suivante avec le contexte de sécurité :
Vérifier si le contexte est correct
Modifier les étiquettes de contexte de fichier incorrectes
Renommer votre système si vous avez ajouté une nouvelle stratégie
La syntaxe du script est la suivante :
#
fixfiles [OPTIONS] ARGUMENT
où :
OPTIONS peut être l'une des commandes suivantes :
-
-l
LOGFILE Enregistre la sortie dans le fichier fourni.
-
-o
OUTPUT_FILE Enregistre les noms de tous les fichiers dont le contexte de fichier diffère de celui par défaut dans le fichier de sortie fourni.
-
-F
Force une réinitialisation du contexte.
-
ARGUMENT peut être l'une des commandes suivantes :
-
check
Affiche le contexte du fichier précédent et du fichier actuel pour une étiquette incorrecte sans apporter de modifications.
-
relabel
Réétiquette les contextes de fichier incorrects en fonction de la stratégie actuellement chargée.
-
restore
Restaure les valeurs par défaut des contextes de fichier incorrects.
-
verify
Dresse une liste de tous les fichiers dont les étiquettes de contexte de fichier sont incorrectes sans apporter de modifications.
-
7.5 Commande semanage
#
La commande semanage
peut être utilisée pour configurer des parties de la stratégie sans devoir recompiler la stratégie à partir des sources. La commande vous permet d'effectuer les tâches suivantes :
Gérer les attributs booléens à l'aide de l'argument
boolean
. Pour plus d'informations concernant les attributs booléens, reportez-vous à la section Section 6.1, « Utilisation d'attributs booléens ».Ajuster le contexte des fichiers à l'aide de l'argument
fcontext
.Gérer les assignations d'utilisateurs à l'aide de l'argument
login
.Gérer les utilisateurs SELinux à l'aide de l'argument
user
.Gérer les modules de stratégie SELinux à l'aide de l'argument
module
.
La syntaxe générale de la commande se présente comme suit :
#
semanageARGUMENTOPTIONS [OBJECT_NAME]
où :
ARGUMENT est l'un des opérateurs suivants :
login
,user
,fcontext
,boolean
,module
.OPTIONS dépend de l'argument ARGUMENT fourni. Ces options sont décrites dans la rubrique Options courantes.
OBJECT_NAME en fonction de l'argument ARGUMENT fourni, il peut s'agir d'un nom de connexion, d'un nom de module, d'un nom de fichier ou d'un utilisateur SELinux.
-a
,--add
Ajoute un objet fourni.
-h
,--help
Affiche l'aide de la commande.
- --extract
Affiche les commandes utilisées pour modifier le système (attributs booléens, contexte de fichier, etc.).
-l
,--list
Dresse la liste de tous les objets.
-m
,--modify
Modifie l'objet fourni.
-n
,--noheading
Modifie la sortie de l'opération établissant la liste en omettant les titres.
-s
,--seuser
Spécifie l'utilisateur SELinux.
D'autres options sont spécifiques à des commandes semanage
particulières et sont décrites dans les sections correspondantes.
7.5.1 Commande semanage fcontext
#
La commande semanage fcontext
vous permet d'effectuer les tâches suivantes :
Demander les définitions des contextes de fichiers
Ajouter des contextes aux fichiers
Ajouter vos propres règles
Les modifications apportées au contexte de fichier à l'aide de la commande semanage
fcontext
ne nécessitent pas de modification ni de recompilation de la stratégie.
En plus des options courantes décrites dans la rubrique Options courantes, la commande semanage
fcontext
utilise les options suivantes :
-e
,--equal
Cette option vous permet d'utiliser le contexte du chemin d'accès fourni pour étiqueter les fichiers dans un autre répertoire (chemin cible fourni). Par exemple, vous voulez assigner le même contexte que
/home
à un autre répertoire privé/export/home
. Si vous utilisez cette option, vous devez fournir les chemins source cible :#
semanage fcontext -a -e /home /export/home-f
,--ftype
Spécifiez un type de fichier. Utilisez l'une des valeurs suivantes :
a
: tous les fichiers. Il s'agit aussi de la valeur par défautb
: un périphérique de blocc
: un périphérique de caractèresd
: un répertoiref
: fichiers normauxl
: un lien symboliquep
: un canal nommés
: un socket
7.5.2 Commande semanage login
#
La commande semanage login
vous permet d'effectuer les tâches suivantes :
Assignation d'utilisateurs Linux à un utilisateur SELinux spécifique. Par exemple, pour assigner l'utilisateur Linux tux à l'utilisateur
sysadm_u
exécutez la commande :#
semanage login -a -s sysadm_u tux
Assignation d'un groupe d'utilisateurs Linux à un utilisateur SELinux spécifique. Par exemple, pour assigner les utilisateurs du groupe writers (utilisateurs disposant de droits en écriture) à l'utilisateur
user_u
, exécutez la commande :#
semanage login -a -s user_u %writers
Le groupe est ensuite répertorié dans la sortie de
semanage login -l
, précédé du caractère %.N'oubliez pas que le groupe d'utilisateurs doit être primaire, car l'assignation d'utilisateurs SELinux à des groupes supplémentaires peut entraîner des assignations incompatibles.
#
semanage login -m -s staff_u %writers
Assignation d'utilisateurs Linux à une plage de sécurité SELinux MLS/MCS spécifique.
Modification de l'assignation déjà créée. Pour ce faire, remplacez simplement l'option
-a
par-m
dans les commandes précédentes.Définition de l'utilisateur SELinux par défaut pour les nouveaux utilisateurs Linux. Par défaut, l'utilisateur SELinux est habituellement
unconfined_u
. Pour modifier la valeur surstaff_u
, exécutez la commande :#
semanage login -m -s staff_u __default__
7.5.3 Commande semanage boolean
#
La commande semanage boolean
permet de contrôler les attributs booléens dans la stratégie SELinux.
Le synopsis de la commande se présente comme suit :
semanage boolean [-h] [-n] [ --extract | --deleteall | --list [-C] | --modify ( --on | --off | -1 | -0 ) boolean ]
En plus des options courantes, vous pouvez utiliser les options spécifiques suivantes dans la commande semanage boolean
:
- --list -C
Permet d'afficher une liste des modifications locales apportées aux attributs booléens.
- -m --on | -1
Permet d'activer l'attribut booléen fourni.
- -m --off | - 0
Permet de désactiver l'attribut booléen fourni.
- -D, --deletall
Permet de supprimer toutes les modifications locales apportées aux attributs booléens.
L'utilisation la plus courante de la commande consiste à activer ou à désactiver un attribut booléen spécifique. Par exemple, pour activer l'attribut booléen authlogin_yubikey
, exécutez :
#
semanage boolean -m on authlogin_yubikey
7.5.4 Commande semanage user
#
La commande semanage user
contrôle l'assignation entre l'utilisateur SELinux, les rôles et les niveaux MLS/MCS.
En plus des options courantes décrites dans la rubrique Options courantes, la commande semanage
use
utilise les options suivantes :
- -R [ROLES], --roles [ROLES]
Liste des rôles SELinux. Vous pouvez placer plusieurs rôles entre guillemets et les séparer par des espaces ou utiliser plusieurs fois
-R
.
Cette commande vous permet d'effectuer les tâches suivantes :
Dresser la liste de l'assignation des utilisateurs SELinux aux rôles en exécutant la commande :
#
semanage user -l
Modifier les rôles assignés à l'utilisateur SELinux
user_u
:#
semanage user -m -R "system_r unconfined_r user_r"
Assigner à l'utilisateur
admin_u
le rôlestaff_r
et une catégories0
:#
semanage user -a -R "staff_r -r s0 admin_u
Créer un nouvel utilisateur SELinux, par exemple,
admin_u
avec le rôlestaff_r
. Vous devez également définir le préfixe d'étiquetage pour cet utilisateur à l'aide de l'option-P
:#
semanage user -a -R "staff_r" -P admin admin_u
7.5.5 Commande semanage module
#
La commande semanage module
peut installer, supprimer, désactiver ou activer des modules de stratégie SELinux.
En plus des options courantes décrites dans la rubrique Options courantes, la commande semanage
fcontext
utilise les options suivantes :
-d
,--disable
Pour désactiver le module de stratégie SELinux fourni :
#
semanage module --disable MODULE_NAME
-e
,--enable
Pour activer le module de stratégie SELinux fourni :
#
semanage module --enable MODULE_NAME
7.6 Commande sestatus
#
La commande sestatus
obtient l'état d'un système sur lequel SELinux est exécuté.
La syntaxe générique de la commande est la suivante :
sestatus [OPTION]
Lorsqu'elle est exécutée sans options ni arguments, la commande génère les informations suivantes :
#
sestatus
SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: enforcing Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Memory protection checking: requested (insecure) Max kernel policy version: 33
La commande peut accepter les options suivantes :
- -b
Affiche l'état des attributs booléens sur le système.
- -v
Affiche le contexte de sécurité des fichiers et des processus répertoriés dans le fichier
/etc/sestatus.conf
.
8 Mentions légales #
Copyright © 2006–2025 SUSE LLC et contributeurs. Tous droits réservés.
Il est autorisé de copier, distribuer et/ou modifier ce document conformément aux conditions de la licence de documentation libre GNU version 1.2 ou (à votre discrétion) 1.3, avec la section permanente qu'est cette mention de copyright et la licence. Une copie de la version de licence 1.2 est incluse dans la section intitulée « Licence de documentation libre GNU ».
Pour les marques commerciales SUSE, consultez le site Web https://www.suse.com/company/legal/. Toutes les autres marques de fabricants tiers sont la propriété de leur détenteur respectif. Les symboles de marque (®, ™, etc.) désignent des marques commerciales de SUSE et de ses sociétés affiliées. Des astérisques (*) désignent des marques commerciales de fabricants tiers.
Toutes les informations de cet ouvrage ont été regroupées avec le plus grand soin. Cela ne garantit cependant pas sa complète exactitude. Ni SUSE LLC, ni les sociétés affiliées, ni les auteurs, ni les traducteurs ne peuvent être tenus responsables des erreurs possibles ou des conséquences qu'elles peuvent entraîner.