[一天几个linux命令] 目录与文件的权限意义

现在我们知道了Linux系统内文件的三种身份(所有者,用户组与其他人),知道每种身份都有三种权限(r,w, x),已知道能够使用chown, chgrp, chmod去修改这些权限与属性,当然,利用ls -l去查看文件也没问题。那么这些文件权限对于一般文件与目录文件有何不同呢?

权限对文件的重要性

文件是实际含有数据的地方,包括一般文件、数据库内容文件、二进制可执行文件(binay program)等。因此权限对于文件来说,它的意义如下。

  • r (read):可读取此文件的实际内容,如读取文本文件的文字内容等。
  • w(write): 可以编辑、新增或是修改该文件的内容(但不含删除该文件)
  • x(execute):该文件具有可以被系统执行的权限

那个可读(r)代表读取文件内容是还好了解,那么可执行(x)呢?这里你就必须要小心啦!因为在windows下面一个文件是否具有可执行的能力是通过扩展名来判断的,例如.exe, .bat, .com等,但是在linux下面,我们的文件是否能被执行则是由是否具有”x”这个权限来决定的,而跟文件名是没绝对关系的。

至于最后一个w权限呢?当你对一个文件具有w权限时,你可以具有写入、编辑、新增、修改文件的内容的权限,但并不具备删除该文件本身的权限。对于文件的r,w,x来说,主要是针对“文件的内容”而言,与文件名的存在与否没有关系。因为文件记录的是实际的数据。

权限对目录的重要性

文件是存放实际数据的所在,目录主要的功能是记录文件名列表,文件名与目录有强烈的关联。所以如果是针对目录时,那r, w, x对目录有什么意义呢?

  • r(read contents in directory):表示具有读取目录结构列表的权限,所以当你肯有读取(r)一个目录的权限时,表示你可以查询该目录下的文件名数据,所以你就可以利用ls这个命令将该目录的内空列表显示出来
  • w(modify contents of directory) 这个可写入的权限对目录来说是很强大的。因为它表示你具有更改该目录结构列表的权限
    • 新建新的文件与目录
    • 删除已经存在的文件与目录(不论该文件的权限为什么)
    • 将已存在的文件或目录进行重命名
    • 转移该目录的文件、目录位置
  • x(access directory):目录的执行权限有啥用途啊?目录只是记录文件名而已,总不能拿来执行吧?没错,目录不可以被执行,目录的x代表的是用户能否进入该目录成为工作目录的用途,所谓的工作目录(work directory)就是你目前所在的目录。

针对上面的问题补充 具有什么权限才可以删除文件

首先要有文件所在文件夹的所有权限,就是读(r)写(w)执行(x,对于文件夹是进入)的权限,因为定位这个文件过程就需要进入文件夹,即使使用类似rm /**/file的方式,同样系统内部也会进入文件夹,所以要对文件夹有x权限,然后读取文件夹内容需要r权限,最后是删除文件,由于文件是上级文件夹的一部分所以需要对文件夹有w权限

值得注意的是上级文件夹的权限配置完比后删除文件时,可以不需要对文件有任何权限就可以删除文件,但是如果要编辑和读取文件内容还是需要对文件拥有rw权限
原文:百度知道

举例

有个目录的权限如下所示
drwxr--r-- 3 root root 4096 Jun 25 08:25 .ssh
系统有个帐号名称为vbird,这个帐号并没有支持root用户组,请问vbird对这个目录有何权限呢?是否可切换到此目录中?

:vbird这个帐号该目录有查询此目录下的文件名列表的权限。因vbird这个帐号不具有x的权限,所以vbird这个账号不可以切换到此目录中

上面这个例题中因为vbird具有r的权限,因为r一看之下好像就具有可以进入此目录的权限,其实那是错的。能不能进入某一个目录,只与该目录的x权限有关。此外,工作目录对于命令的执行是非常重要的,如果你在某目录下不具有x的权限,那么你就无法切换到该目录下,也就无法执行该目录下的任何命令,即使你具有该目录的r权限。

很多朋友在架设网站的时候会卡在一些权限的设置上,他们开放目录数据给因特网的任何人来浏览,却只开放r权限,如下面的范例所示那样,那样的结果就是导致网站服务器软件无法到该目录下读取文件(最多只能看到文件名),最终用户总是无法正确查阅到文件的内容(显示权限不足)。

要注意:要开放目录给任何人浏览时,应该至少也要给予r及x的权限,但w权限不可随便给。为什么w不能随便给?我们来看下一个例子

假设有个账号名称为dmtsai,他的主文件夹在/home/dmtsai/, dmtsai对此目录肯有[rwx]的权限。若在此目录下有一个名为the_root.data的文件,该文件的权限如下:

-rwx------ 1 root root 4365 Sep 19 23:20 the_root.data

请问dmtsai对此文件的权限是什么?可否删除此文件

答:如上所示,由于dmtsai对此文件来说是“ohters”的身份,因此这个文件他无法读取,无法编辑也无法执行,也就是说他无法变动这个文件的内容。

但是由于这个文件在他的主文件夹下,他在此目录下肯有rwx的完整权限,因此对于the_root.data这个“文件名”,他能够“删除”的。结论就是,dmtsai这个用户能够删除the_root.data这个文件。

我们下面就来设计一个练习,让你实际练习下。不过由于很多命令我们还没有教,所以下面的命令有的先了解即可,详细的命令用法我们会在后面继续介绍的。
我们用root的身份在所有人都可以工作的/tmp目录中新建一个名为testing的目录,该目录的权限为744且目录拥有者为root。另外,在testing目录下再新建一个空的文件,文件名为testing。新建目录可用mkdir,新建空文件可用touch来处理。所示过程如下所示:

[root@localhost ~]# cd /tmp
[root@localhost tmp]# mkdir testing
[root@localhost tmp]# chmod 744 testing
[root@localhost tmp]# touch testing/testing
[root@localhost tmp]# chmod 600 testing/testing
[root@localhost tmp]# ls -ald testing testing/testing
drwxr--r-- 2 root root 4096 Sep 19 16:01 testing
-rw------- 2 root root 0 Sep 19 16:01 testing/testing
#仔细看一下,目录的权限是744,且所属用户组与用户均是root
#那么在这样的情况下,一般身份用户对这个目录/文件的权限是什么

一般用户的读写权限是什么?
在上面的例子中,虽然目录是744的权限设置,一般用户应该能有r的权限,但这样的权限用户能做啥事呢?假设系统中含有一个帐号名为vbird的,我们可以通过“su - vbird” 这个命令来切换身份。看看下面的操作先

[root@localhost tmp]# su vbird
[vbird@localhost ~]$ cd /tmp
[vbird@localhost tmp]$ ls -l testing/
?--------- ? ? ? ?          ? testing
#因为具有r的权限可以查询文件名,不过权限不足(没有x),所以会有一堆问号。
[vbird@localhost tmp]$ cd testing/
-bash cd: testing/: Permission denied
#因为不具有x, 所以当然没有进入的权限,有没有呼应前面的权限说明啊?

如果该目录属于用户本身,会有什么状态
上面的练习我们知道了只有r确实可以让用户读取目录的文件名列表,不过详细的信息却还是读不到的,同时也不能将该目录变成工作目录(用cd 进入该目录)。那如果我们让该目录变成用户的,那么用户在这个目录下面是否能够删除文件呢?下面的练习做做看。

[vbird@localhost tmp]$ exit 
[root@localhost tmp]# chown vbird testing
[root@localhost tmp] su vbird
[vbird@localhost ~]cd /tmp/testing
[vbird@localhost testing]$ ls -l
-rw------- 1 root root 0 Sep 19 16:01 testing
[vbird@localhost testing] rm testing
rm:remove write-protected regular empty file 'testing'?y
#竟然可以删除,这样理解了吗?

通过上面这个简单的步骤,你就可以清楚地知道,x在目录当中是与“能否进入该目录”有关至于那个w则具有相当重要的权限,因为它可以让用户,更新,新建文件或目录,是个很重要的参数。

参考文献

《鸟哥的私房菜-基础教学篇》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值