/dev/fb1
호스트의 바인딩을 사용하여 systemd-nspawn 컨테이너를 만들었습니다 /dev/fb0
. PrivateUsers=off
.nspawn 구성 파일에 설정했는데 컨테이너의 파일 소유권과 권한이 호스트와 동일한 /dev/fb0
것으로 보입니다 . /dev/fb1
호스트 컴퓨터에서 실행하면 cat /dev/urandom >/dev/fb1
예상대로 작동하지만("장치에 남은 공간 없음" 오류) 컨테이너를 시작하고 루트로 로그인하면( 사용 machinectl
) cat /dev/urandom >/dev/fb0
"작업이 허용되지 않습니다"라는 메시지와 함께 실패합니다. 또한 를 사용하여 쓰기를 시도했는데 dd -if /dev/urandom -of /dev/fb0
'dd: '/dev/fb0'을 열 수 없습니다: 작업이 허용되지 않습니다'라는 오류가 발생했습니다. chmod
및 등 루트 액세스가 필요한 다른 명령을 테스트했으며 chown
컨테이너의 루트 사용자는 이러한 명령을 실행할 수 있습니다.
/dev/fb1
self로 바인딩하면 (즉, 그냥 Bind=/dev/fb1
) 쓰기 작업이 수행됩니다.예허용된.
컨테이너 내에서 쓰기 위해 파일을 열 수 없는 이유를 아는 사람이 있습니까?
.nspawn 구성은 다음과 같습니다.
[Exec]
Capability=CAP_SYS_ADMIN
PrivateUsers=off
[Files]
Bind=/dev/fb1:/dev/fb0
Bind=/srv
다음은 컨테이너에 대한 systemd-nspawn 서비스 오버레이 파일입니다.
[Service]
DeviceAllow=/dev/fb0 rw
DeviceAllow=char-input rw
DeviceAllow=char-drm rw
(이 구성 중 일부는 불필요하다고 확신합니다. 문제를 해결하기 위해 제가 생각할 수 있는 모든 것을 던졌을 뿐입니다.)