我正在运行 Ubuntu 14.04 LTS。
昨天,我更改了我的用户帐户(管理员帐户)的密码。今天早上,我发现我无法再使用sudo su
切换到root。我知道 sudo 使用我的用户帐户的密码,而不是 root 帐户的密码,但它不允许我使用任一密码转到 sudo su 。
然后,重新启动后,当我登录用户帐户时,它会在屏幕上短暂闪烁一条消息,然后再次询问我的用户名和密码。昨天我还更改了主目录的权限,因此我以 root 身份登录并chmod 777
针对我的主目录发出命令。现在我可以使用该用户帐户登录,但我的目录结构已被替换,就像我是新用户一样。如果我以 root 身份从终端查看目录,我会看到以下内容而不是以前的目录结构:
root@CLM1001-Ubuntu:/home/stephen# whoami
root
root@CLM1001-Ubuntu:/home/stephen# ls
Access-Your-Private-Data.desktop Documents Music Public Templates
Desktop Downloads Pictures README.txt Videos
root@CLM1001-Ubuntu:/home/stephen#
我之前在尝试删除后就见过这种行为.ecryptfs
,然后我唯一的办法就是从系统备份中恢复。
除了从备份中进行另一次完整系统恢复之外,我还能做些什么来让该用户帐户再次正常工作吗?
我看了看/var/log/syslog
,/var/log/auth.log
但没有看到任何对我来说显而易见的东西。如果需要,我可以从这些日志中添加转储,但它们很大。
添加更多信息:我注意到我的用户帐户无法再执行 mysqldump - 它出现特权被拒绝错误。虽然我能够进入phpmysql。 (我知道这是另一个问题,所以除了第一个问题的附加信息之外,请尽可能忽略它。)
好的,这里有更多关于这个问题的信息(如果我能让我的 iMac 配合的话)。我执行了一个“脚本”会话,并尝试立即发布捕获的文本:
Script started on Sun 31 May 2020 03:51:24 PM PDT
stephen@CLM1001-Ubuntu:~$ whoami
stephen
stephen@CLM1001-Ubuntu:~$ pwd
/home/stephen
stephen@CLM1001-Ubuntu:~$ hostname
CLM1001-Ubuntu
stephen@CLM1001-Ubuntu:~$ uname -a
Linux CLM1001-Ubuntu 3.13.0-93-generic #140-Ubuntu SMP Mon Jul 18 21:21:05 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
stephen@CLM1001-Ubuntu:~$ passwd
Changing password for stephen.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
stephen@CLM1001-Ubuntu:~$ sudo su
[sudo] password for stephen:
root@CLM1001-Ubuntu:/home/stephen# whoami
root
root@CLM1001-Ubuntu:/home/stephen# exit
exit
stephen@CLM1001-Ubuntu:~$ whoami
stephen
stephen@CLM1001-Ubuntu:~$ ./SQLbackup
./SQLbackup
Sun May 31 15:57:06 PDT 2020
/dev/sdb5 on /media/stephen/Hitachi72101Ptn5 type ext4 (rw)
/media/stephen/Hitachi72101Ptn5 is mounted
-- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly.
<snip> [note: SQLbackup is my script that runs mysqldump.]
stephen@CLM1001-Ubuntu:~$ echo "Ok, it looks like mysqldump is working."
Ok, it looks like mysqldump is working.
stephen@CLM1001-Ubuntu:~$ exit
exit
Script done on Sun 31 May 2020 03:57:35 PM PDT
然后
我登录为
stephen
- 我可以看到我的主目录完好无损
- 我可以
sudo su
毫无问题 - 我可以
mysqldump
毫无问题地运行。
passwd
stephen
我更改了帐户的密码我可以
sudo su
毫无问题mysqldump
没有问题- 通过Firefox浏览器,尝试登录phpmyadmin,但无法登录phpmyadmin
stephen
(无论我使用哪个密码) ls
仍然显示我的主目录,没有问题- 重新启动系统
- 无论我使用哪个密码都无法以斯蒂芬身份登录
- 使用不同的用户帐户登录系统
sudo su
(至根)passwd Stephen
- 我再次将stephen账户的密码设置为原来的密码
- 注销
- 以斯蒂芬身份再次登录:屏幕上有东西闪烁,然后直接返回登录屏幕
- 再次重新启动系统
- 以 Stephen 身份登录:屏幕闪烁并再次直接返回登录屏幕
- 使用第二个用户帐户登录
su Stephen
Signature not found in user keyring Perhaps try the interactive 'ecry0tfs-mount-private'
因此,机器此时已死机,直到我再次找到修复或从备份恢复为止。
好的,所以我使用第二个用户帐户再次登录到问题计算机。然后我sudo su
(以 root 身份)以 root 身份执行了以下步骤:(第二个用户是 rootytooty。)
root@CLM1001-Ubuntu:/home/rootytooty# whoami
root
root@CLM1001-Ubuntu:/home/rootytooty# cd /
root@CLM1001-Ubuntu:/# pwd
/
root@CLM1001-Ubuntu:/# su stephen
Signature not found in user keyring
Perhaps try the interactive 'ecryptfs-mount-private'
stephen@CLM1001-Ubuntu:/$ man ecryptfs-mount-private
stephen@CLM1001-Ubuntu:/$ ecryptfs-mount-private
Enter your login passphrase:
Error: Unwrapping passphrase and inserting into the user session keyring failed [-5]
Info: Check the system log for more information from libecryptfs
ERROR: Your passphrase is incorrect
Enter your login passphrase:
Error: Unwrapping passphrase and inserting into the user session keyring failed [-5]
Info: Check the system log for more information from libecryptfs
ERROR: Your passphrase is incorrect
Enter your login passphrase:
Error: Unwrapping passphrase and inserting into the user session keyring failed [-5]
Info: Check the system log for more information from libecryptfs
ERROR: Your passphrase is incorrect
ERROR: Too many incorrect password attempts, exiting
stephen@CLM1001-Ubuntu:/$ whoami
stephen
stephen@CLM1001-Ubuntu:/$ ecryptfs-mount-private stephen
Enter your login passphrase:
Error: Unwrapping passphrase and inserting into the user session keyring failed [-5]
Info: Check the system log for more information from libecryptfs
ERROR: Your passphrase is incorrect
Enter your login passphrase:
Error: Unwrapping passphrase and inserting into the user session keyring failed [-5]
Info: Check the system log for more information from libecryptfs
ERROR: Your passphrase is incorrect
Enter your login passphrase:
Error: Unwrapping passphrase and inserting into the user session keyring failed [-5]
Info: Check the system log for more information from libecryptfs
ERROR: Your passphrase is incorrect
ERROR: Too many incorrect password attempts, exiting
我想我会再次进行恢复。
顺便说一句:/var/log/syslog
只显示我们在终端中看到的相同消息。
答案1
好吧,这是我恢复的方法:
- 使用第二个管理员帐户登录 [我的第二个帐户是
rootytooty
] 更改为 root 帐户:
sudo su
查看受损帐户的主目录的内容,
ls /home/stephen
并注意该目录包含Access-Your-Private-Data.desktop
和README.txt
文件,但不包含本应存在的文件。删除受损帐户的主目录:
rm -r stephen
删除 ecryptfs 包
apt-get remove ecryptfs-utils libecryptfs0
为损坏的帐户创建一个新的空主目录
mkdir /home/stephen
设置新的主目录的权限
chown stephen /home/stephen chgrp stephen /home/stephen chmod 777 /home/stephen
从受损帐户主目录的备份副本中删除
.Private
和子目录。.ecryptfs
(您确实在外部磁盘上备份了该目录的副本,不是吗?)cd /externaldrive/Backups/stephen-home rm -r .ecryptfs rm -r .Private
将文件从备份驱动器恢复到您创建的新主目录。
cp -pvr /externaldrive/Backups/stephen-home/* /home/stephen/
注意:在此复制活动期间,我的显示器变黑,然后显示一条消息“无信号”,红色磁盘活动指示灯熄灭,我只能听到主板风扇转动的声音。因此,我从活动磁盘(重做备份磁盘)重新启动。我安装了包含备份文件的驱动器和包含 /home/stephen 目录的驱动器,然后使用活动 CD 继续复制文件。
cp -vprf /externaldrive/Backups/stephen-home/* /home/stephen/
重新启动系统并以 登录
stephen
。我的隐藏目录不存在(.mozilla
、.firefox
、.local
等),因此我必须从备份中复制隐藏目录。cp -pvr /externaldrive/Backups/stephen-home/.[^.]* /home/stephen/
几个启动器图标丢失,用户设置消失(窗口背景图像等)。我的 ftp 软件保存的设置消失了。对于其他应用程序也是如此。所以我不得不再次设置我的应用程序。但我的电子邮件历史记录都在那里。
感谢 Nikos Alexandris 在 2012 年 12 月 25 日发表的帖子如何停止使用内置主目录加密感谢 AB、pLumo 和 roaima 的调查。他们查明了问题的原因:自 Ubuntu 10.04 以来一直存在的错误。
因此,如果您正在运行 ecryptfs,请不要更改密码。我希望这可以帮助下一个遇到这个问题的人。我不知道它在 Ubuntu 的后续版本中是否仍然存在,但在 Ubuntu 14.04 LTS 中它仍然存在。
感谢 StackExchange 提供这个场地。
答案2
因此,如果您在更改密码之前拥有 root 帐户,则可以使用用户名:root 和未更改的密码登录,因为sudo su
这是为用户帐户创建 root 登录。如果您使用sudo su
,它将在用户帐户登录后起作用,因此在输入sudo su
并更改密码后。我希望这将是 root 访问权限。