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

嗯,这gdisksbin二进制吗? apt-get是一个bin二进制文件。也许PATH是错误的。让我们检查一下:

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

好的,现在找到了。

这个问题的正确解决方法应该是什么?我在配置中遗漏了什么吗?

相关内容