Je vérifiais la unshare
commande et selon sa page de manuel,
unshare - run program with some namespaces unshared from parent
Je vois également un type d'espace de noms répertorié comme,
mount namespace
mounting and unmounting filesystems will not affect rest of the system.
Quel est exactement le but de cet espace de noms de montage ? J'essaie de comprendre ce concept à l'aide d'un exemple.
Réponses:
L'exécution
unshare -m
donne au processus appelant une copie privée de son espace de noms de montage et dissocie également les attributs du système de fichiers afin qu'il ne partage plus son répertoire racine, son répertoire actuel ou ses attributs umask avec aucun autre processus.Alors, que dit le paragraphe ci-dessus? Essayons de comprendre à l'aide d'un exemple simple.
Terminal 1:
Je fais les commandes ci-dessous dans le premier terminal.
La dernière commande me donne la sortie comme,
tmpfs /tmp/tmp.7KtrAsd9lx tmpfs rw,relatime,size=1024k 0 0
Maintenant, j'ai également fait les commandes suivantes.
La sortie de la
ls
commande est,Alors, quel est le gros problème en faisant tout cela? Pourquoi devrais-je le faire?
J'ouvre maintenant un autre terminal ( terminal 2 ) et exécute les commandes ci-dessous.
La sortie est comme ci-dessous.
Les fichiers
hello
ethelloagain
ne sont pas visibles et je me suis même connecté en tant que root pour vérifier ces fichiers. L'avantage est donc que cette fonctionnalité nous permet de créer un système de fichiers temporaire privé que même les autres processus appartenant à la racine ne peuvent pas voir ou parcourir.Depuis la page de manuel de
unshare
,La mémoire utilisée pour l'espace de noms est VFS qui provient du noyau. Et - si nous le configurons en premier lieu - nous pouvons créer des environnements virtuels entiers dans lesquels nous sommes l'utilisateur root sans autorisations root.
Les références:
L'exemple est encadré à l'aide des détails de ce billet de blog . De plus, les citations de cette réponse proviennent de cette merveilleuse explication de Mike . Une autre lecture merveilleuse à ce sujet peut être trouvée dans la réponse d' ici .
la source
this feature makes it possible for us to create a private temporary filesystem that even other root-owned processes cannot see or browse through.
Et par rapport àchroot
, leschroot
fichiers sont visibles par les autres. C'est incroyable, et cette phrase devrait probablement être comme en haut de la réponse. + 1ed.nsenter
vous pouvez entrer l'espace de noms et afficher les fichiers temporaires. En supposant qu'un seul non-partage (celui qui possède le tempdir), alorssudo nsenter -t $(pgrep -P $(ps aux | grep unshare | grep -v grep | awk '{print $2}')) -m -p
permettra au contenu d'être visualiséSi vous avez installé bubblewrap sur votre système, vous pouvez le faire facilement en une seule étape:
Dans l'exemple ci-dessus, bash interne aura sa propre vue sur / tmp.
Solution inspirée de la réponse de @ Ramesh - merci pour cela!
la source