目录的权限对ls -l [目录]列表目录中文件详细信息的影响

本文深入解析了Linux系统中目录和文件的权限模型,包括r、w、x权限如何影响用户对目录和文件的操作,以及特殊权限SUID、SGID、SBIT的作用。并通过实例展示了用户如何读取文件的详细过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1。目录的权限对ls -l [目录]列表目录中文件详细信息的影响

用户具有某个目录的r权限时才能通过ls -l[目录]列表目录的文件名列表(对目录inode的block内容的r操作),但无法访问目录内文件的权限与其他属性,因为那需要读取目录block内文件名对应文件inode的权限与属性信息(注意不是文件的block块的内容,文件inode的权限与属性信息只需要具有文件所在目录的x权限即可读取,而文件inode的block内容则需要具有文件的r权限才可读取):

用户只具有某个目录的x权限时,可以cd进入该目录,可以ls -l [目录内文件名]查询目录内文件|子目录的权限与属性(这里有个疑问,按理说用户也应该同时具有上层目录的r权限才能读取目录的block内指定文件名|子目录名对应的inode号,才能获取文件|子目录inode的权限+属性信息),但不能ls [目录]列表该目录的文件名列表(对目录block内容的r操作)

是因为有上层目录~haypin的x权限,才能ls -ld ~haypin/Files列表Files目录的权限和属性。但由于没有Files目录的x权限,便无法列表子目录youdao与目录内文件temp2的权限和属性

用户同时具有某个目录的r和x权限时才能通过ls -l [目录]列表目录中文件的详细信息(文件名与文件权限+属性):

除此之外,特殊权限SUID、SGID、SBIT会对用户的"运行时"权限有影响,

2。目录树读取

转载自《鸟哥的Linux私房菜》

文件|子目录inode本身并不记录文件名,文件名的记录是在目录的block中。因此在《鸟哥的Linux私房菜》第五章文件与目录的权限说明中,才会讲到“新增/删除/更名文件名与目录的w权限”有关(目录的block中文件名-文件inode列表始终与文件一一对应)。

用户temp读取/etc/passwd文件的过程为:

1、通过挂载点的信息找到inode号码为2的根目录/的inode,由该inode的权限可知用户temp具有r权限,则可以读取根目录/的目录block中的文件名列表,找到/etc目录对应节点号16777217;

2、读取16777217号inode的权限可知用户temp具有r权限,则可以读取目录/etc的目录block中的文件名列表,找到/etc/passwd文件对应节点号16780473;

3、读取16780473号inode的权限可知用户temp具有r权限,则前往文件block读取文件数据后打印到terminal;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值