我认为我正在谈论的是手册页的这一部分,即只是勉强对我来说太难以理解了:
-删除 ...它不会尝试删除文件名中带有“/”字符的文件名 出于安全原因,路径名相对于“。”...
具体来说,我想做的是$ find . -name '.svn' -type d -delete
。我意识到我可以改用-exec
,但find
似乎对于其他名称也没有问题,包括目录深处(/
其路径名中显然包含许多字符)。
也许它忽略了点文件并且文档是错误的?
答案1
“安全原因”是指在find
枚举文件和删除文件之间,攻击者可能会修改文件路径的一个组件,使其成为指向意外目录的符号链接,从而导致您从意外目录中删除同名文件。例如,如果攻击者可以将其更改为指向的符号链接,则您最终可能会删除/etc/passwd
而不是。/tmp/foo/passwd
foo
/etc
第 9.1.5 节(“-exec 的更安全版本”)GNU 查找文档更详细地讨论了这个问题。