Ubuntu 18.04でSudoを使用してコマンドラインを使用してツールなどをインストールすると、完全に機能します。例:Sudo apt install ...
は完全に機能します。 Sudoがまったく機能しないため、コマンドラインからツールとプログラムを実行する。通常のユーザーと同じプログラムとツールを実行すると、完全に機能します。例:start gtkwave
は通常のユーザーとしてgtkwave GUIをポップアップします。 gtkwaveをSudoとして起動し、パスワードを要求して、Sudo: gtkwave: command not found
で終了します。
Sudoとしてコマンドラインで呼び出されたいくつかのツールは問題なく動作します。たとえば、通常のユーザーとしてSudoとしてコマンドラインからAtomを起動できます。
これはおそらく、Sudoとして実行されていないツール/プログラムが/bin
や/usr/bin
などの一般的なLinuxフォルダーにインストールされず、/opt
の下のプログラムとしてインストールされるためです(これらはパスに追加され、必要な環境設定)?
なぜこれが起こるのか誰にも分かりませんか?
デフォルトでは、Sudo
は、secure_path
ファイルで定義されている独自の/etc/sudoers
を使用してプログラムを検索します。 man sudoers
から:
secure_path Path used for every command run from Sudo. If you don't trust the people running Sudo to have a sane PATH environ‐ ment variable you may want to use this. Another use is if you want to have the “root path” be separate from the “user path”. Users in the group specified by the exempt_group option are not affected by secure_path. This option is not set by default.
そこの最後の行にもかかわらず、デフォルトのUbuntu /etc/sudoers
doesがそれを設定することに注意してください:
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
そのため、呼び出しユーザーのPATH
もルートのPATH
も、Sudo
を使用するときにプログラムが配置されるかどうかには影響しません。
/opt
などの場所にあるプログラムをSudo
を介して実行可能にする場合は、次のいずれかが必要です。
フルパスを使用しますSudo /opt/somepath/bin/prog
sudoers secure_path
を変更して場所を含めます-これを行うことにした場合は、Sudo visudo
を使用して構文エラーをキャッチしてください(そうでない場合は、Sudo
から完全にロックアウトされます)。
ただし、先に進む前に、おそらく なぜユーザーがグラフィカルアプリケーションを起動するために通常のSudoを使用しないのか を読む必要があります。