尝试更新我的存储库时出现以下错误,
avinash@avinash-VirtualBox:~$ sudo apt-get update
sudo: unable to stat /etc/sudoers: No such file or directory
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin
Run Code Online (Sandbox Code Playgroud)
好像我不小心删除了我的/etc/sudoers文件。/etc/sudoers文件实际上属于sudo包,所以我尝试重新安装sudo,pkexec但它不起作用。
avinash@avinash-VirtualBox:~$ pkexec apt-get install sudo
Reading package lists... Done
Building dependency tree
Reading state information... Done
sudo is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 301 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue [Y/n]? y
Setting up sudo (1.8.6p3-0ubuntu3.1) ...
WARNING: /etc/sudoers not present!
chown: cannot access ‘/etc/sudoers’: No such file or directory
dpkg: error processing sudo (--configure):
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
sudo
E: Sub-process /usr/bin/dpkg returned an error code (1)
avinash@avinash-VirtualBox:~$
Run Code Online (Sandbox Code Playgroud)
而且我也试过,
avinash@avinash-VirtualBox:~$ pkexec apt-get install --reinstall sudo
Reading package lists... Done
Building dependency tree
Reading state information... Done
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 301 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
E: Internal Error, No file name for sudo:amd64
Run Code Online (Sandbox Code Playgroud)
我怎样才能让 sudo命令再次工作?
在我备份/etc/sudoers文件后:
sudo mv /etc/sudoers{,.bak}
Run Code Online (Sandbox Code Playgroud)
我遇到了与您的情况相同的错误。
如果你使用
pkexec apt-get install sudo
Run Code Online (Sandbox Code Playgroud)
不会工作,因为apt-get会看到:
sudo is already the newest version.
Run Code Online (Sandbox Code Playgroud)
如果您使用:
pkexec apt-get install --reinstall sudo
Run Code Online (Sandbox Code Playgroud)
也不会工作,因为/etc/sudoers找不到文件被删除和替换。
但是如果你使用:
pkexec apt-get purge sudo
pkexec apt-get install sudo
Run Code Online (Sandbox Code Playgroud)
如这个答案中所述,一切都会像魅力一样工作。我可以这样说,因为我只是再次测试它。
因此,浪费时间并使用活动磁盘启动系统是没有意义的。
只需从 Ubuntu live disk 启动并将/etc/sudoers文件复制到已安装的 Ubuntu 分区的/etc目录即可。
启动 Ubuntu live dis 并在启动时单击尝试 Ubuntu 选项。
运行sudo blkid命令来了解已安装的 Ubuntu 的分区 ID。
将已安装的 Ubuntu 分区挂载到特定目录,如下所示,
sudo mkdir /media/foo
sudo mount /dev/sdaX /media/foo # /dev/sdaX installed Ubuntu's partition id.
Run Code Online (Sandbox Code Playgroud)现在将 live 磁盘的sudoers文件复制到/etc安装的 Ubuntu 分区的目录中。
sudo cp /etc/sudoers /media/foo/etc
Run Code Online (Sandbox Code Playgroud)现在从硬盘启动(启动你的 Ubuntu 操作系统)。它会起作用。
| 归档时间: |
|
| 查看次数: |
24668 次 |
| 最近记录: |