Provided by: manpages-fr_4.10.0-1_all bug

NOM

       unshare – Exécuter un programme dans de nouveaux espaces de noms

SYNOPSIS

       unshare [options] [programme [arguments]]

DESCRIPTION

       La  commande  unshare  crée  de nouveaux espaces de noms (comme précisé par les options de
       ligne de commande décrites ci-après) puis exécute le programme indiqué. Si programme n’est
       pas fourni, alors ${SHELL} est exécuté (par défaut : /bin/sh).

       Par  défaut, un nouvel espace de noms subsiste aussi longtemps qu’il possède des processus
       membres. Un nouvel espace de noms peut être rendu persistant, même s’il ne possède pas  de
       membres,  par  montage lié (bind) des fichiers /proc/pid/ns/type vers un chemin de système
       de fichiers. Un espace de noms qui a été rendu persistant de cette façon peut ensuite être
       entré  avec  nsenter(1)  même  après que le programme soit terminé (excepté les espaces de
       noms PID où l’exécution permanente de processus  init  est  nécessaire).  Une  fois  qu’un
       espace  de  noms  n’est plus nécessaire, il peut être rendu temporaire avec umount(8) pour
       supprimer le montage lié. Consulter la section EXEMPLES pour plus de détails.

       unshare    depuis    la     version 2.36     d’util-linux     utilise     les     fichiers
       /proc/[pid]/ns/pid_for_children  et  /proc/[pid]/ns/time_for_children  pour  des espace de
       noms persistants PID et temps. Cette modification nécessite un noyau Linux version 4.17 ou
       plus récent.

       Les types d’espace de noms suivants peuvent être créés avec unshare :

       espace de noms de montage
              Le  montage  et  démontage  de  systèmes  de  fichiers  n'affectera pas le reste du
              système, sauf pour les systèmes de fichiers explicitement  marqués  comme  partagés
              (avec mount --make-shared, consultez /proc/self/mountinfo ou findmnt -o+PROPAGATION
              pour   les   drapeaux   shared).   Pour   de   plus   amples   détails,   consulter
              mount_namespaces(7) et l’explication du drapeau CLONE_NEWNS dans clone(2).

              unshare,  depuis  util-linux  version 2.27,  règle automatiquement la propagation à
              private dans un nouvel espace de  noms  montage  pour  assurer  que  celui-ci  soit
              vraiment  isolé.  Il est possible de désactiver cette caractéristique avec l’option
              --propagation unchanged. Remarquez que private est le comportement  par  défaut  du
              noyau.

       espace de noms UTS
              La  configuration  du  nom  d'hôte ou du nom de domaine n'affectera pas le reste du
              système. Pour de plus amples détails, consulter namespaces(7).

       espace de noms IPC
              Le processus aura un nom d'espace indépendant pour  les  files  de  messages  POSIX
              ainsi  que  pour  les files de messages de System V, les ensembles de sémaphores et
              les  segments  de  mémoire  partagée.  Pour  de  plus  amples  détails,   consulter
              ipc_namespaces(7).

       espace de noms réseau
              Le  processus  aura des piles IPv4 et IPv6, des tables de routage IP, des règles de
              pare-feu,  les  arborescences  de  répertoires  /proc/net  et  /sys/class/net,  des
              sockets, etc., indépendantes. Pour de plus amples détails, consulter namespaces(7).

       espace de noms PID
              Les enfants auront un ensemble distinct de mises en correspondance de PID à traiter
              de celui de leur parent. Pour de plus amples détails, consulter pid_namespaces(7).

       espace de noms de groupe de contrôle
              Le processus aura  une  vue  virtualisée  de  /proc/self/cgroup,  et  les  nouveaux
              montages  de  groupe  de  contrôle  auront  pour racine celle du groupe de contrôle
              d’espace de noms. Pour de plus amples détails, consulter cgroup_namespaces(7).

       espace de noms utilisateur
              Le processus aura un ensemble propre d’UID, de GID et de capacités.  Pour  de  plus
              amples détails, consulter user_namespaces(7).

       espace de noms temps
              Le  processus peut avoir une vue distincte de CLOCK_MONOTONIC ou CLOCK_BOOTTIME qui
              peut être modifiée avec /proc/self/timens_offsets. Pour  de  plus  amples  détails,
              consulter, see time_namespaces(7).

OPTIONS

       -i, --ipc[=fichier]
              Isoler  l’espace  de  noms  IPC.  Si  fichier  est indiqué, alors un espace de noms
              persistant est créé par un montage lié.

       -m, --mount[=fichier]
              Isoler l’espace de noms montage. Si fichier est indiqué, alors un  espace  de  noms
              persistant  est  créé par un montage lié. Remarquez que fichier doit être situé sur
              le système de fichiers avec le drapeau de propagation  n’est  pas  shared  (ou  une
              erreur  survient).  Utilisez  la commande findmnt -o+PROPAGATION si vous n’êtes pas
              sûr du réglage en cours. Consulter les exemples ci-dessous.

       -n, --net[=fichier]
              Isoler l’espace de noms réseau. Si fichier est indiqué, alors  un  espace  de  noms
              persistant est créé par un montage lié.

       -p, --pid[=fichier]
              Isoler  l'espace  de  noms  PID.  Si  fichier  est indiqué, alors un espace de noms
              persistant est créé par un montage lié.  (La  création  d’un  espace  de  noms  PID
              persistant échouera si l’option --fork n’est pas aussi précisée.)

              Consulter aussi les options --fork et --mount-proc.

       -u, --uts[=fichier]
              Isoler  l’espace  de  noms  UTS.  Si  fichier  est indiqué, alors un espace de noms
              persistant est créé par un montage lié.

       -U, --user[=fichier]
              Isoler l’espace de noms utilisateur. Si fichier est indiqué,  alors  un  espace  de
              noms persistant est créé par un montage lié.

       -C, --cgroup[=fichier]
              Isoler l’espace de noms groupe de contrôle. Si fichier est indiqué, alors un espace
              de noms persistant est créé par un montage lié.

       -T, --time[=fichier]
              Isoler l'espace de noms temps. Si fichier est indiqué,  alors  un  espace  de  noms
              persistant  est  créé  par  un  montage  lié. Les options --monotonic et --boottime
              peuvent être utilisées pour les décalages  correspondants  dans  l’espace  de  noms
              temps.

       -f, --fork
              Fourcher  le  programme  indiqué  comme  processus  enfant de unshare plutôt que de
              l’exécuter directement. Cela est utile lors de la création d’un  nouvel  espace  de
              noms  PID.  Il  est  à  remarquer  que  quand unshare est en attente d’un processus
              enfant, alors il ignore SIGINT et SIGTERM et ne transmet aucun signal  à  l’enfant.
              Cela est nécessaire pour envoyer des signaux au processus enfant.

       --keep-caps
              Quand  l’option  --user  est  fournie,  garantir  que  les capacités octroyées dans
              l’espace de noms utilisateur soient conservées dans le processus enfant.

       --kill-child[=nom_de_signal]
              À la fin de unshare, envoyer un nom_signal au processus enfant forké. Combiné  avec
              --pid,  cela  permet  une extinction aisée et fiable de l’arbre entier de processus
              sous unshare. S’il n’est pas donné, nom_signal est par défaut SIGKILL. Cela suppose
              --fork.

       --mount-proc[=point_de_montage]
              Juste  avant  d’exécuter  le  programme,  monter  le  système  de fichiers proc sur
              point_de_montage (/proc par défaut). C’est utile lors de la  création  d’un  nouvel
              espace  de  noms  PID.  Cela  implique aussi la création d’un nouvel espace de noms
              montage, sinon le montage de /proc perturberait les  programmes  existants  sur  le
              système.  Le  nouveau  système de fichiers proc est explicitement monté comme privé
              (par MS_PRIVATE|MS_REC).

       --map-user=uid|nom
              Exécuter le programme seulement après que les ID effectifs des utilisateurs actuels
              soient  mappés  à  uid.  Si  cette  option est indiquée plusieurs fois, la dernière
              occurrence prévaudra. Cette option implique --user.

       --map-group=gid|nom
              Exécuter le programme seulement après que les  ID  effectifs  des  groupes  actuels
              soient  mappés  à  gid.  Si  cette  option est indiquée plusieurs fois, la dernière
              occurrence prévaudra. Cette option suppose --setgroups=deny et --user.

       -r, --map-root-user
              Exécuter le programme seulement après que  les  identifiants  d’utilisateur  et  de
              groupe   effectifs   ont  été  mis  en  correspondance  avec  les  UID  et  GID  du
              superutilisateur dans l’espace de noms utilisateur nouvellement créé.  Cela  permet
              d’obtenir  facilement  les  capacités  nécessaires  pour  gérer  divers aspects des
              espaces de noms  nouvellement  créés  (comme  la  configuration  d’interfaces  dans
              l’espace  de  noms  réseau  ou le montage des systèmes de fichiers dans l’espace de
              noms montage) même lors d’une  exécution  ordinaire.  En  tant  que  fonctionnalité
              surtout  pratique, elle ne permet pas des cas d’utilisation plus sophistiqués comme
              la mise en correspondance de plusieurs  intervalles  d’UID  et  GID.  Cette  option
              implique  --setgroups=deny  et  --user. Cette option est équivalente à --map-user=0
              --map-group=0.

       -c, --map-current-user
              Exécuter le programme seulement après que les ID effectifs des utilisateurs et  des
              groupes actuels sont mappés aux mêmes UID et GID dans l’espace de noms nouvellement
              créé. Cette option suppose --setgroups=deny et --user. Cette option est équivalente
              à --map-user=$(id -ru) --map-group=$(id -rg).

       --propagation private|shared|slave|unchanged
              De  manière  récursive,  régler le drapeau de propagation de montage dans le nouvel
              espace de noms montage. Le comportement par défaut est de régler la  propagation  à
              private.  Il  est  possible  de  désactiver  cette  caractéristique avec l’argument
              unchanged. Cette option est ignorée silencieusement quand l’espace de noms  montage
              (--mount) n’est pas nécessaire.

       --setgroups allow|deny
              Permettre  ou  interdire  l’appel  système  setgroups(2)  dans  les espaces de noms
              utilisateur.

              Pour pouvoir appeler setgroups(2),  le  processus  appelant  doit  au  moins  avoir
              CAP_SETGID.  Mais depuis Linux 3.19, une restriction supplémentaire est appliquée :
              le noyau accorde la permission  à  l’appel  setgroups(2)  seulement  après  que  le
              mappage  de GID (/proc/pid/gid_map) a été réglé. La carte de correspondances de GID
              peut  être  écrite  par  le  superutilisateur   quand   setgroups(2)   est   activé
              (c'est-à-dire,  allow,  le  comportement  par défaut), et la carte de GID peut être
              écrite par  des  processus  normaux  quand  setgroups(2)  est  désactivé  de  façon
              permanente (avec deny).

       -R, --root=répertoire
              Exécuter la commande avec le répertoire racine défini à répertoire.

       -w, --wd=répertoire
              Changer le répertoire de travail à répertoire.

       -S, --setuid UID
              Définir l’identifiant d’utilisateur qui sera utilisé dans l’espace de noms saisi.

       -G, --setgid GID
              Définir  l’identifiant  de  groupe  qui sera utilisé dans l’espace de noms saisi et
              abandonner les autres groupes.

       --monotonic décalage
              Régler le décalage de CLOCK_MONOTONIC qui sera utilisé dans l’espace de noms  temps
              saisi.  Cette  option  nécessite  de  ne plus partager un espace de noms temps avec
              --time.

       --boottime décalage
              Régler le décalage de CLOCK_BOOTTIME qui sera utilisé dans l’espace de  noms  temps
              saisi.  Cette  option  nécessite  de  ne plus partager un espace de noms temps avec
              --time.

       -V, --version
              Afficher le nom et la version du logiciel et quitter.

       -h, --help
              Afficher l’aide-mémoire puis quitter.

NOTES

       Les systèmes de fichiers proc et  sysfs  montés  comme  racine  dans  un  espace  de  noms
       utilisateur  doivent être restreints de façon qu’un utilisateur moins privilégié ne puisse
       avoir davantage d’accès aux fichiers sensibles qu’un utilisateur  plus  privilégié  aurait
       rendus  indisponibles.  En  bref,  la règle pour proc et sysfs est aussi près que possible
       d’un montage lié.

EXEMPLES

       La commande suivante crée un espace de noms PID, en utilisant  --fork  pour  garantir  que
       l’exécution  de  la  commande  est réalisée dans un processus enfant qui (étant le premier
       processus dans l’espace de noms) a le PID 1. L’option --mount-proc assure  que  le  nouvel
       espace  de  noms montage est aussi créé simultanément et qu’un nouveau système de fichiers
       proc(5) est monté contenant une information correspondant au nouvel espace  de  noms  PID.
       Quand  la  commande readlink se termine, les nouveaux espaces de noms sont automatiquement
       détruits.

           # unshare --fork --pid --mount-proc readlink /proc/self
           1

       En tant qu’utilisateur ordinaire, créer un nouvel espace de  noms  où  les  accréditations
       sont mappées à l’ID racine à l’intérieur de l’espace de noms :

           $ id -u; id -g
           1000
           1000
           $ unshare --user --map-root-user \
           sh -c 'whoami; cat /proc/self/uid_map /proc/self/gid_map'
           root
                    0       1000          1
                    0       1000          1

       La  première  des  commandes  suivantes  crée  un  nouvel espace de noms UTS persistant et
       modifie le nom d’hôte tel que vu dans cet espace de noms. L’espace de noms est alors saisi
       avec  nsenter(1)  dans  le  but  d’afficher  le nom d’hôte modifié. Cette étape montre que
       l’espace de noms UTS continue d’exister même si l’espace de  noms  n’a  pas  de  processus
       membre  après  que  la commande unshare ait terminé. L’espace de noms est alors détruit en
       retirant le montage lié.

           # touch /root/uts-ns
           # unshare --uts=/root/uts-ns hostname TOTO
           # nsenter --uts=/root/uts-ns hostname
           TOTO
           # umount /root/uts-ns

       Les commandes suivantes établissent un espace de noms montage permanent référencé  par  le
       montage  lié /root/namespaces/mnt. Dans le but d’assurer que la création de ce montage lié
       soit une réussite, le répertoire parent (/root/namespaces) est transformé en  montage  lié
       dont le type de propagation n’est pas shared.

           # mount --bind /root/namespaces /root/namespaces
           # mount --make-private /root/namespaces
           # touch /root/namespaces/mnt
           # unshare --mount=/root/namespaces/mnt

       Les  commandes  suivantes  montrent  l’utilisation  de  l’option  --kill-child  lors de la
       création d’espace de noms PID, dans le but d’assurer que lorsque unshare est tué, tous les
       autres processus dans l’espace de noms PID soient tués.

           # set +m                # Ne pas imprimer les messages d’état de travaux
           # unshare --pid --fork --mount-proc --kill-child -- \
           bash --norc -c '(sleep 555 &) && (ps a &) && sleep 999' &
           [1] 53456
           #     PID TTY      STAT   TIME COMMAND
                 1 pts/3    S+     0:00 sleep 999
                 3 pts/3    S+     0:00 sleep 555
                 5 pts/3    R+     0:00 ps a

           # ps h -o 'comm' $! # Montrer que le dorsal de travail est unshare(1)
           unshare
           # kill $! # Tuer unshare(1)
           # pidof sleep

       La commande pidof n’affiche rien car le processus sleep a été tué. Plus précisément, quand
       le processus sleep ayant le PID 1 dans l’espace de noms (c'est-à-dire, le  processus  init
       de l’espace de noms) a été tué, cela a entrainé que tous les autres processus soient tués.
       En revanche, une série de commandes similaires où l’option --kill-child n’est pas utilisée
       montre  que  quand unshare se termine, les processus dans l’espace de noms PID ne sont pas
       tués :

           # unshare --pid --fork --mount-proc -- \
           bash --norc -c '(sleep 555 &) && (ps a &) && sleep 999' &
           [1] 53479
           #     PID TTY      STAT   TIME COMMAND
                 1 pts/3    S+     0:00 sleep 999
                 3 pts/3    S+     0:00 sleep 555
                 5 pts/3    R+     0:00 ps a

           # kill $!
           # pidof sleep
           53482 53480

       L’exemple suivant montre la création d’un espace de noms temps où  l’horloge  « boottime »
       est réglée à un point plusieurs années en arrière :

           # uptime -p             # Afficher le temps de fonctionnement
                                   # dans l’espace de noms temps initial
           up 21 hours, 30 minutes
           # unshare --time --fork --boottime 300000000 uptime -p
           up 9 years, 28 weeks, 1 day, 2 hours, 50 minutes

AUTEURS

       Mikhail Gusarov ⟨dottedmag@dottedmag.net⟩
       Karel Zak ⟨kzak@redhat.com

VOIR AUSSI

       clone(2), unshare(2), namespaces(7), mount(8)

DISPONIBILITÉ

       La   commande   unshare  fait  partie  du  paquet  util-linux,  elle  est  disponible  sur
       <https://www.kernel.org/pub/linux/utils/util-linux/>.

TRADUCTION

       La traduction française de cette  page  de  manuel  a  été  créée  par  Christophe  Blaess
       <ccb@club-internet.fr>,  Michel  Quercia <quercia AT cal DOT enst DOT fr>, Thierry Vignaud
       <tvignaud@mandriva.com>,   Frédéric   Delanoy   <delanoy_f@yahoo.com>,   Thierry   Vignaud
       <tvignaud@mandriva.com>,    Christophe   Sauthier   <christophe@sauthier.com>,   Sébastien
       Blanchet, Jérôme Perzyna <jperzyna@yahoo.fr>, Aymeric Nys  <aymeric  AT  nnx  POINT  com>,
       Alain  Portal  <aportal@univ-montp2.fr>,  Thomas  Huriaux <thomas.huriaux@gmail.com>, Yves
       Rütschlé <l10n@rutschle.net>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien
       Cristau   <jcristau@debian.org>,  Philippe  Piette  <foudre-blanche@skynet.be>,  Jean-Baka
       Domelevo-Entfellner <domelevo@gmail.com>, Nicolas Haller <nicolas@boiteameuh.org>, Sylvain
       Archenault <sylvain.archenault@laposte.net>, Valéry Perrin <valery.perrin.debian@free.fr>,
       Jade         Alglave         <jade.alglave@ens-lyon.org>,         Nicolas         François
       <nicolas.francois@centraliens.net>, Alexandre Kuoch <alex.kuoch@gmail.com>, Lyes Zemmouche
       <iliaas@hotmail.fr>,   Florentin    Duneau    <fduneau@gmail.com>,    Alexandre    Normand
       <aj.normand@free.fr> et David Prévot <david@tilapin.org>

       Cette  traduction  est  une  documentation libre ; veuillez vous reporter à la GNU General
       Public  License  version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   concernant   les
       conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un
       message à debian-l10n-french@lists.debian.org ⟨⟩.