linux – Find返回“find:.:Permission denied”,但我不是在搜索

linux – Find返回“find:.:Permission denied”,但我不是在搜索,第1张

概述我有一个巨大的 shell脚本,我正在排除故障.我经常使用sudo从我的主目录运行脚本.每当执行一次查找时,我都会看到此错误: 发现:.:权限被拒绝 确实root没有访问我的主目录(这是当前工作目录或上面的错误中的.),但我不是要求find在我的主目录中做任何事情而宁愿完全不管它. 要真正开车回家我跑了这个: sudo find / dev -maxdepth 1-type f 并仍然得到相同的错 @H_502_1@ 我有一个巨大的 shell脚本,我正在排除故障.我经常使用sudo从我的主目录运行脚本.每当执行一次查找时,我都会看到此错误:

发现:.:权限被拒绝

确实root没有访问我的主目录(这是当前工作目录或上面的错误中的.),但我不是要求find在我的主目录中做任何事情而宁愿完全不管它.

要真正开车回家我跑了这个:

sudo find / dev -maxdepth 1-type f

并仍然得到相同的错误.如果删除了-type -f,则会将错误附加到预期结果的末尾.当然,如果我cd / dev没有错误..可能因为root可以访问/ dev.即使我认为它不会导致问题,但它会使脚本看起来很麻烦.如何防止脚本显示这些错误?

解决方法 我跑了:

strace find /dev -maxdepth 1

在GNU / linux(Ubuntu)上,结果发现find使用fchdir syscall遍历目录树,最后执行fchdir返回原始工作目录.这是一个片段:

open(".",O_RDONLY|O_NOCTTY|O_NONBLOCK|O_LARGEfile|O_DIRECTORY|O_nofollow) = 4fchdir(4)                               = 0... irrelevant ...write(1,"/dev\n",5)                   = 5open("/dev",O_RDONLY|O_NONBLOCK|O_LARGEfile|O_DIRECTORY|O_CLOEXEC) = 5fcntl64(5,F_GETFD)                     = 0x1 (flags FD_CLOEXEC)fchdir(5)                               = 0... potentially more fchdirs ...fchdir(4)                               = 0close(4)                                = 0

我的暗示?运行find之前的cd / tmp(或其他一些完全可访问的目录).

总结

以上是内存溢出为你收集整理的linux – Find返回“find:.:Permission denied”,但我不是在搜索全部内容,希望文章能够帮你解决linux – Find返回“find:.:Permission denied”,但我不是在搜索所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1028681.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存