Linux文件权限可以被欺骗吗?

前端之家收集整理的这篇文章主要介绍了Linux文件权限可以被欺骗吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我今天遇到了这个例子,我想知道 Linux文件权限对隐藏信息的可靠性
$mkdir fooledYa
$mkdir fooledYa/ohReally
$chmod 0300 fooledYa/
$cd fooledYa/
$ls 
>>> ls: cannot open directory .: Permission denied
$cd ohReally
$ls -ld .
>>> drwxrwxr-x 2 user user 4096 2012-05-30 17:42 .

现在我不是Linux操作系统专家,所以我毫不怀疑那里有人会向我解释,从操作系统的角度来看,这是完全合乎逻辑的.但是,我的问题仍然存在,是否有可能愚弄而不是黑客操作系统让你查看你不应该查看的文件/ inode信息?如果我发出命令chmod 0000 fooledYa,有经验的程序员可以找到一些关于读取文件方法,例如fooledYa / ohReally / foo.txt怎么办?

解决方法

$ls -lhd fooledYa/
d-wx------ #snip

首先是第一件事:我可以写入目录(创建新条目),然后我可以执行(cd)到目录.但是,我无法读取该目录.这意味着什么并不直观.

在Unix系统中使用目录时,目录指向inodes,这与指针条目不同.能够跟踪目录树中的引用是由eXecute位控制的.对于树中的每个目录级别,操作系统在下降到下一级别之前检查执行位.

同时,Read位控制访问inode的内容.您可以在文件系统上引用的所有内容都是inode条目.目录或文件,它们指向一个inode.

ls -ldi fooledYa/
121100226 d-wx------ #snip

在这种情况下,目录inode是121100226.读取权限告诉我是否可以访问用户空间中的inode文件以读取其内容.目录inode的内容是对其他文件的引用.内核总能读取它.作为用户,您可以通过内核关于其中条目的决策来控制.

因此,因为ls试图读取内容以告诉我那里有什么(由Read标志检查),它被拒绝.但是,由于我仍然拥有eXecute权限,内核将允许我遍历我指定的文件,如果我想要的文件上面的目录都允许我执行它们,无论我是否可以读取它们以查看引用内容.

因此,要总结目录,请将执行视为主权限.没有它,您无法进入目录来执行任何操作.之后,将它们视为两列文件.如果您具有读取权限,则可以查看条目.如果您具有写入权限,则可以添加删除条目.如果您缺少这两个权限但已执行,则可以引用列表中的条目,但无法读取列表.

这是inode的一个很好的说明性示例,以及它们如何表示磁盘引用上的目录引用和文件块:http://teaching.idallen.com/dat2330/04f/notes/links_and_inodes.html

猜你在找的Linux相关文章