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

おすすめ記事