使用 chmod 777 设置整个 fs 后获得 pppd“必须是 root”

mik*_*mik -1 permissions pppd

我有一个名为的进程network_manager,它在某个时候运行一个命令/usr/sbin/pppd。一切正常。

但是,某些文件在文件系统上变得不可读,我使用sudo chmod -R 777 rootfs它来获得访问权限。运行此命令后,network_manager无法再运行/usr/sbin/pppd,出现错误:

/usr/sbin/pppd: must be root to run /usr/sbin/pppd, since it is not setuid-root

我不明白,运行chmod 777并没有改变所有者,pppd为什么它不再工作?

它通过设置工作

chown root /usr/sbin/pppd 
chmod u+s /usr/sbin/pppd
Run Code Online (Sandbox Code Playgroud)

但我不明白为什么

Ste*_*itt 10

通过运行chmod 777,您删除了 setuid 位pppd。要恢复它,您需要运行

chmod 4755 /usr/sbin/pppd
Run Code Online (Sandbox Code Playgroud)

请注意,通过chmod 777以这种方式运行递归,您可能已经破坏了其他权限,并且您肯定使您的系统变得相当不安全。