doas를 사용하여 chroot를 시작할 때 chroot에 패키지를 설치하는 방법은 무엇입니까?

doas를 사용하여 chroot를 시작할 때 chroot에 패키지를 설치하는 방법은 무엇입니까?

OpenBSD 7.2 stable에서는 다음 스크립트를 사용하여 chroot를 설정했습니다.

#!/bin/ksh

dir="/jails/$1"
mkdir -p "$dir"

tar -C "$dir" -xzf /usr/src/base/base72.tgz
tar -C "$dir" -xzf /usr/src/base/comp72.tgz
tar -C "$dir" -xzf /usr/src/base/man72.tgz
tar -C "$dir" -xzf /usr/src/base/xbase72.tgz
tar -C "$dir" -xzf /usr/src/base/xfont72.tgz
tar -C "$dir" -xzf /usr/src/base/xserv72.tgz
tar -C "$dir" -xzf /usr/src/base/xshare72.tgz

(cd "$dir/dev" && doas ./MAKEDEV all)

doas cp /etc/{doas.conf,installurl,resolv.conf,master.passwd,passwd,group} "$dir/etc/"
mkdir -p "$dir/home/evan"
chown evan:wheel "$dir/home/evan"

doas chroot "$dir" pwd_mkdb /etc/master.passwd
doas chroot "$dir" ldconfig /usr/local/lib
doas chroot "$dir" sysmerge

사용자로 로그인한 동안 evan다음을 사용하여 chroot를 입력합니다.doas chroot /jails/project /usr/bin/su - evan

실행하려고 하면 doas pkg_add cowsay다음 오류가 발생합니다.

doas: not installed setuid

내가 무엇을 놓치고 있나요?

답변1

제가 이해하는 진정한 OpenBSD 정신에 따라 좀 더 조사를 했고 해결책을 찾았다고 믿습니다.

내 스크립트의 일부가 doaschroot에 설치되어 있고(좋음) setuid특별한 권한이 부족합니다(나쁨).

먼저 메인 시스템의 권한을 확인했습니다.

$ ls -al /usr/bin | grep doas
-r-sr-xr-x  1 root  bin   28040 Sep 27 17:40 doas

그런 다음 chroot의 내용을 확인했습니다.

$ doas chroot /jails/project ls -al /usr/bin | grep doas
-r-xr-xr-x  1 evan  wheel   28040 Sep 27 17:40 doas

자세히 알아보신 후특별 허가, 다음과 같은 특수 권한을 설정해야 한다는 것을 알 수 있습니다.

doas chmod u+s /jails/project/usr/bin/doas

root:bin좋은 측정을 위해 소유자도 다음과 같이 변경했습니다.

doas chown root:bin /jails/project/usr/bin/doas

이제 doas pkg_add cowsaychroot에서 실행할 수 있으며 문제 없이 명령이 실행됩니다.


 ___________ 
< RTM FTW! >
 ----------- 
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

관련 정보