linux下文件的读、写、执行权限很直观。
但是,目录的读、写、执行 权限分别代表什么意义呢?
我的总结:
r权限:表示具有读取目录结构列表的权限。
w权限:表示具有修改该目录结构列表的权限,具体指以下权限:
- 建立新的文档和目录
- 删除已经存在的档案与目录(不论该档案属于谁的)
- 将已存在的档案或目录进行更名
- 搬移该目录内的档案、目录位置。
不过需要注意的是,具有修改目录结构列表的权限之后,并不一定能修改目录结构。因为,想要修改目录结构就需要执行命令,而在目录下执行命令的权限有x控制。
x权限:表示在该目录下执行命令的权限,包含了cd命令
(在配置web服务器的过程中,我遇到过这样的问题。将资源文件放在root用户的主目录下test目录中,并将test目录所有者设置为nginx用户,nginx 的worker进程是以nginx用户的身份在执行,因为/root目录的权限为550,导致nginx用户无法再/root/目录下执行命令,而一直无法获取资源文件)
r权限用例:
ls -l 补充:
w权限用例:
x权限用例:
w+x权限用例:
以下内容摘自《鸟哥linux私房菜》:
r (read contents in directory): 表示具有读取目录结构列表的权限,所以当您具有读取 (r) 一个目录的权限时, 您就可以利用 ls 这个指令将该目录的内容列表显示出来!
w (modify contents of directory): 这个可写入的权限对目录来说,是很了不起的! 因为他表示您将具有异动该目录结构列表的权限,也就是底下这些权限:
- 建立新的档案与目录;
- 删除已经存在的档案与目录(不论该档案是属于谁的!)
- 将已存在的档案或目录进行更名;
- 搬移该目录内的档案、目录位置。
所以说,如果您是一般身份使用者,例如鸟哥的账号 dmtsai ,那么在 /home/dmtsai 这个家目录内, 无论是谁 (包括 root) 建立的档案,无论该档案属于谁,无论该档案的属性是什么, dmtsai 这个使用者都『有权力将该档案删除』的喔!
x (access directory): 这个 x 与能否进入该目录有关呢![root@linux ~]# cd /tmp [root@linux tmp]# mkdir testing [root@linux tmp]# chmod 744 testing [root@linux tmp]# touch testing/testing [root@linux tmp]# chmod 600 testing/testing # 这个 mkdir 是在建立目录用的指令!是 make directory 的缩写。 # 我们用 root 的身份在 /tmp 底下建立一个名为 testing 的目录, # 并且将该目录的权限变为 744 ,该目录的拥有者为 root 喔! # 另外, touch 可以用来建立一个没有内容的档案,因此, touch testing/testing # 可以建立一个空的 /tmp/testing/testing 档案喔! [root@linux tmp]# ls -al drwxr--r-- 2 root root 4096 Jul 14 01:05 testing # 仔细看一下,目录的权限是 744 ,且所属群组与使用者均是 root 喔! # 接下来,我们将 root 的身份切换成为一般身份使用者。 # 鸟哥的系统里面有个 dmtsai 的一般身份使用者账号,所以切换身份成为 dmtsai [root@linux tmp]# su dmtsai # 那个 su 的指令是用来『变换身份』的一个指令,我们未来会详细介绍。 # 注意看,底下这一行中,发现使用者变为 dmtsai 了,而且提示字符变成 $ 了! # 也就是说,现在操作系统的人变成 dmtsai 了!那么 dmtsai 这个人对于 # /tmp/testing 是属于 others 的权限,那他可以对 /tmp/testing 干嘛? [dmtsai@linux tmp]$ ls -l testing <== 此时身份为 dmtsai total 0 ?--------- ? ? ? ? ? testing # 可以查阅里面的信息喔!因为dmtsai 具有 r 的权限,不过,毕竟权限不够, # 很多资料竟然是问号 (?) 来的~怪怪的紧~ [dmtsai@linux tmp]$ cd testing <== 此时身份为 dmtsai bash: cd: testing/: Permission denied # 发现了吗?即使我们具有 r 的权限,但是没有 x ,所以 # dmtsai 无法进入 /tmp/testing 喔! [dmtsai@linux tmp]$ exit [root@linux tmp]# chown dmtsai testing # 使用 exit 就可以离开 su 的功能了。我们将这个 testing 目录的拥有者设定为 # dmtsai ,此时 dmtsai 就成为 owner 了,那么这个使用者又能干麻呢? [root@linux tmp]# su dmtsai [dmtsai@linux tmp]$ cd testing <== 此时身份为 dmtsai [dmtsai@linux testing]$ ls -l <== 此时身份为 dmtsai -rw------- 1 root root 0 Jul 14 01:13 testing # 再切换身份成为 dmtsai ,此时就能够进入 testing 了!查阅一下内容。 # 发现了 testing 这个档案存在喔!权限是只有 root 才能够存取~ # 那我们测试一下能否删除呢? [dmtsai@linux testing]$ rm testing <== 此时身份为 dmtsai rm: remove write-protected regular empty file `testing'? y # 竟然可以删除!这样理解了吗?