以 root 身份运行 /bin/su 命令和不以 root 身份运行命令会产生不同的结果

以 root 身份运行 /bin/su 命令和不以 root 身份运行命令会产生不同的结果

一些背景知识:我有一台安装了 SLES 11 的机器。我正在运行一个 bash 脚本,其中有一行是/bin/su $USER -c SOME_CMD

不幸的是,无论是哪个用户,SOME_CMD后面的都会失败。但是,如果省略部分,则一切都会顺利运行。此外,我已经在 RHEL5 上运行了该脚本,并且运行良好。-cUSER=root/bin/su $USER -c

无论如何,我的问题是为什么会发生这种情况?如果这是权限问题,那么为什么当我以 root 身份/bin/su和不以 root 身份运行此程序时会得到不同的结果?

PS,如果之前有人问过这个问题,我深感抱歉,我已经在谷歌上搜索了很多次,但没有找到令人满意的答案。


编辑 好的,我明白了,希望如此。我没有使用 ,而是使用 。/bin/su/user/bin/sudo -u $MY_USER_1 MY_ENV_VAR="/home/user1" SOME_CMD我不明白为什么我必须使用sudo。我习惯以不同的用户身份运行命令,而不必担心权限问题,但我猜它在/su上不起作用。SLES 11SuSE

无论如何,感谢所有愿意或帮助过我的人。

答案1

这是因为该命令的正确语法是

/bin/su -c SOME_CMD USER

man su

顺便说一句,您不应该为该变量分配任何东西$USER,因为它是一个保存当前登录用户名称的系统变量。

相关内容