V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
eudore
V2EX  ›  Linux

Linux 文件权限中,操作一个文件需要父目录的那些权限?

  •  
  •   eudore · 2020-09-29 14:12:13 +08:00 · 2262 次点击
    这是一个创建于 1515 天前的主题,其中的信息可能已经有所发展或是发生改变。
    linux 文件权限中,操作一个文件需要父目录的那些权限? 是否需要检查每级目录?想找到一份完整规范正确的指导,自己在写检查 linux 用户文件权限的代码。
    例如读取一个文件 /home/v2ex/.ssh/authorized_keys, 需要 authorized_keys 具有 r,/home 、/home/v2ex 、/home/v2ex/.ssh 三个目录需要 x 权限。
    11 条回复    2020-09-29 21:13:39 +08:00
    zengxs
        1
    zengxs  
       2020-09-29 14:21:02 +08:00
    浏览目录需要 r 权限
    进入目录需要 x 权限
    向目录写入文件需要 w 权限

    不检查每级目录
    Chenamy2017
        2
    Chenamy2017  
       2020-09-29 14:23:16 +08:00
    你要操作文件,那么你就检查该文件的权限,你要操作目录就检查目录的权限。
    NoobX
        3
    NoobX  
       2020-09-29 14:39:52 +08:00
    不知道你用的什么语言
    如果是用 C,直接使用 open() syscall,check 返回值和 errno 即可,根据 errno 确定出错原因,流程没那么复杂
    Mutoo
        4
    Mutoo  
       2020-09-29 14:45:12 +08:00
    需要递归权限的。如果父目录无法访问,就算里面的文件是 777 你也没办法读取。
    另外可以用 namei 这个命令检查整个路径的权限。如果中间有某个路径权限有问题,一下就可以发现。
    eudore
        5
    eudore  
    OP
       2020-09-29 14:50:10 +08:00
    @NoobX 使用的 go 写的,需要验证 sftp 登录用户的是否具有操作一个 sftp 请求文件的权限。
    只有一个需要验证的用户名和目标目录,现在实现权限验证逻辑,但是不请求一个操作需要什么样的权限(文件目录的 rwx 一共六种情况需要什么样的父目录权限)。
    eudore
        6
    eudore  
    OP
       2020-09-29 14:51:48 +08:00
    @Mutoo 我看了下 namei 命令,发现是列出一个目录每级的权限信息,但是不能去验证指定用户文件权限。
    eudore
        7
    eudore  
    OP
       2020-09-29 14:57:59 +08:00
    个人感觉是对一个文件或目录操作时,是需要其父目录每级 x 权限。
    NoobX
        8
    NoobX  
       2020-09-29 14:58:42 +08:00
    @eudore 抱歉,我对 go 不怎么熟悉,就不瞎 BB 误导你了
    libook
        9
    libook  
       2020-09-29 15:00:50 +08:00
    需要检查每一级目录的权限,但并不一定每一级目录都必须给所有权限。

    可以参考这个 https://wiki.archlinux.org/index.php/Users_and_groups_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)
    libook
        10
    libook  
       2020-09-29 15:04:27 +08:00
    中文版 Wiki 的“Linux 文件权限”的链接貌似挂了,看这个 https://www.linux.com/training-tutorials/understanding-linux-file-permissions/
    Mutoo
        11
    Mutoo  
       2020-09-29 21:13:39 +08:00
    @eudore 是需要每级的 x 权限,但是这个权限可以来自 owner 、group 或 other 组
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2739 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 12:36 · PVG 20:36 · LAX 04:36 · JFK 07:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.