When this option is used nsenter will fetch the parent user namespace from any namespace file descriptors available. It can be combined with existing `--user` option in which case the parent user namespace will be fetched from the user namespace and replace it. The usecase of this option is when a user namespace that owns the other type namespaces we want to switch to is not actually bound to any process. Without using ioctl it is impossible to acquire namespace file descriptor. For example, bubblewrap `bwrap` command creates unbinded user namespace when `--dev` option is used.
68 lines
1.2 KiB
Text
68 lines
1.2 KiB
Text
_nsenter_module()
|
|
{
|
|
local cur prev OPTS
|
|
COMPREPLY=()
|
|
cur="${COMP_WORDS[COMP_CWORD]}"
|
|
prev="${COMP_WORDS[COMP_CWORD-1]}"
|
|
case $prev in
|
|
'-S'|'--uid')
|
|
COMPREPLY=( follow $(compgen -W "uid" -- $cur) )
|
|
return 0
|
|
;;
|
|
'-G'|'--gid')
|
|
COMPREPLY=( follow $(compgen -W "gid" -- $cur) )
|
|
return 0
|
|
;;
|
|
'-t'|'--target')
|
|
local PIDS
|
|
PIDS=$(cd /proc && echo [0-9]*)
|
|
COMPREPLY=( $(compgen -W "$PIDS" -- $cur) )
|
|
return 0
|
|
;;
|
|
'-h'|'--help'|'-V'|'--version')
|
|
return 0
|
|
;;
|
|
esac
|
|
case $cur in
|
|
'=')
|
|
# FIXME: --root and --wd should use get only
|
|
# directories as compgen output. If $cur is
|
|
# overwrote the same way as below in case segment
|
|
# for $prev the command-line will get mangled.
|
|
cur=${cur#=}
|
|
;;
|
|
-*)
|
|
OPTS="
|
|
--all
|
|
--target
|
|
--mount=
|
|
--uts=
|
|
--ipc=
|
|
--net=
|
|
--pid=
|
|
--cgroup=
|
|
--user=
|
|
--user-parent
|
|
--time=
|
|
--setuid
|
|
--setgid
|
|
--keep-caps
|
|
--preserve-credentials
|
|
--root=
|
|
--wd=
|
|
--wdns=
|
|
--env
|
|
--no-fork
|
|
--help
|
|
--version
|
|
"
|
|
COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
|
|
return 0
|
|
;;
|
|
esac
|
|
local IFS=$'\n'
|
|
compopt -o filenames
|
|
COMPREPLY=( $(compgen -f -- $cur) )
|
|
return 0
|
|
}
|
|
complete -F _nsenter_module nsenter
|