使用`su`运行一个不同的用户命令给出“标准必须是tty”

我正在使用STAF来自动化我们的产品的db2接口testing。 我能够使用su - db2inst1 -c "/home/db2inst1/sqllib/bin/db2 list database directory"命令,但是当我用staf接口尝试相同的命令时,出现错误:

 standard in must be a tty 

我在/ etc / sudoers中评论了“Defaults requiretty”,但仍然有同样的问题。

在你的su命令中放下单独的破折号( – )。 这触发su要求loginshell。 您的login链中的某个程序可能需要tty。

/etc/sudoers不pipe理su的行为。 你想要的东西

 sudo -u db2inst1 "/home/db2inst1/sqllib/bin/db2 list database directory"