【发布时间】:2013-03-22 15:51:44
【问题描述】:
我经常需要以不同的用户身份运行 at 作业。我一直在做类似的事情
$ echo "$PWD/batchToRun -parameters" | sudo su - otheruser -c "at now"
batchToRun 也计划通过 otheruser 的 crontab 运行。这很有效,直到batchToRun 开始取决于环境变量设置的微妙副作用——比如 LANG(sort 任何人?)——从运行sudo的用户环境。
我通常不想以 otheruser 身份登录;这是一个半特权帐户,我想要一个与其相关活动的“书面记录”,这样我就可以回去查看到底做了什么、由谁、何时等等。
除了将batchToRun明显重写为独立于此类设置之外,还有什么好的方法可以保证sudoer的环境不污染目标环境?
注意:这是在 FC7(sudo 版本 1.6.8p12)和其他旧发行版上,所以 sudo/su/at 的任何闪亮的新功能(特别是通过 @987654329 传递参数的能力@ to sudo) 不在我的掌握范围内。
更新:事实证明,su - otheruser 实际上是用户之间的足够防火墙,并且我的污染来自交互式启动序列中的某些东西。不过,我仍然喜欢env 的编辑功能。
【问题讨论】:
-
如果您同时使用
sudo和su,您可能做错了什么。试试sudo -u otheruser at now。 -
@OrangeDog 请注意
-(并参考FC7)。
标签: shell environment-variables sudo su at-job