doasは/usr/sbinバイナリを実行しません。

doasは/usr/sbinバイナリを実行しません。

doas私はDebian / GNU / Linux Unstableを使用しており、今日は次の簡単な設定ファイルを使って初めて試しました。

$ doas cat /etc/doas.conf 
permit persist alx as root

しばらく動作している間(たとえば、実行できますdoas apt-get update && doas apt-get upgrade)、次は失敗します。

alx@ady1:~$ doas gdisk /dev/sdb
doas: gdisk: command not found

まあ、これはバイナリ gdiskですか?バイナリファイルです。たぶん間違っているかもしれません。確認してみましょう:sbinapt-getbinPATH

$ sudo env | grep PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
$ doas env | grep PATH
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

doas知っているようですが、sbin何かが逆になったようですPATH。わかった、どこgdisk

alx@ady1:~$ sudo which gdisk
/usr/bin/which: this version of `which' is deprecated; use `command -v' in scripts instead.
/usr/sbin/gdisk
alx@ady1:~$ doas which gdisk
/usr/bin/which: this version of `which' is deprecated; use `command -v' in scripts instead.
/sbin/gdisk

command -v組み込みまたはsudoorと一緒に使用できないため、ここでは機能しませんdoas。しかし、その警告を無視しましょう(which適切な交換がないと、なぜもう使用されないのですか?)。

まあ、彼らは同意しません。みましょう:

$ realpath /usr/sbin/gdisk 
/usr/sbin/gdisk
$ realpath /sbin/gdisk
/usr/sbin/gdisk
$ ls -l /sbin 
lrwxrwxrwx 1 root root 8 Nov 11 15:37 /sbin -> usr/sbin

doasおそらく、このバイナリを実行する必要があると信じるのに苦労しているシンボリックリンクのためでしょうか?PATH実際のパスを最初に探すように修正してみましょう。

$ doas PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin gdisk /dev/sdb
doas: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin: command not found

ハハ、変です。一般的な構文を使ってみましょう(sudo構文とは反対です。一貫性がないのではないでしょうか、それとも私だけですか?)。

$ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin doas gdisk /dev/sdb
GPT fdisk (gdisk) version 1.0.8

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help): q
$

さて、今見つけました。

この問題に対する正しい解決策は何ですか?構成に何か抜けましたか?

関連情報