명령을 찾을 수 없지만 sudo에서 작동합니다.

명령을 찾을 수 없지만 sudo에서 작동합니다.

GUI 없이 Debian GNU/Linux 10(buster) x86_64를 설치하고 사용자를 생성한 후 sudo 액세스 권한을 부여했습니다. 사용자에게 sudo 액세스 권한이 있지만 shutdown또는 같은 명령은 rebootsudo를 사용할 때만 작동합니다. 내 경험상 이러한 명령을 실행하기 위해 sudo를 사용할 필요는 없었습니다. 어떻게 해결할 수 있나요?

$ whoami
amir
$ id amir
uid=1000(amir) gid=1000(amir) groups=1000(amir),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),109(netdev)
$ reboot
zsh: command not found: reboot
$ sudo which reboot
/usr/sbin/reboot
$ sudo grep amir /etc/sudoers
amir    ALL=(ALL:ALL) ALL
$ sudo grep "^sudo" /etc/sudoers
sudo    ALL=(ALL:ALL) ALL

답변1

이는 PATH 변수의 기본 구성 때문입니다. PATH는 쉘이 특정 명령을 검색할 위치를 설정합니다.

데비안은 기본적으로 sudoPATH를 변경합니다 . 이렇게 하는 이유 중 하나는 안전 때문입니다. 그러나 여기에는 당신을 위한 무언가가 추가됩니다.

즉, 다음을 추가합니다: /sbin/usr/sbin.

다음을 입력하여 이를 볼 수 있습니다.

echo $PATH

그리고

sudo bash -c 'echo $PATH'

이 동작은 여러 위치에서 제어됩니다. 첫째, sudo의 동작은 다음에서 제어됩니다 /etc/sudoers.

Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

사용자의 PATH는 전체 시스템을 제어하며 /etc/profile사용자 /etc/bash.bashrc의 개인 설정은 ~홈 디렉터리( ) ~/.profile및 에 있는 파일에 있습니다 ~/.bashrc.

이 파일에서는 행이 변경되고 export PATH.

관련 정보