NRe*_*ngh 5 unix command-line find manpages macos
我想我在谈论的是联机帮助页的这一部分,这对我来说几乎无法理解:
-删除
...它不会尝试删除包含“/”字符的文件名
出于安全原因,相对于“.”的路径名...
具体来说,我想做的是$ find . -name '.svn' -type d -delete. 我意识到我可以用-exec它来代替,但find对于其他名称似乎没有问题,包括目录深处(显然/在其路径名中包含许多字符)。
也许它忽略了 dotfiles 而文档是错误的?
“安全原因”是,在枚举find文件和删除它们之间,攻击者可能会修改文件路径的一个组成部分,使其成为指向意外目录的符号链接,从而导致您删除来自意外目录的同名文件。例如,您最终可能会删除/etc/passwd而不是/tmp/foo/passwd攻击者可以更改foo为指向的符号链接/etc。
GNU find 文档的第 9.1.5 节(“-exec 的更安全版本”)更详细地讨论了这个问题。