/usr 所有者应该是 root 吗?

/usr 所有者应该是 root 吗?

安装完后MySQL数据库上开放SUSE我意识到所有文件的/usr/bin所有者都更改为“mysql”组的“mysql”用户。也许我有一些错误。最糟糕的问题是/usr/bin/sudo命令,这显然不起作用,但我已经收回了所有权(已登录)现在就可以了。

我应该将所有文件的所有者更改/usr/bin或者这可能会导致其他程序出现故障?他们是否也应该在“权限”选项卡中标记“设置 UID”选项sudo

答案1

是的,下面的所有文件/usr都应归 root 所有,但/usr/local根据站点策略,下面的文件可能属于也可能不属于 root。 root 拥有只有系统管理员才能修改的文件是正常的。

有一些文件绝对需要由 root 拥有,否则您的系统将无法正常工作。这些都是设定值root 可执行文件,无论谁调用它们,都以 root 身份运行。常见的 setuid 根二进制文件包括susudo(在身份验证后以不同用户身份运行另一个程序的程序)、sudoedit(编辑文件而不是运行任意程序的伴侣sudo)以及修改用户帐户的程序(passwdchshchfn)。

此外,许多程序需要以额外的组权限运行,并且需要由适当的组(和 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

相关内容