查找不存在用户的文件

查找不存在用户的文件

我进行了时间移位备份恢复,但现在在各个地方我发现了不存在的用户或组。它们看起来像用户 #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、替换-nogroupsudodus用相关用户或组替换;echo do-thisecho do-that 相关命令替换。这样,您可以创建命令行,它将执行您想要的操作并显示将受影响的文件。

-nouser-nogroup没有参数,命令可以像这样

sudo find /home -nouser -exec printf "%s:\n" {} \; -exec echo do-this {} \; -exec echo do-that {} \;

最好先进行echo“试运行”来表明可能会发生正确的事情,然后删除echo执行操作的命令部分。

相关内容