加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-14 01:34:34 所属栏目:Linux 来源:网络整理
导读:我有一个巨大的 shell脚本,我正在排除故障.我经常使用sudo从我的主目录运行脚本.每当执行一次查找时,我都会看到此错误: 发现:.:权限被拒绝 确实root没有访问我的主目录(这是当前工作目录或上面的错误中的.),但我不是要求find在我的主目录中做任何事情而宁
我有一个巨大的 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) = 4
fchdir(4)                               = 0

... irrelevant ...

write(1,"/devn",5)                   = 5
open("/dev",O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 5
fcntl64(5,F_GETFD)                     = 0x1 (flags FD_CLOEXEC)
fchdir(5)                               = 0

... potentially more fchdirs ...

fchdir(4)                               = 0
close(4)                                = 0

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读