cryptsetup
내부를 사용하여 암호화된 이미지 파일을 설치하고 싶습니다.systemd-nspawn
컨테이너. 그러나 다음과 같은 오류 메시지가 나타납니다.
[root@container ~]# echo $key | cryptsetup -d - open luks.img luks
Cannot initialize device-mapper. Is dm_mod kernel module loaded?
Cannot use device luks, name is invalid or still in use.
커널 모듈은 dm_mod
호스트 시스템에 로드되지만 컨테이너 내부는 약간 이상해 보입니다.
[root@host ~]# grep dm_mod /proc/modules
dm_mod 159744 2 dm_crypt, Live 0xffffffffc12c6000
[root@container ~]# grep dm_mod /proc/modules
dm_mod 159744 2 dm_crypt, Live 0x0000000000000000
strace
cryptsetup
생성할 수 없음 을 나타냅니다 /dev/mapper/control
.
[root@etrial ~]# echo $key | strace cryptsetup -d - open luks.img luks 2>&1 | grep mknod
mknod("/dev/mapper/control", S_IFCHR|0600, makedev(0xa, 0xec)) = -1 EPERM (Operation not permitted)
왜 이런 일이 발생하는지 잘 모르겠습니다. 컨테이너를 시작하겠습니다.템플릿 [email protected]
단위, 이는 장치 매퍼에 대한 액세스를 허용해야 할 것 같습니다.
# nspawn can set up LUKS encrypted loopback files, in which case it needs
# access to /dev/mapper/control and the block devices /dev/mapper/*.
DeviceAllow=/dev/mapper/control rw
DeviceAllow=block-device-mapper rw
읽다USB 장치 관련 문제에 대한 의견, 솔루션이 에 대한 것인지 궁금합니다 /dev/mapper
. 그러나 cryptsetup
컨테이너 내부에서는 동일한 오류 메시지가 표시됩니다. 이렇게 하면 strace
여전히 권한 문제가 있는 것 같습니다.
# echo $key | strace cryptsetup open luks.img luks --key-file - 2>&1 | grep "/dev/mapper"
stat("/dev/mapper/control", {st_mode=S_IFCHR|0600, st_rdev=makedev(0xa, 0xec), ...}) = 0
openat(AT_FDCWD, "/dev/mapper/control", O_RDWR) = -1 EACCES (Permission denied)
# ls -la /dev/mapper
total 0
drwxr-xr-x 2 nobody nobody 60 Dec 13 14:33 .
drwxr-xr-x 8 root root 460 Dec 15 14:54 ..
crw------- 1 nobody nobody 10, 236 Dec 13 14:33 control
분명히 이것은 보안상의 이유로 내가 원하는 사용자 네임스페이스가 템플릿 단위에 활성화되어 있기 때문에 발생합니다. 설명된 대로문서:
사용은 컨테이너 보안을 크게 향상시키고 대부분의 경우 완전 자동으로 실행되므로 대부분의 경우 권장 옵션입니다... [이것은]
--private-users=pick
템플릿 단위 파일을 사용할 때 기본 옵션입니다...[email protected]
[이
--bind
옵션]을 와 함께 사용 하면--private-users
생성된 마운트 지점은 사용자가 소유하게 됩니다nobody
. 이는 마운트와 해당 파일 및 디렉터리가 컨테이너에 존재하지 않아 와일드카드 UID 65534(nobody
) 아래에 표시되는 연결된 호스트 사용자 및 그룹이 계속 소유하기 때문입니다. 그러한 바인드 마운트가 생성된 경우에는--bind-ro=
.
아마도 읽기 전용 권한으로는 아무것도 할 수 없을 것 같습니다 /dev/mapper
. 그렇다면 cryptsetup
애플리케이션이 사용자 네임스페이스를 비활성화하지 않고 런타임에 임의의 암호화된 볼륨을 생성하고 마운트할 수 있도록 컨테이너 내부에서 작업할 수 있는 방법이 있습니까 ?
관련 질문
systemd-nspawn: 폴더의 파일 시스템 권한 바인딩장치가 아닌 파일과 관련하여 유일한 대답은 "
-U
주로 rw와 호환되지 않음--bind
"입니다.systemd-nspawn: 모든 장치에 대한 액세스를 허용하는 방법사용자 네임스페이스를 다루지 않으며 답변이 없습니다.
답변1
권한이 부족할 수도 있습니다 m
. 최소한 첫 번째 항목을 지정하는 대신 지정하면 rwm
어떻게 되나요 ?rw
DeviceAllow