不能再SUDO苏,“没有tty礼物,没有askpass计划指定”

我有一个根服务器,我通过用户root禁用login,并创build另一个用户在sudoer列表中。 所以当我想要在服务器上工作时,我需要:

ssh myusername@IP_ADDRESS 

在服务器上:

 sudo su 

input我的密码以获得root权限。 这工作现在罚款6个月。 今天我在做sudo su:时得到这个消息sudo su:

 sudo: no tty present and no askpass program specified 

什么黑客正在发生? 这个错误是什么意思,为什么我得到它? 没有root权限,我无法在服务器上做太多的事情。 任何想法如何解决这个问题?

sudo尝试打开/dev/tty进行读写,如果失败则打印该错误。 您在注释中指出您的系统上缺少/ dev / tty。

Sudo有一个选项-S从标准输入读取密码而不是/ dev / tty。 你应该可以运行sudo -S来成为root用户。

关于如何恢复/ dev / tty,可能重启服务器就足够了; 系统可能会在启动时重新创建/ dev中的所有设备。 或者,要创建设备,请使用mknod命令,但是您需要知道tty设备的正确主数字和次数。 在我可用的Ubuntu系统上,我在/ dev中看到这些条目:

 crw------- 1 root root 5, 1 Apr 16 18:36 console crw-rw-rw- 1 root tty 5, 2 Sep 24 15:35 ptmx crw-rw-rw- 1 root tty 5, 0 Sep 24 14:25 tty 

在这种情况下,主数字是5,次数是0. / dev / console和/ dev / ptmx具有相同的主数字。 所以我会检查/ dev / console或/ dev / ptmx找到正确的主号码,然后运行:

 mknod /dev/tty c major 0 

“主要”是正确的主要数字。

重新创建/ dev / tty之后,请确保权限是正确的:

 chmod 666 /dev/tty 

它失败,因为sudo试图提示根密码,并没有伪tty分配。

您必须以根用户身份登录或在/etc/sudoers (或: sudo visudo )中设置以下规则:

 # Members of the admin group may gain root privileges. %admin ALL=(ALL) NOPASSWD:ALL 

然后确保您的用户属于admin组(或wheel )。

理想情况下(更安全),将root权限限制为可以指定为%admin ALL=(ALL) NOPASSWD:/path/to/program命令%admin ALL=(ALL) NOPASSWD:/path/to/program