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
$

좋아, 이제 찾았어.

이 문제에 대한 올바른 해결책은 무엇입니까? 구성에 뭔가 빠졌나요?

관련 정보