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
是sbin
二进制吗? 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
在这里不起作用,因为它是内置的,并且不能与sudo
or一起使用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
$
好的,现在找到了。
这个问题的正确解决方法应该是什么?我在配置中遗漏了什么吗?