Podman 내에서 퓨즈를 실행할 수 없습니다: 퓨저마운트: 설치 실패: 작업이 허용되지 않습니다.

Podman 내에서 퓨즈를 실행할 수 없습니다: 퓨저마운트: 설치 실패: 작업이 허용되지 않습니다.

sshfs예를 들어 일부 애플리케이션 이미지를 사용하거나 실행하는 등 내부에서 융합을 실행할 수 있는 podmod 컨테이너를 디자인하려고 합니다 .

하지만 오류가 발생합니다.

fusermount: mount failed: Operation not permitted

무슨 문제가 있는지 아시나요? 사용해 보았는데 --device fuse호스트가 최신 커널 5.4.77(NixOs 실행) 을 실행하고 있습니다.

내 거 Dockerfile:

FROM ubuntu:latest
# podman3 has docker-compose
# But this may be more efficient: https://podman.io/blogs/2018/12/03/podman-runlabel.html
# Nope, can't find how to use $HOME
RUN apt update -y && apt install -y mesa-utils clinfo intel-opencl-icd ocl-icd-opencl-dev inetutils-ping sshfs
RUN apt install -y libglu1-mesa libgomp1 wget curl libsm6 libxrender1 libxext6
RUN apt install -y libxi6 libxrender1 libxrandr2 libxcursor1 libxinerama1
RUN apt-get install -y -qq --no-install-recommends \
    libglvnd0 \
    libgl1 \
    libglx0 \
    libegl1 \
    libxext6 \
    libx11-6\
    bash-completion\
    fuse-overlayfs\
    libfuse2\
    libglib2.0-0

실행 명령:

podman build -t myimage:latest -f Dockerfile
# TODO: check better solution than allowing everybody. +local?
xhost +
podman run -P -v /tmp/.X11-unix:/tmp/.X11-unix\
    -v $HOME/.Xauthority:/root/.Xauthority\
    --security-opt=label=disable\
    -e DISPLAY=$DISPLAY\
    --security-opt=seccomp=unconfined\
    --device /dev/snd\
    --device /dev/input\
    --device /dev/dri\
    --device /dev/fuse\
    -v /dev/shm:/dev/shm\
    --ipc=host\
    --volume /etc/localtime:/etc/localtime:ro\
    -v /home:/home\
    -v /mnt:/mnt\
    -v /nix:/nix\
    -h $HOSTNAME\
    --workdir=$PWD\
    --rm -it  myimage:latest

실패한 명령 및 예상되는 유효한 명령:

$ sshfs -v me@myhost:~/ /tmp/host
fusermount: mount failed: Operation not permitted

두 번째 예:

$ cd /tmp
$ wget https://github.com/littleweeb/Desktop/releases/download/v0.4.0_linux/LittleWeeb-0.4.0.303.AppImage
$ chmod +x LittleWeeb-0.4.0.303.AppImage
$ ./LittleWeeb-0.4.0.303.AppImage
fusermount: mount failed: Operation not permitted

컨테이너 내의 일부 온전성 검사:

$ ls -al /dev/fuse
crw-rw-rw- 1 nobody nogroup 10, 229 Dec 18 10:28 /dev/fuse

sshfs를 시도했는데 strace내가 본 첫 번째 오류는 다음과 같습니다.

mount("me@myhost:~/", "/tmp/host", "fuse.sshfs", MS_NOSUID|MS_NODEV, "fd=3,rootmode=40000,user_id=0,gr"...) = -1 EPERM (Operation not permitted)

답변1

퓨즈를 사용하려면 사용자에게 권한이 있어야 합니다. 권한을 부여하는 방법에는 setuid 사용 또는 함수 사용 등 여러 가지 옵션이 있습니다. 저는 setuid 방식만 시도했습니다. 바이너리는 fusermountsetuid 루트여야 합니다.

chown root:root $(which fusermount3)
sudo chmod u+s $(which fusermount3)
ls -l $(which fusermount3)
-rws--x--x 1 root root 39416 Apr 24 11:50 /home/acolin/gpref/usr/bin/fusermount3

Gentoo Prefix에 설치된 퓨즈에서도 동일한 문제가 발생합니다.

관련 정보