一个初级团队成员在/ etc /中做了一个讨厌的chmod -R 777,导致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系统.)
find中的“!-type l”条件排除了符号链接,因为否则chmod将使用链接的权限来更改链接指向的文件(同样适用于chown).