[Linux]目录权限对文件操作的影响

问题

我们常使用linux以下命令

cd 进入目录

ls 列出目录中的文件

或者直接打开目录中的文件

以上操作对于目录权限位的设置来说,是有一定迷惑性的,如表格所示

  cd打开目录 ls列出文件 操作目录内文件(读/写/执行)
r No No No
w No No No
x Yes No Yes

可以看见,当目录只有读取权限的时候,是无法用cd打开、ls列出或者操作目录内的文件的;

而事实上当目录具备读取权限时,实际上是可以读取到该目录信息,并且列出当前目录的文件的。

那么,为什么这里无法用cd进入目录呢?因为cd其实就是chdir,我们看看下面这段话对chdir行为的描述:

chdir函数用于改变当前工作目录。调用参数是指向目录的指针,调用进程需要有搜索整个目录的权限。每个进程都具有一个当前工作目录。在解析相对目录引用时,该目录是搜索路径的开始之处。如果调用进程更改了目录,则它只对该进程有效,而不能影响调用它的那个进程。在退出程序时,shell还会返回开始时的那个工作目录。

chdir实际上就是修改进程当前工作目录从当前目录改变到目标目录,如果目标目录不具备执行权限就无法应用chdir函数;

实际上ls无法执行,和无法操作目录内的文件,也是因为这个原因,因为不具备执行权限所以系统无法对该目录应用搜索,也就定位不到该文件,所以无法进行下一步操作,只能抛出permission denied.

猜你喜欢

转载自www.cnblogs.com/yiyide266/p/9998475.html