일부는 스스로 내리는 선택입니다.

일부는 스스로 내리는 선택입니다.

내 Linux 호스트에서 unshare -m루트 액세스가 거부되었습니다.

Bubblewrap에는 루트가 필요 bwrap --dev-bind / / --ro-bind-data xxxx xxxx하지 bwrap --dev-bind / / --tmpfs않습니다. ( setuid 없이 bwrap)

bubblewrap처럼 루트 없이 마운트 네임스페이스를 어떻게 사용할 수 있습니까(그러나 bubblewrap을 사용하고 싶지는 않습니다)?

답변1

사용자 네임스페이스가 필요합니다(예: ) unshare -rm.

답변2

일부는 스스로 내리는 선택입니다.

(아무것도 이미 존재하지 않는 것처럼).

  • golang으로 래퍼를 작성하고 필요한 기능을 제공하세요.
  • 실행할 때 사용할 래퍼를 셸이나 Python으로 작성합니다 . 그런 다음 비밀번호가 필요하지 않도록 sudo항목을 추가합니다 . sudoers그런 다음 실행하지 않고도 작동하도록 다른 래퍼/별칭을 작성합니다.유형 sudo.

답변3

필요한 것이 루트가 아닌 사용자로 파일 시스템의 디렉터리를 다시 매핑하고 명령이 종료될 때 정리되는 환경에서 하위 프로세스를 실행하는 것뿐이라면 이 faketree유틸리티를 사용할 수 있다고 생각합니다.여기에서 찾을 수 있습니다. 당신은 읽을 수있다여기에 설명된 블로그 게시물.

문서에서 인용 :

  • 루트가 필요하지 않습니다, pid 및 user 네임스페이스가 시스템에서 활성화되어 있는 한 모든 사용자는 이를 실행할 수 있습니다(대부분의 최신 Linux 배포판에서는 기본적으로 설정되어 있으며 포함된 테스트를 사용하여 이를 확인할 수 있습니다).
  • 사용자와 동일한 UID/GID를 사용하여 명령을 실행합니다., 루트로 실행되는 것처럼 보이는 쉘을 생성하지 않습니다(플래그로 재정의될 수 있음).
  • LD_PRELOADptrace나 유사한 트릭이 필요하지 않습니다.. 이는 수정이 필요 LD_LIBRARY_PATH하거나 추적으로부터 보호해야 LD_PRELOAD하는 바이너리 뿐만 아니라 정적 바이너리에도 작동합니다 .
  • faketree에서 실행되는 명령에만 영향을 미칩니다., 이는 동일한 사용자가 동일한 시스템에서 다른 매개변수를 사용하여 여러 개의 faketree 인스턴스를 병렬로 실행할 수 있음을 의미합니다.
  • 환경 변수 및 권한을 올바르게 전파합니다., 심지어 그래픽 도구가 faketree에서 올바르게 실행되도록 허용합니다.
  • FUSE에 의존하지 않음, 디스크 성능 및 성능은 영향을 받지 않습니다.
  • 개별 파일을 덮어쓸 수 있습니다., 포함 /proc/sys파일.
  • 신호를 올바르게 처리하려고 노력하십시오.이므로 CI/CD 파이프라인의 통합이 간단해야 합니다. SIGTERM을 faketree로 보내는 것은 자식들에게 전파되고, faketree는 종료되기 전에 모든 자식과 자손이 종료될 때까지 올바르게 기다립니다. faketree의 A는 kill -9모든 자손도 죽임을 보장합니다.
  • 래핑된 명령이 realpath를 호출하거나 파일 시스템을 확인하는 경우 명령은 마운트가 있는 일반 파일 시스템만 볼 수 있습니다.

관련 정보