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 정신에 따라 좀 더 조사를 했고 해결책을 찾았다고 믿습니다.
내 스크립트의 일부가 doas
chroot에 설치되어 있고(좋음) 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 cowsay
chroot에서 실행할 수 있으며 문제 없이 명령이 실행됩니다.
___________
< RTM FTW! >
-----------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||