Linux 文件权限中,操作一个文件需要父目录的那些权限?
- 0次
- 2021-06-16 18:00:35
- idczone
linux 文件权限中,操作一个文件需要父目录的那些权限? 是否需要检查每级目录?想找到一份完整规范正确的指导,自己在写检查 linux 用户文件权限的代码。
例如读取一个文件 /home/v2ex/.ssh/authorized_keys, 需要 authorized_keys 具有 r,/home 、/home/v2ex 、/home/v2ex/.ssh 三个目录需要 x 权限。
浏览目录需要 r 权限
进入目录需要 x 权限
向目录写入文件需要 w 权限
不检查每级目录
你要操作文件,那么你就检查该文件的权限,你要操作目录就检查目录的权限。
不知道你用的什么语言
如果是用 C,直接使用 open() syscall,check 返回值和 errno 即可,根据 errno 确定出错原因,流程没那么复杂
需要递归权限的。如果父目录无法访问,就算里面的文件是 777 你也没办法读取。
另外可以用 namei 这个命令检查整个路径的权限。如果中间有某个路径权限有问题,一下就可以发现。
使用的 go 写的,需要验证 sftp 登录用户的是否具有操作一个 sftp 请求文件的权限。
只有一个需要验证的用户名和目标目录,现在实现权限验证逻辑,但是不请求一个操作需要什么样的权限(文件目录的 rwx 一共六种情况需要什么样的父目录权限)。
我看了下 namei 命令,发现是列出一个目录每级的权限信息,但是不能去验证指定用户文件权限。
个人感觉是对一个文件或目录操作时,是需要其父目录每级 x 权限。
抱歉,我对 go 不怎么熟悉,就不瞎 BB 误导你了
需要检查每一级目录的权限,但并不一定每一级目录都必须给所有权限。
可以参考这个 https://wiki.archlinux.org/index.php/Users_and_groups_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)
中文版 Wiki 的“Linux 文件权限”的链接貌似挂了,看这个 https://www.linux.com/training-tutorials/understanding-linux-file-permissions/
是需要每级的 x 权限,但是这个权限可以来自 owner 、group 或 other 组