我更改了 /etc/passwd 中的最后一行,但无法使用 sudo

我更改了 /etc/passwd 中的最后一行,但无法使用 sudo

以下是我所做的:

  1. 将最后一行的用户名更改tinyabc

    • tiny@tty7:~$ sudo vim /etc/passwd
    • 将此:更改
      tiny:x:1000:1000:tiny,,,:/home/tiny:/bin/bash
      为此:
      abc:x:1000:1000:tiny,,,:/home/tiny:/bin/bash
  2. tiny@tty7:~$ sudo vim /etc/shadow

    • 表明:[sudo] passwork for abc:

    • 我没有改密码但是无法登录root!

    • 我输入Ctrl+ Alt+F1tty1没有微小的或者美国广播公司无法使用我的密码登录

我尝试看一下ls ~ -la,它显示如下:

drwxr-xr-x 28 abc tiny 4096 Apr 6 03:04 .

我如何登录 root?为什么提示中的用户名tiny@tty7仍然很小,而在 sudo 中却显示 abc 的密码?

答案1

您绝对不能手动编辑密码文件,因为这样会把事情搞乱。

更改用户名的正确方法是:

usermod -l newUsername oldUsername

然后更改主文件夹:

usermod -d /home/newHomeDir -m newUsername

要更改密码您应该使用:

sudo passwd yourusername

我建议你恢复你的 passwd 文件,或者如果你不能用 root 登录而无法编辑它 - 那么用 live cd 启动并恢复文件。然后使用正确的方法。

答案2

编辑后卡住的原因是/etc/shadow文件包含 的密码条目,tiny但没有 的条目abc,而/etc/passwd文件包含 的条目abc,而不包含 的条目tinysudo查看时,它根据abc您正在运行的进程的 UID 正确识别了您(根据密码文件),但是当它试图将您输入的密码与 中存储的加密(散列)密码进行比较时/etc/shadow,它找不到 的条目abc,因此它必须报告失败。

作为沙迪在他的回答,不要手动编辑密码或影子文件。如果必须违反规则,请在一次调用中编辑两者vim,并且不要退出,vim直到您使用另一个终端窗口证明更改足够合理,可以正常工作,并且在开始破解文件之前保存文件的备份副本,并重新考虑您最初违反规则的原因,因为这可能不是一个好主意。

答案3

使用:vipw

我一直在 FreeBSD 上使用它,刚刚确认你也可以在 Ubuntu 上使用它。请阅读此页面:vipw 的 Ubuntu 手册页

答案4

手动更改用户名(但不是 uid)的步骤:

  1. 检查你的头部,如果失败则继续第二步。
  2. 编辑影子文件,使用新用户名复制用户行。
  3. 编辑组、sudoers、允许新的用户名权限、保留旧的
  4. 将主目录符号链接到新名称
  5. 编辑 passwd 文件更改用户名和主目录
  6. 编辑 shadow、sudoers、groups 以删除我们在第三步中保留的旧条目
  7. 编辑别名以及对旧用户名的其他引用。
  8. 注销,切换到文本控制台(如果用户主目录中正在运行任何程序,包括窗口管理器,则下一步将不起作用)
  9. cd 到你的主目录上方的目录。
  10. 删除符号链接,并重命名主目录。
  11. 正常注销并登录。

更改他人的用户名要简单得多,尽管仍然不简单。

相关内容