一个初级团队成员在chmod -R 777
做了令人讨厌的/etc/
,导致SSH无法在Ubuntu服务器上远程登录。现在我通过比较其他正常系统手动设置/etc/ssh/*
,/etc/sudoers
,/etc/ssl/*
上的正确文件权限来修复此登录问题。但是还有很多其他文件可能会导致未来的问题。
我正在考虑使用rsync来完成工作,但不希望它同步文件内容,只是权限,不再需要工作。
那可能吗?我看到rsync有-a
选项,但它做得太多了。
如果你在同一个系统上有/ etc的“正常”内容(比如安装在其他目录中,让我们说/mnt/correct/etc
),你可以使用--reference
参数来chmod
和chown
命令,并将它与find
结合使用“正常”目录:
$ cd /mnt/correct/etc
$ find . ! -type l -exec chown -v --reference='{}' /etc/'{}' \;
$ find . ! -type l -exec chmod -v --reference='{}' /etc/'{}' \;
(我假设您使用的是具有GNU coreutils版本chmod和chown的UNIX系统。)
"! -type l"
中的find
条件排除了符号链接,因为否则chmod
将使用链接的权限来更改链接指向的文件(同样适用于chown
)。