コマンドが見つかりませんが、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は、シェルが特定のコマンドを検索する場所を設定します。

Debian はデフォルトでsudoPATH を変更します。これを行う理由の1つは安全のためです。しかし、ここにはあなたのための何かが追加されます。

つまり、次を追加します/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

関連情報