为什么“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。你必须让它启动一个登录 shell:

su -

而不是仅仅

su

如果您无法更改su通话,请$PATH在通话前进行更改。如果usermod位于/usr/sbin/usermod则执行以下操作:

PATH=/usr/sbin:$PATH
su

答案2

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.

因此,使用标志从现有 shell--preserve-environment加载$PATH

su --preserve-environment

或者
手动导出 PATH 变量

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

相关内容