Sudo

為什麼“usermod”在超級使用者下不起作用?

  • May 28, 2020

usermod命令通過 sudo 成功。

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。

su從 /etc/profile 載入配置文件,這可能會修改 shell$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

您需要$PATH設置root. 這沒問題,sudo因為它有自己的$PATH.

su預設情況下不會更改$PATH。你必須讓它啟動一個登錄shell:

su -

而不僅僅是

su

如果您無法更改su通話,請$PATH在通話前更改。如果usermod位於/usr/sbin/usermod然後執行此操作:

PATH=/usr/sbin:$PATH
su

引用自:https://unix.stackexchange.com/questions/589479