Skip to content

gVisor unprivileged user can't access file in rootless mode #9918

@terenceli

Description

@terenceli

Description

While in rootless mode, the container UID is the same as the UID of running runsc, in the container we can't access the file belongs to the host UID.

I want to know how to achieve this. So that in rootless mode, the unprivileged user can access the host file with the same UID.

Steps to reproduce

using following OCI spec

`test@test-VirtualBox:~/test$ id

uid=1000(test) gid=1000(test) groups=1000(test),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),122(lpadmin),135(lxd),136(sambashare)

test@test-VirtualBox:~/test$ ./runsc -rootless -root /home/test -ignore-cgroups --network host run abc

touch /home/test/bb

touch: cannot touch '/home/test/bb': Permission denied

`

`{

"ociVersion": "1.0.0",

"process": {

    "user": {

        "uid": 1000,

        "gid": 1000

    },

    "args": [

        "sh"

    ],

    "env": [

        "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",

        "TERM=xterm"

    ],

    "cwd": "/",

    "capabilities": {

        "bounding": [

            "CAP_AUDIT_WRITE",

            "CAP_KILL",

            "CAP_NET_BIND_SERVICE"

        ],

        "effective": [

            "CAP_AUDIT_WRITE",

            "CAP_KILL",

            "CAP_NET_BIND_SERVICE"

        ],

        "inheritable": [

            "CAP_AUDIT_WRITE",

            "CAP_KILL",

            "CAP_NET_BIND_SERVICE"

        ],

        "permitted": [

            "CAP_AUDIT_WRITE",

            "CAP_KILL",

            "CAP_NET_BIND_SERVICE"

        ]

    },

    "rlimits": [

        {

            "type": "RLIMIT_NOFILE",

            "hard": 1024,

            "soft": 1024

        }

    ]

},

"root": {

    "path": "/",

    "readonly": true

},

"hostname": "runsc",

"mounts": [

    {

        "destination": "/proc",

        "type": "proc",

        "source": "proc"

    },

    {

        "destination": "/dev",

        "type": "tmpfs",

        "source": "tmpfs"

    },

    {

        "destination": "/sys",

        "type": "sysfs",

        "source": "sysfs",

        "options": [

            "nosuid",

            "noexec",

            "nodev",

            "ro"

        ]

    },

    {

            "destination":"/home/test",

            "type":"bind",

            "source":"/home/test",

            "options":[

                    "rbind",

                    "rw"

            ]

    }



],

"linux": {

    "namespaces": [

        {

            "type": "pid"

        },

        {

            "type": "network"

        },

        {

            "type": "ipc"

        },

        {

            "type": "uts"

        },

        {

            "type": "mount"

        }

    ]

}

}

`

runsc version

No response

docker version (if using docker)

No response

uname

No response

kubectl (if using Kubernetes)

No response

repo state (if built from source)

No response

runsc debug logs (if available)

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions