答案1
是的,下面的所有文件/usr
都应归 root 所有,但/usr/local
根据站点策略,下面的文件可能属于也可能不属于 root。 root 拥有只有系统管理员才能修改的文件是正常的。
有一些文件绝对需要由 root 拥有,否则您的系统将无法正常工作。这些都是设定值root 可执行文件,无论谁调用它们,都以 root 身份运行。常见的 setuid 根二进制文件包括su
和sudo
(在身份验证后以不同用户身份运行另一个程序的程序)、sudoedit
(编辑文件而不是运行任意程序的伴侣sudo
)以及修改用户帐户的程序(passwd
、chsh
、chfn
)。
此外,许多程序需要以额外的组权限运行,并且需要由适当的组(和 root 用户)拥有并设置 setgid 位。
您可以而且应该从包数据库恢复适当的权限。如果您尝试手动修复,您肯定会错过一些东西并留下一些难以诊断的错误。运行以下命令:
rpm -qa | xargs rpm --setugids --setperms
答案2
编辑:请参阅吉尔斯的答案,了解修复权限和所有权的方法,而不是尝试根据我的(对您来说可能不完整)列表进行调整。
有一些文件通常属于另一个组。摘自我的系统:
$ lsb_release -d
Description: Debian GNU/Linux 6.0.9 (squeeze)
$ find /usr/bin -not -group root -exec ls -g {} \; | awk '{print $NF,$3}'
/usr/bin/crontab crontab
/usr/bin/mlocate mlocate
/usr/bin/mutt_dotlock mail
/usr/bin/expiry shadow
/usr/bin/mail-unlock mail
/usr/bin/wall tty
/usr/bin/mail-touchlock mail
/usr/bin/bsd-write tty
/usr/bin/screen utmp
/usr/bin/dotlockfile mail
/usr/bin/chage shadow
/usr/bin/ssh-agent ssh
/usr/bin/mail-lock mail
带有 SUID 位的文件:
$ find /usr/bin -perm -4000
/usr/bin/newgrp
/usr/bin/sudoedit
/usr/bin/chfn
/usr/bin/chsh
/usr/bin/gpasswd
/usr/bin/passwd
/usr/bin/sudo