mirror of https://github.com/containers/podman.git
rootless cni add /usr/sbin to PATH if not present
The CNI plugins need access to iptables in $PATH. On debian /usr/sbin is not added to $PATH for rootless users. This will break rootless cni completely. To prevent breaking existing users add /usr/sbin to $PATH in podman if needed. Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
This commit is contained in:
parent
d83f49ef6b
commit
f230214db1
|
|
@ -411,6 +411,16 @@ func (r *Runtime) getRootlessCNINetNs(new bool) (*rootlessCNI, error) {
|
|||
}
|
||||
}
|
||||
|
||||
// The CNI plugins need access to iptables in $PATH. As it turns out debian doesn't put
|
||||
// /usr/sbin in $PATH for rootless users. This will break rootless cni completely.
|
||||
// We might break existing users and we cannot expect everyone to change their $PATH so
|
||||
// lets add /usr/sbin to $PATH ourselves.
|
||||
path = os.Getenv("PATH")
|
||||
if !strings.Contains(path, "/usr/sbin") {
|
||||
path = path + ":/usr/sbin"
|
||||
os.Setenv("PATH", path)
|
||||
}
|
||||
|
||||
rootlessCNINS = &rootlessCNI{
|
||||
ns: ns,
|
||||
dir: cniDir,
|
||||
|
|
|
|||
|
|
@ -209,4 +209,19 @@ load helpers
|
|||
run_podman rm -f $cid
|
||||
}
|
||||
|
||||
@test "podman rootless cni adds /usr/sbin to PATH" {
|
||||
is_rootless || skip "only meaningful for rootless"
|
||||
|
||||
local mynetname=testnet-$(random_string 10)
|
||||
run_podman network create $mynetname
|
||||
|
||||
# Test that rootless cni adds /usr/sbin to $PATH
|
||||
# iptables is located under /usr/sbin and is needed for the CNI plugins.
|
||||
# Debian doesn't add /usr/sbin to $PATH for rootless users so we have to add it.
|
||||
PATH=/usr/local/bin:/usr/bin run_podman run --rm --network $mynetname $IMAGE ip addr
|
||||
is "$output" ".*eth0.*" "Interface eth0 not found in ip addr output"
|
||||
|
||||
run_podman network rm -f $mynetname
|
||||
}
|
||||
|
||||
# vim: filetype=sh
|
||||
|
|
|
|||
Loading…
Reference in New Issue