允许无需密码的root访问权限

有一个VirtualBox的Ubuntu客户机(14.04),仅用于测试目的。
root用户有自己的密码,所以我可以在单独的终端中登录为root(su -),或者直接从登录会话中登录(例如,在按下Ctrl-Alt-F4后)。
$ su -
Password: <current root password>
# echo Works!

由于这是一个VB测试系统,而且root用户不需要任何安全性,我希望能够快速地su -或login为root,即使没有root密码。
所以,我尝试作为root。
# passwd -d root

要删除密码 - 根据/etc/shadow(::)似乎有效。

root::16304:0:99999:7:::

但是当尝试使用su -命令时,系统要求输入密码,我只需按下回车键(无需输入密码)。
$ su -
Password: 
su: Authentication failure

但是它不行。必须有一个设置可以允许root登录/ su而无需密码。那应该在哪里?
2个回答

尝试
sudo -s

它会要求您输入密码以登录为root用户。

然后使用passwd命令来更改root密码。

如果您不是sudo用户

请输入

sudo visudo

在最后添加这一行
<username> ALL=NOPASSWD: ALL

然后按下 ctrl+x 退出,然后按下y保存更改。
然后再尝试一次sudo -s,它将登录到root而无需密码

2你在问题中看到 sudo 是在哪里? - Déjà vu

警告:未经测试,因为我认为这不是一个好主意,即使对于虚拟机来说也是如此(坏习惯很难消除…)。
我认为这是一个PAM的事情(PAM = 可插拔身份验证模块)。
/etc/pam.d中有所有PAM配置文件,告诉系统如何对用户进行身份验证。现在,检查密码“Unix样式”的模块是pam_unix.so,其中man页面中可以找到选项之一:
  nullok
       The default action of this module is to not permit the user access
       to a service if their official password is blank. The nullok
       argument overrides this default and allows any user with a blank
       password to access the service.

   nullok_secure
       The default action of this module is to not permit the user access
       to a service if their official password is blank. The nullok_secure
       argument overrides this default and allows any user with a blank
       password to access the service as long as the value of PAM_TTY is
       set to one of the values found in /etc/securetty.

所以我怀疑的是要在上述文件中找到所有出现的 pam_unix.so,并将选项 nullok(或将 nullok_secure 更改为 nullok)添加到条目中。

根据此帖子,文件应该是 /etc/pam.d/common-auth --- 但是我对此不太确定,因为在Ubuntu中,VC(Virtual Console)位于 /etc/securetty 列表中,所以根用户的空密码应该从那里工作(尽管在终端仿真器中不起作用),而SO(Stack Overflow)中声称它不起作用。

所以需要进行一些实验;-)。


1我同意这是一个糟糕的主意。 - Elder Geek
3确实,它在/etc/pam.d/common-auth文件中,找到包含pam_unix.so的那一行,将nullok_secure改为nullok(以及其他需要修改的auth文件)。感谢您将特权用户视为成年人,并在提供解决方案的同时警告那些经验不足的读者。 - Déjà vu