我经常需要以不同的用户身份运行作业。我一直在做类似的事情
$ 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编辑功能。