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

2020-09-29 14:12:13 +08:00
 eudore
linux 文件权限中,操作一个文件需要父目录的那些权限? 是否需要检查每级目录?想找到一份完整规范正确的指导,自己在写检查 linux 用户文件权限的代码。
例如读取一个文件 /home/v2ex/.ssh/authorized_keys, 需要 authorized_keys 具有 r,/home 、/home/v2ex 、/home/v2ex/.ssh 三个目录需要 x 权限。
2081 次点击
所在节点    Linux
11 条回复
zengxs
2020-09-29 14:21:02 +08:00
浏览目录需要 r 权限
进入目录需要 x 权限
向目录写入文件需要 w 权限

不检查每级目录
Chenamy2017
2020-09-29 14:23:16 +08:00
你要操作文件,那么你就检查该文件的权限,你要操作目录就检查目录的权限。
NoobX
2020-09-29 14:39:52 +08:00
不知道你用的什么语言
如果是用 C,直接使用 open() syscall,check 返回值和 errno 即可,根据 errno 确定出错原因,流程没那么复杂
Mutoo
2020-09-29 14:45:12 +08:00
需要递归权限的。如果父目录无法访问,就算里面的文件是 777 你也没办法读取。
另外可以用 namei 这个命令检查整个路径的权限。如果中间有某个路径权限有问题,一下就可以发现。
eudore
2020-09-29 14:50:10 +08:00
@NoobX 使用的 go 写的,需要验证 sftp 登录用户的是否具有操作一个 sftp 请求文件的权限。
只有一个需要验证的用户名和目标目录,现在实现权限验证逻辑,但是不请求一个操作需要什么样的权限(文件目录的 rwx 一共六种情况需要什么样的父目录权限)。
eudore
2020-09-29 14:51:48 +08:00
@Mutoo 我看了下 namei 命令,发现是列出一个目录每级的权限信息,但是不能去验证指定用户文件权限。
eudore
2020-09-29 14:57:59 +08:00
个人感觉是对一个文件或目录操作时,是需要其父目录每级 x 权限。
NoobX
2020-09-29 14:58:42 +08:00
@eudore 抱歉,我对 go 不怎么熟悉,就不瞎 BB 误导你了
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
2020-09-29 15:04:27 +08:00
中文版 Wiki 的“Linux 文件权限”的链接貌似挂了,看这个 https://www.linux.com/training-tutorials/understanding-linux-file-permissions/
Mutoo
2020-09-29 21:13:39 +08:00
@eudore 是需要每级的 x 权限,但是这个权限可以来自 owner 、group 或 other 组

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/711560

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX