使用 `su` 以不同用户身份运行命令时,会出现“标准输入必须是 tty”的情况

使用 `su` 以不同用户身份运行命令时,会出现“标准输入必须是 tty”的情况

我在用斯坦福使用我们的产品自动执行 db2 接口测试。我能够使用运行该命令,su - db2inst1 -c "/home/db2inst1/sqllib/bin/db2 list database directory"但是当我尝试使用 staf 接口执行相同命令时,我收到错误:

standard in must be a tty

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

答案1

删除 su 命令中的单破折号 (-)。这会触发 su 请求登录 shell。登录链中的某些程序可能需要 tty。

答案2

/etc/sudoers不控制行为su。你想要类似

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

答案3

请参考此链接:我尝试了第二种选择ssh -t 用户名@服务器'sudo 命令'. 它对我有用。 https://math-linux.com/linux/bash/article/error-standard-in-must-be-a-tty-when-doing-ssh-username-server-sudo-command

相关内容