Distributions
› Ubuntu
› Fedora
› CentOS
中文资源站
› 网易开源镜像站
Geekgogo
V2EX  ›  Linux

centos7 中明明就有文件存在,但操作时却显示 No such file or directory

  •  
  •   Geekgogo · Aug 20, 2018 · 48460 views
    This topic created in 3003 days ago, the information mentioned may be changed or developed.

    搞不懂是什么情况,有大佬帮忙看看嘛? 如图 1

    Supplement 1  ·  Aug 21, 2018

    统一回复一下大家: 非常抱歉我的问题没有描述仔细,问题应该是出在docker容器上面,具体原因最后也没找到,因为急着解决就重新做了一个容器。感谢大家百忙之中抽空回复。

    61 replies  •  2022-10-18 10:44:51 +08:00
    zlkent
    zlkent
    Aug 20, 2018❤️1
    1
    chmod 777 ./92
    Oi0Ydz26h9NkGCIz
    Oi0Ydz26h9NkGCIz
    Aug 20, 2018
    2
    权限
    wenzhoou
    wenzhoou
    Aug 20, 2018 via Android
    3
    大概是有不可见字符吧
    Geekgogo
    Geekgogo
    OP
    Aug 20, 2018
    4
    @zlkent 试过了,一样的
    @aruisi 应该没什么权限问题吧?我用的是 root 用户
    openbsd
    openbsd
    Aug 20, 2018
    5
    输入文件名时坚持用自动补全,这样可以避免很多问题
    Geekgogo
    Geekgogo
    OP
    Aug 20, 2018
    6
    @wenzhoou 该如何检测呢? 92 这个目录是明显能看到的,但是对它以及它的子目录操作的话就报找不到的错误
    Geekgogo
    Geekgogo
    OP
    Aug 20, 2018
    7
    @openbsd 可以补全的
    neoblackcap
    neoblackcap
    Aug 20, 2018
    8
    @Geekgogo 你试试先重命名看看
    billwsy
    billwsy
    Aug 20, 2018 via iPad
    10
    92 带了颜色?
    U7Q5tLAex2FI0o0g
    U7Q5tLAex2FI0o0g
    Aug 20, 2018
    11
    很明显 92xxxxxx 那个文件跟 92 目录是在同一个目录里的
    应该是 ls 92xxxxxxxxx
    而不是 ls 92/92xxxxxxxxx
    U7Q5tLAex2FI0o0g
    U7Q5tLAex2FI0o0g
    Aug 20, 2018
    12
    你 chmod 777 92 按下 tab 的时候出现 2 个可选项( 92/ 和 92xxxxxxxx ), 这两个就是在同一目录的
    你文件放错目录了 8 mv 92xxxxx 92/ 先
    meowoo
    meowoo
    Aug 20, 2018 via iPhone
    13
    文件夹是你自己创建的么 可能设置了不可写 试试 chattr 加一下权限
    Geekgogo
    Geekgogo
    OP
    Aug 20, 2018❤️1
    14
    @billwsy @littleylv 92 是一个目录,这个目录还有一个 92xxxxxxxxxx 的文件
    liaohongxing
    liaohongxing
    Aug 20, 2018
    15
    同样的命令 ubuntu server 16.04 lts 没有问题。
    billwsy
    billwsy
    Aug 20, 2018 via iPad
    16
    运行一下 ls -la | less 看看有没有异样?
    Geekgogo
    Geekgogo
    OP
    Aug 20, 2018
    17
    @littleylv 跟 92 这个目录同一级有一个 92yyyyyy 的文件,92 目录下还有一个 92xxxxxx 的文件,我的目的是把 92yyyyy 这个文件移动到 92 目录下,但是不管是 mv,mkdir,cp,touch,chmod 等等操作都在报 not such file or directory
    U7Q5tLAex2FI0o0g
    U7Q5tLAex2FI0o0g
    Aug 20, 2018
    18
    @Geekgogo #14 哦我看错了,确实 92/ 的时候能 tab 出来 确实 92 里面也有 92xxxx 文件
    disk
    disk
    Aug 20, 2018 via Android
    19
    用-i 把 inode 列出来进行操作行吗?
    DANG
    DANG
    Aug 20, 2018
    20
    用绝对路径试试吧
    jimages
    jimages
    Aug 20, 2018 via iPhone
    22
    selinux 关掉
    est
    est
    Aug 20, 2018
    23
    有可能你当前路径已经被删了。先 cd ~ 或者 cd / 退回到一个存在的目录。
    tonzeng
    tonzeng
    Aug 20, 2018
    24
    pwd
    zjsxwc
    zjsxwc
    Aug 20, 2018
    25
    起码发下` ls -la 92 ` 结果,让我们知道你文件当前的权限类型啊
    tatelucky
    tatelucky
    Aug 20, 2018
    26
    ls -all
    skylancer
    skylancer
    Aug 20, 2018❤️1
    27
    神特么关 SELinux
    lcdtyph
    lcdtyph
    Aug 20, 2018
    28
    感觉是 chmod 的问题?
    chmod 有 alias 吗, `alias | grep chmod` 看看输出。
    还有把 92 换成绝对路径试试。
    ryd994
    ryd994
    Aug 20, 2018 via Android
    29
    看看 dmesg 有没有相关信息
    不排除文件系统损坏,有试过 fsck 么?
    #23 说的情况完全有可能。文件删除后,inode 要等到所以 fd 关闭后才回收

    @zlkent
    @jimages 碰到问题就 777 或者关 SELinux 是不懂 rtfm 还误导他人
    如果是普通权限问题,那应该是 permission denied
    如果是 SELinux,可以 audit 日志,或者换成 permissive 再 audit,确认问题后再改回 enforce
    zlkent
    zlkent
    Aug 20, 2018
    30
    @ryd994 #29 楼主的命令打的是 chmod 777 92 提示错误,我按他写改成 chmod 777 ./92。只是加了./而已,误导谁了?
    b821025551b
    b821025551b
    Aug 20, 2018❤️1
    31
    ryd994
    ryd994
    Aug 20, 2018 via Android
    32
    @zlkent 我道歉,喷错了
    catror
    catror
    Aug 20, 2018
    33
    直觉是文件系统的问题
    xaviermoon
    xaviermoon
    Aug 20, 2018
    34
    ldd 查看下,应该是少动态库的问题
    jimages
    jimages
    Aug 20, 2018 via iPhone
    35
    @ryd994 关 selinux 是检查是不是 selinux 造成的权限错误…你说那么复杂…再加上 selinux 的配置本来就很复杂…先确定是不是 selinux 的问题再来确定该如何配置是不是对于新手来说是不是更加通俗易懂?
    jimages
    jimages
    Aug 20, 2018
    36
    @skylancer
    @ryd994
    第一,为啥要直接关掉 selinux,看样子应该 linux 操作不是特别熟练,而且既然找不到问题的原因,是不是应该先找到问题的来源?关掉 selinux 就是先找到问题的来源,确定了是什么问题再来着手修复,你说了半天,还要让人家 audit.log 来找错误,还得把日志得看明白是不是让人家觉得望而生畏?是不是测试服务或者开发服务器都得把安全设置做好?比如,你要帮小白修电脑垃圾,你是觉得让人家装一个 360 直接清理垃圾,还是让人家去 CClean 下载安装软件,然后手把手教人家用软件,还是让他在一大坨 windows 设置找到系统自带的清理电脑的设置?
    第二,我确实不想多打字,没有说清楚,如果 LZ 反馈关掉 selinux 之后问题解决了我们再说后续的设置的问题,这样是不是能够快速排查掉是不是 selinux 的锅?至少不用纠结是不是 selinux 的问题。
    第三,你说的那么多命令,人家不会用怎么办?那你得教会人家用咯,而且人家是做开发不是做运维,为啥一定要把大把的时间经历放在代码以外的地方?
    第四,生产服务器一定要在评估影响之后再去修改安全和权限相关的问题。
    alen
    alen
    Aug 20, 2018
    37
    试试管道
    iwaifor
    iwaifor
    Aug 20, 2018
    38
    这个是容器环境么
    yezhiye
    yezhiye
    Aug 20, 2018 via Android
    39
    怎么没人说开放 ssh 让我连上去啊😏
    PulpFunction
    PulpFunction
    Aug 20, 2018
    40
    tree 看一下啊
    PulpFunction
    PulpFunction
    Aug 20, 2018
    41
    demo 下 tree 一下 不就完事了?
    不就美滋滋?
    cnrting
    cnrting
    Aug 20, 2018 via iPad
    42
    严重怀疑有不可见字符
    wenzhoou
    wenzhoou
    Aug 20, 2018 via Android
    43
    @Geekgogo ls -b 的结果是什么样的?
    kaneg
    kaneg
    Aug 20, 2018 via iPhone
    44
    根据你的主机名来看,这应该是个 docker 容器。我碰到过类似的问题,同一个 image 在不同的 docker 主机上创建出来,在 ubuntu 上创建出来的一切正常,而在 centos 上创建出来的文件用 rm -rf 删不掉,删完用 ls 会出现一堆问好。

    到现在也没有查到具体原因,最后放弃 centos
    webjin1
    webjin1
    Aug 20, 2018 via Android
    45
    lsattr -l 看看权限
    realityone
    realityone
    Aug 20, 2018
    46
    你用的是不是 overlayfs
    raysonx
    raysonx
    Aug 20, 2018 via iPad
    47
    看楼主贴的主机名像是 docker 环境,如果是的话,这个目录是在 image 里还是挂载的 volume ?哪种类型的 volume ?
    建议也发一下 docker info 的输出和 docker inspect 容器名 的输出。
    tangweihua163
    tangweihua163
    Aug 20, 2018
    48
    @b821025551b 你是在逗我么?
    shanks
    shanks
    Aug 20, 2018
    49
    感觉是文件系统层面的问题
    lfzyx
    lfzyx
    Aug 20, 2018
    50
    丨丨丨

    你看得出我输入的是啥么
    v2lf
    v2lf
    Aug 20, 2018
    51
    是不是使用的 windows linux 子系统- - 我今天也碰到这个问题了
    zyqf
    zyqf
    Aug 21, 2018 via Android
    52
    推测可能是软链,对应文件被删,但软链的文件是可以存在的,但实际对这个软链操作都是无效的,因为实际文件不存在。个人推测。
    ryd994
    ryd994
    Aug 21, 2018 via Android
    53
    @zyqf 如果是这样的话,ls -l 会显示链接目标
    msg7086
    msg7086
    Aug 21, 2018
    54
    @lfzyx gun
    wuweidong0107
    wuweidong0107
    Aug 21, 2018
    55
    先用 strace 命令看一下是哪一个系统调用返回的没有权限。
    Geekgogo
    Geekgogo
    OP
    Aug 21, 2018
    56
    @kaneg 应该跟你一样的情况,镜像的问题。找不到原因,最后重做了一个
    Geekgogo
    Geekgogo
    OP
    Aug 21, 2018
    57
    @wenzhoou docker 容器的问题,也不知道什么原因,着急着解决就重做了一个容器。出问题的已经删掉了
    Geekgogo
    Geekgogo
    OP
    Aug 21, 2018
    58
    @jimages 辛苦你打那么多字了,确实跟 selinux 没关系,是 docker 容器的问题
    alen
    alen
    Aug 21, 2018
    59
    docker 容器里把原本镜像文件夹或文件删除了,然后操作就会出现。
    skylancer
    skylancer
    Aug 21, 2018
    60
    @jimages
    1. 卤煮操作的文件 99%不会是 SELinux 导致的问题,不是跟系统相关的东西我想不到上来就直奔 SELinux 的理由
    2. 开 Permissive 看 aduit 更容易看出来是不是 SELinux context 的问题
    zjsegzhf
    zjsegzhf
    Oct 18, 2022
    61
    @xaviermoon 感谢,我遇到了类似的问题。
    最后检查了是缺少了动态库。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2221 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 95ms · UTC 14:12 · PVG 22:12 · LAX 06:12 · JFK 09:12
    ♥ Do have faith in what you're doing.