スーパーユーザーでは「usermod」が機能しないのはなぜですか?

スーパーユーザーでは「usermod」が機能しないのはなぜですか?

sudoコマンドで正常に完了しましたusermod

sudo usermod -aG some_group some_user

しかし、su経由で実行するとエラーが発生します。

su
...I enter root password...
usermod -aG some_group some_user
bash: usermod: command not found

なぜこれが起こるのですか?

システムをどのように構成しますか?

実際、変更できないスクリプトがあります。このスクリプトは su で usermod コマンドを使用します。

答え1

必要な$PATH設定ですroot。これはsudoそれ自体があるため問題ではありません$PATH

suデフォルトでは変更されません$PATH。ログインシェルを起動する必要があります。

su -

ただではなく

su

su通話を変更できない場合は、$PATH通話前に変更してください。usermod見つかった場合は、/usr/sbin/usermod次の操作を行います。

PATH=/usr/sbin:$PATH
su

答え2

suシェル変数を変更できる/etc/profileから設定ファイルをロードします$PATH

man su説明する

-m, -p, --preserve-environment
              Preserve the entire environment, i.e., it does not set HOME,
              SHELL, USER nor LOGNAME.  This option is ignored if the option
              --login is specified.

したがって、フラグを使用して既存のシェルから--preserve-environmentロードします。$PATH

su --preserve-environment

または、
PATH変数を手動でエクスポートします。

su
export PATH=$PATH:/path/of/usermod/dir

関連情報