Outils pour utilisateurs

Outils du site


tech:notes_linux_kernel_namespaces_espace_de_noms

Ceci est une ancienne révision du document !


Notes Linux kernel namespaces espace de noms

Brouillon

Voir :

yum install util-linux

Voir :

  • unshare
  • share
  • runc
  • /proc/self/uid_map
jb@vmdeb1:~$ sudo unshare --fork --pid --mount-proc bash
root@vmdeb1:/home/jb# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 17:18 pts/5    00:00:00 bash
root         2     1  0 17:18 pts/5    00:00:00 ps -ef
unshare -m -u -i -n -p -f --mount-proc bash
sudo $(which runc) run test1
 
ip netns
lsns
nsenter

paramètre noyau user_namespace.enable=1

Red Hat / CentOS

#grubby --args="namespace.unpriv_enable=1 user_namespace.enable=1" --update-kernel="$(grubby --default-kernel)"
grubby --args="user_namespace.enable=1" --update-kernel=/boot/vmlinuz-$(uname -r)
cat /proc/sys/user/max_user_namespaces

Docker userns-remap namespace

userns-remap=utilisateur

/root/daemon.json

{
  "userns-remap": "USER"
}

“USER” doit être un utilisateur valide du système hôte (présent dans /etc/passwd)

Pour /etc/subuid et /etc/subgid la syntaxe est la suivante :

user:start_uid:uid_count

La valeur du count doit logiquement être supérieur ou égale à l'UID max du conteneur (normalement l'utilisateur nobody)

docker run -ti --rm alpine cat /etc/passwd |cut -d: -f 3 |sort -n |tail -1

Autres /etc/subuid

plop:1000:1
plop:100000:65536

/etc/subgid

plop:982:1
plop:100000:65536

La 1ere ligne : tous les fichiers crées par root appartiendrons à l'UID 1000 et au GID 982

/etc/subuid and /etc/subgid files can then be edited or changed with usermod

Exemple

sudo usermod --add-subuids 200000-265535 --add-subgids 200000-265535 demisto

Voir podman system migrate

kernel.unprivileged_userns_clone

echo kernel.unprivileged_userns_clone = 1 | sudo tee /etc/sysctl.d/00-local-userns.conf

userns-remap=default dockremap

/root/daemon.json

{
  "userns-remap": "default"
}

Si vous définisez le champ userns-remap à default Docker créera lui-même l’utilisateur dockremap sur l'hôte.

/etc/passwd

dockremap:x:994:990::/home/dockremap:/bin/false

/etc/subuid

dockremap:10000:65536

/etc/subgid

dockremap:10000:65536

Exemple process Dockers

$ sudo lsns -t pid
        NS TYPE NPROCS   PID USER             COMMAND
4026531836 pid     128     1 root             /lib/systemd/systemd --system --deserialize 21
4026532223 pid       8   359 systemd-timesync nginx: master process /usr/sbin/nginx -g daemon off; -c /opt/etc/nginx/nginx.conf
4026532287 pid       2 21609 root             /filebrowser --port 80 --database /data/database.db --root /srv
4026532298 pid       1 20919 root             /portainer
4026532410 pid       3 31582 root             tini -g -- start-notebook.sh --NotebookApp.token='' --NotebookApp.password=''
4026532477 pid       2  1717 root             /bin/sh

$ pstree -p 1717
sh(1717)───sshd(14400)

$ lsns 4026532477
ps -e -o pidns,pid,cmd  | grep -v ^$(ps -p 1 -o pidns --no-headers)
                                                                                                                                           
# lsns -t pid
        NS TYPE NPROCS   PID USER COMMAND
4026531836 pid     515     1 root /sbin/init
4026533558 pid       6  8200 root /usr/bin/python /usr/bin/supervisord -c /etc/supervisor/supervisord.conf
4026533561 pid       6  8202 root /usr/bin/python /usr/bin/supervisord -c /etc/supervisor/supervisord.conf
4026533565 pid       6  8219 root /usr/bin/python /usr/bin/supervisord -c /etc/supervisor/supervisord.conf
# lsns 4026533558 
  PID  PPID USER       COMMAND
 8200  8131 root       /usr/bin/python /usr/bin/supervisord -c /etc/supervisor/supervisord.conf
 8330  8200 root       |-/usr/bin/python /usr/bin/pidproxy /var/run/varnish.pid /opt/varnishwrapper.sh start
 8335  8330 root       | `-/bin/bash /opt/varnishwrapper.sh start
 8342  8335 syslog     |   `-/usr/sbin/varnishd -F -a :8022 -n varnish_plop -P /var/run/varnish.pid -j unix,user=varnish -T localhost:8123 -f /etc/varnish/instances/plop/main.vcl -S /et
 8398  8342 messagebus |     `-/usr/sbin/varnishd -F -a :8022 -n varnish_plop -P /var/run/varnish.pid -j unix,user=varnish -T localhost:8123 -f /etc/varnish/instances/plop/main.vcl -S /
 8331  8200 root       `-/usr/bin/broadcaster -cfg /etc/varnish/instances/plop/nodes.conf -port 8822 -mgmt-port 8722 -server-keep-alive 60m0s -ttl 10m0s -pid /var/run/broadcaster.pid

Voir aussi la commande systemd-cgtop

Réseau

podman unshare --rootless-netns ip addr

FS Mount

Autres

dockerd --userns-remap="testuser:testuser"

To disable user namespaces for a specific container, add the --userns=host flag

ls -l /var/lib/docker/
tech/notes_linux_kernel_namespaces_espace_de_noms.1759322672.txt.gz · Dernière modification : de Jean-Baptiste

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki