我进行了时间移位备份恢复,但现在在各个地方我发现了不存在的用户或组。它们看起来像用户 #1034 组 #1010 或用户 #501,我猜这就是为什么许多东西都无法正常工作,例如 TCP 端口 80,所以我的服务器不再可访问。我如何查找和修复这些错误?fsck。我做了 find find -user 1034|more,但这需要太多的浏览。也许更好的表达方式就像我用于权限一样
find . -user old-user -exec chown new-user:new-group {} \; or sudo find . -type f ! -user 501 -exec chown 0 {} \;
,但是我如何获得输出来确认?
我真正想要的是一个关于如何在一个地方 sting 这些表达式的页面,因为帮助并没有提供所有的操作符,我不得不到处浏览才能找到至少文件操作和 grep 的不同部分
答案1
如果我理解正确的话,以下内容可以为你提供帮助
-exec
根据以下示例创建包含多个部分的命令行,第一部分显示target-file:
,接下来的部分执行操作。
$ sudo find /home/sudodus/Backup/ -user sudodus -exec printf "%s:\n" {} \; -exec echo do-this {} \; -exec echo do-that {} \;
[sudo] password for nio:
/home/sudodus/Backup/:
do-this /home/sudodus/Backup/
do-that /home/sudodus/Backup/
/home/sudodus/Backup/5:
do-this /home/sudodus/Backup/5
do-that /home/sudodus/Backup/5
/home/sudodus/Backup/7:
do-this /home/sudodus/Backup/7
do-that /home/sudodus/Backup/7
/home/sudodus/Backup/6:
do-this /home/sudodus/Backup/6
do-that /home/sudodus/Backup/6
/home/sudodus/Backup/4:
do-this /home/sudodus/Backup/4
do-that /home/sudodus/Backup/4
您可以/home/sudodus/Backup/
用您想要搜索的相关目录替换;-user
用-nouser
、-group
、替换-nogroup
;sudodus
用相关用户或组替换;echo do-this
用echo do-that
相关命令替换。这样,您可以创建命令行,它将执行您想要的操作并显示将受影响的文件。
-nouser
,-nogroup
没有参数,命令可以像这样
sudo find /home -nouser -exec printf "%s:\n" {} \; -exec echo do-this {} \; -exec echo do-that {} \;
最好先进行echo
“试运行”来表明可能会发生正确的事情,然后删除echo
执行操作的命令部分。