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 |
|| ||