如何恢复大规模所有权的变化?

可能重复:
恢复chmod 777 / -R

当我在我的服务器上时,我意外地执行了chown someuser * -R
我想也许通过发布chown root * -R将以某种方式解决它。 但似乎有一些问题。
例如,现在DirectAdmin在我尝试login时performance怪异。 它说:

无法确定Usertype
user.conf需要修复

有什么办法可以解决这个问题吗?

更新:我想也许是通过编写一个shell脚本来检查每个文件的组,并相应地设置用户来解决这个问题,因为据我所知,通常所有文件对于用户和组都具有相同的值。

这是不幸的!

你发出的后一个命令是把所有文件的所有权改为root。 因此,任何设置为suid的文件(设置UID,以便它们以其所有者的权限运行)将以root权限运行,并且用户也不会拥有其主目录。 对此非常小心。 考虑使用ls来search这样的文件,因为如果你的用户有任何suid shell脚本或者其他东西,这可能是一个严重的安全问题。

你面临困难的情况; 您现在必须确定谁应拥有哪些文件,并手动分配它。 在某些情况下,重build会更容易,而且这样做尤其如果你有configuration备份(我假设你备份了你的数据)。 如果你不这样做,那么现在就把它全部备份起来,以便在重build时有一个参考。 但是,如果您不介意有点不准确,那么有一些简单的规则:

  • 用户应该拥有其主目录中的所有文件。 对于每个用户, chown -R username ~username
  • 一个改变自己文件的服务通常应该由运行的web应用程序的用户所拥有。 虽然你可以configuration这个,如果你使用的是通常被称为apache的apache。 对于每个这样的应用程序的webroot, chown -R apache /path/to/webroot
  • 类似地,将被服务更改的文件和目录(例如上传目录)应该由服务运行的用户所拥有。 对于它们中的每一个, chmod -R username /path/to/filesystem/object
  • 属于系统服务的SSL私钥通常由root拥有(只能由所有者读取)。 他们存放的地方差别很大,但在任何情况下,你或你的前任都把他们放在那里。 find它们,并为每个chown root somefile.key
  • 具有读权限仅限于所有者的configuration文件的应用程序,但在删除根后读取这些文件,必须拥有这些文件(这听起来像是您的DirectAdmin user.conf,可能是听起来像)。 chown username /path/to/file

尽pipe如此,你应该考虑从备份恢复用户的主目录,因为他们可能已经设置了各种权限,并有各种各样的东西在那里。 这样做有助于避免开始时提到的安全风险。

你不能推断组中的所有者。 例如,用户主目录中的文件通常拥有所有权username:users 。 此外,许多文件都有可以编辑它们的特定所有者,以及可以读取和执行这些文件的特定组,并且对其他用户没有权限。 这也会导致奇怪的行为,或者只是失败(组不需要对应于用户)。

祝你好运! 如果你select不重build,从现在开始直到永远,如果你发现一个文件被破坏或权限不正确的奇怪的错误,你将不得不检查所有权。