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;