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