Définit un espace de nom privé
pam_namespace définit un espace de nom privé pour une session avec répertoire poly-instancés. Un répertoire poly-instancié fournis une instance différente de lui-même basé sur le nom utilisateur, ou en utilisant SELinux, le nom d'utilisateur, contexte de sécurité ou les 2. Si un script exécutable /etc/security/namespace.init existe, il est utilisé pour initialiser l'instance du répertoire après qu'il ai été définis et monté dans le répertoire poly-instancié. Le script reçoit le chemin du répertoire poly-instancié, le chemin du répertoire instance, si le répertoire instance a été nouvellement crée (0 pour non, 1 pour oui), et le nom de l'utilisateur.
Le module dissocie l'espace de nom de session du parent. Un mount/umount est effectué dans l'espace de nom du parent.
/etc/security/namespace.conf spécifie quels répertoires sont poly-instanciés, comment ils sont poly-instanciés, comment l'instance sera nommé, et les utilisateurs pour qui la poly-instatiation sera effectuée.
Le format de /etc/security/namespace.conf:
polydir instance_prefix method list_of_uids
polydir est un chemin absolu du répertoire à poly-instancier. La chaîne $HOME est remplacée avec le home de l'utilisateur, et $USER par le nom d'utilisateur. Ce champs ne peut pas être vide
instance_prefix chaîne utilisée pour construire le chemin pour l'instanciation de polydir. En fonction de la méthode de poly-instanciation
method est la méthode utilisée pour la poly-instanciation. Ce champs ne peut pas être vide. Peut être:
user pour une poly-instaciation basé sur le nom d'utilisateur
level pour une poly-instanciation basé sur le niveau MLS sur processus et le nom d'utilisateur
context pour une poly-instanciation basé sur le contexte de sécurité du processus et le nom d'utilisateur
tmpfs pour monter le système de fichier tmpfs comme instance de répertoire
tmpdir pour créer un répertoire temporaire comme instance de répertoire qui est supprimé quand l'utilisateur ferme sa session
context et level sont disponible uniquement avec SELinux.
list_of_uids est une liste séparée par une virgule de noms d'utilisateurs pour qui la poly-instanciation n'est pas effectuée. Si ce champs est vide, s'effectue pour tous les utilisateurs si la liste est précédée par " ", la poly-instanciation est effectuée uniquement pour les utilisateurs dans la liste.
method peut aussi contenir les flags optionnels suivant:
create=mode,owner,group crée le répertoire poly-instancié. Les paramètres sont optionnels. Par défaut le mode est déterminé par umask, owner est l'utilisateur et group est le groupe de l'utilisateur.
iscript=path chemin du script d'init.
noinit Le script d'init ne sera pas exécuté
shared les répertoire instanciés pour les méthodes "context" et "level" ne contiendrons pas le nom d'utilisateur et seront partagés à tous les utilisateurs.
Le répertoire où les instances poly-instanciées sont créées, doit exister et doit avoir, par défaut, le mode 0000. Cela nécessite que le parent de l'instance soit de mode 0000 et puisse être écrasé avec l'option de ligne de commande ignore_instance_parent_mode
Avec les méthodes context et level, le contexte SELinux qui est utilisé est le contexte utilisé pour exécuter un nouveau processus comme obtenus par getexeccon. Ce contexte doit être définis par l'application appelante ou le module pam_selinux.so. Si ce contexte n'est pas définis la poly-instaciation sera basé uniquement sur le nom d'utilisateur.