更改了 /etc/skel 隐藏文件的权限,锁定了 bash/sudo

更改了 /etc/skel 隐藏文件的权限,锁定了 bash/sudo

背景:我在 Ubuntu 14.04 VM 上犯了一个新手错误,递归更改了/etc文件夹的权限。我一直将它们一次恢复到默认的 1 个目录,使用新的 VM 作为模型,并在“模型”VM 上不存在文件时在 apt-browse.org 上查找适当的权限。当我到达目录时/etc/skel,权限在 、 和 上为 660 .bash_logout.bashrc.profile根据模型和 apt-browse.org,它们应该是 644。浏览到 后/etc/skel,我运行sudo chmod 644 .*然后运行ls -la​​。

从那时起,我不再能够调用 sudo,也无法运行任何 shell 命令,包括浏览、列出文件等。请参阅

x@Y:/etc/sgml$ cd /etc/skel/ && ls -la
total 28
drwxr-xr-x   2 root root  4096 Oct 10  2014 .
drwxr-xr-x 129 root root 12288 Sep 12 15:39 ..
-rw-rw----   1 root root   220 Mar 18  2013 .bash_logout
-rw-rw----   1 root root  3637 Apr 23  2014 .bashrc
-rw-rw----   1 root root   675 Mar 28  2013 .profile
x@Y:/etc/skel$ sudo chmod 644 *
chmod: cannot access '*': No such file or directory
x@Y:/etc/skel$ sudo chmod 644 .*
x@Y:/etc/skel$ ls -la
ls: cannot open directory .: Permission denied
x@Y:/etc/skel$ sudo ls -la
sudo: unable to stat /etc/sudoers: Permission denied
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin
x@Y:/etc/skel$ sudo su
sudo: unable to stat /etc/sudoers: Permission denied
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin

原始截图

此外,服务器上的网站现在会抛出 403 错误:You don't have permission to access / on this server. Server unable to read htaccess file, denying access to be safe

我无法物理访问服务器,因此恢复模式启动存在问题。另外,为什么这个权限更改会破坏某些功能吗?根据文档,这是正确的做法。

答案1

你跑了

cd /etc/skel
sudo chmod 644 .*

.*将查找.files当前工作目录中的所有内容(包括目录)当前工作目录本身以及父目录。您已将模式644应用于以下目录:

.            <-- problem here as it's the working directory
..           <-- big problem here as it's the /etc directory
.bash_logout  
.bashrc  
.config      <-- problem here as it's a directory
.profile

什么都没起作用的原因是,你删除了当前工作目录的执行权限。这意味着你没有权限进入那里!

目录必须具有执行权限才能进入或搜索。当目录的执行权限被删除时,进入目录是一种极端情况,但在这种情况下,permission denied几乎每个命令都会获得执行权限。

您可以退出目录,但由于无法读取cdsudoers 文件(在 中),因此如果不重新启动,您将无法修复权限。/etc

您可以

  • 在恢复模式下启动,启动 root shell 并通过执行以下操作挂载文件系统以读写mount -o remount,rw /

  • 启动实时会话并挂载根分区:(用根分区的正确名称sudo mount /dev/sdxY /mnt替换)然后/dev/sdxYcd /mnt

你没有这样做chmod -R(谢天谢地!)所以你只需要修复三件事。在恢复中执行(相同,但使用 sudo 并且没有实时会话/中路径中的第一个)/mnt

chmod 755 /etc
chmod 755 /etc/skel
chmod 755 /etc/skel/.config

恢复正确的权限。

相关内容