nosuid에 대해 불평하면서 docker 내에서 sudo가 실패하는 이유는 무엇입니까?

nosuid에 대해 불평하면서 docker 내에서 sudo가 실패하는 이유는 무엇입니까?

Docker 컨테이너 내에서 실행하면 sudo오류가 발생합니다.

sudo: effective uid is not 0, is /usr/bin/sudo on a file system with the 'nosuid' option set or an NFS file system without root privileges?

권한이 sudo올바르게 설정되었습니다.

-rwsr-xr-x 1 root root 149080 gen 18  2018 /usr/bin/sudo

또한 루트 파일 시스템은 nosuid.( 마운트 지점으로 mount | grep nosuid포함되지 않음 )로 마운트되지 않습니다./

무엇이 잘못될 수 있나요?

답변1

이에 따르면asbe의 GitHub 게시물,

한 호스트의 컨테이너는 sudo에서 제대로 작동하지만 거의 동일한 호스트에서는 오류가 발생합니다. 마침내 문제의 호스트가 스토리지 드라이버로 "오버레이"와 기타 "aufs"를 사용하고 있었기 때문에 그 이유를 알아냈습니다. 두 docker 설치 모두 /var/lib/docker를 "nosuid"가 설치된 드라이브로 이동했습니다. "override"는 "nosuid"를 존중하는 것으로 나타났습니다."nosuid"가 제거된 디스크에 /var/lib/docker가 설치되어 있는지 확인하기만 하면 모든 문제가 해결됩니다.(이상한 일 - "aufs"를 사용한 설정에서는 이런 일이 발생하지 않습니다)

(강조는 제가 추가했습니다.)

실제로 해당 옵션이 활성화된 data-root(기본적으로 /var/lib/docker) 다른 드라이브에서 Docker를 설치했습니다 nosuid. nosuid호스트 시스템에서 이 명령을 비활성화 했습니다 .

sudo mount -n -o remount,suid /path/to/mountpoint

그런 다음 sudo컨테이너를 다시 시작하면 됩니다.

결정하다/path/to/mountpoint: 경로는 /path/to/mountpoint가 포함된 경로입니다 . data-root먼저 data-root디렉터리를 확인하려면 를 실행 하세요 docker info | grep "Docker Root". 예를 들어, 설치가 표시 되고 설치가 표시되면(또는 설치되지 않음) 설치됩니다.dfMounted ondocker-root/home/docker/datadu/home/home/docker/home/docker/data/path/to/mountpoint/home

(이 답변을 확장하고 후속 조치를 취하는 데 도움을 준 @DonTintoretto에게 감사드립니다.)

관련 정보