linux文件权限解说

来源:互联网 发布:自动记牌器 安卓版源码 编辑:程序博客网 时间:2024/05/17 04:34

我们进入一个目录, 执行ls -l会显示该目录下所有档案(这里用"档案"这个词, 代表文件和文件夹)的详细信息.

如下图:



一共有7列信息, 分别为: [权限], [连结数], [拥有者], [群组], [大小], [最后修改时间], [名字].

此篇仅对[权限], [拥有者], [群组]进行一下详细介绍.


由于Linux是个多用户多任务的系统,因此可能常常会有多人同时使用这部主机来进行工作的情况发生, 为了考虑每个人的隐私权以及每个人喜好的工作环境,因此角色的概念非常重要. 这里有3个概念.

1)档案拥有者(user): 创建档案的人.

2)群组(group): 档案所属的群组.

3)其他(others): user和group之外的其它用户.


看一下[权限]这一列, 一共有10位, 可以分为4段.

第1位代表文件的类型, ' - ' 代表这是个常规文件, ' d ' 代表这是个文件夹. ( 还有其它一些不常见的如'  l ' , ' c ' , ' b ' , ' p ' , ' s ' 等, 在此暂不做解释. )

2~4这三位代表user的read / write / execute权限.

5~7这三位代表group的read / write / execute权限.

8~10这三位代表others的read / write / execute权限.

如果可读/ 写 / 执行, 则用字母r / w / x 表示, 如果不可读 / 写 / 执行, 则用 - 来表示.


read / write / execute 解释如下(摘录于百度文库):

对于文件:(以下对文件权限的测试是在上层目录权限为777的情况下完成的) 
可读:表示可以读取复制文件的内容
可写:表示可以修改文件的内容
可执行:表示可以用其他解析程序对文件进行执行操作
仅可读:只有可读权限则只能读取文件内容和复制该文件,不可改写文件内容,此时该文件的删除移动权限由上层目录权限决定,如果其上层目录拥有删除移动的权限,可以对其进行删除移动操作。
仅可写:如果只有可写权限而无可读执行权限,既不能读取和改写该文件内容,也不能执行文件,且不可复制文件,此时该文件的删除移动权限由上层目录权限决定。
仅可执行:只有可执行权限时不可读取和改写该文件内容,也不可复制该文件,好像也并不能作为脚本执行,此时该文件的删除移动权限由上层目录权限决定。
所以,通常要对文件具有写权限,需要同时具有可读和可写,要对文件具有执行权限,需要同时具有可读和可执行。


对于目录:(以下对目录权限的测试是在所涉及文件权限为777的情况下完成的) 
可读:表示可以列出目录本身和目录下面的文件和子目录的属性,仅查看属性(ls) 
可写:表示可以往目录中添加删除文件和目录
可执行:可以进入该目录, 可以读取该目录下面的文件内容或者改写文件内容(在文件权限允许的情况下)
仅可读:目录的读权限仅允许我们读目录,获得在该目录中所有文件名的列表,不可添加删除其中的文件或目录,也不可读取和改写其中文件的内容。
仅可写:如果只有写权限,仍然无法往目录中添加删除或修改文件和子目录,包括复制和移动。要修改目录中的文件内容,不仅仅需要目录的写权限,还需要目录的执行权限。
仅可执行:对目录没有读写权限,只有执行权限,一样可以读取和改写目录下面文件的内容(只要你确定该路径下的该文件存在);那是否不需要目录的可写权限呢?当然不是,如果没有可写权限,无法往目录中添加删除或修改文件和子目录,包括复制和移动。


可见, 这3种权限往往是搭配使用的. 比如对于目录, 只有r权限可能没什么作用, 往往r和x要同时提供(没有x就不能进入该目录, r就几乎没什么用了); 对于文件, 只有w却没有r往往也是没用的, 还是不能写, 没法读取文件的原内容, 又怎么对内容进行增删修改呢, 对吧.


上面的user, group, others给出的并不是具体的定义, 结合r / w / x 权限, 现构建个实际的模型, 看起来应该更容易理解. 如果纰漏, 还望指正.

我们假设大学同寝的4个人A,B,C,D在外面合租了一个四室一厅的房子, 那么这个房子可以认为是个总的上层目录, 起名叫home吧. 四个人的房间分别为目录A, B, C, D. 客厅卫生间厨房等共用的空间为目录E. 

(1)  四个人对自己的房间有拥有权, 是这个房间的主人, 往往也有全部的权限, 所以对于房间(目录)A, 它的属性可能是这样 --> drwx------ user(A) group(A, 每个用户都至少依附于一个group, 它的主group)

(2)  四个人都是大学602寝室的兄弟, 那么我们新建个群组名叫dorm602, 把A,B,C,D都加到这个群组里, 那么这个公共区域E的权限可能这样 --> drwxrwx--- user(root) group(dorm602). 这样一来, 属于dorm602的A,B,C,D这四个人, 对于E都有读 / 写 / 执行的权限了.

(3)  A和B,C,D这几个人的关系都非常好, 我的卧室你们也都可以随便进来, 我的东西你们随便用, 那么好, 目录A权限可能设置成这样 --> drwxrwx--- user(A) group(dorm602). 

(4)  A这个人实在是个好说话的人, 他完全不需要隐私空间, 除了B,C,D, 其他外人(比如某一天B的同学来了)也可以进他的屋参观, 但是却不想别人动他的东西, 只可以看. 那么目录A的权限可以这样设置 --> drwxrwxr-x user(A) group(dorm602). 我们看到, others的权限为r-x, 就是说, 你可以进我屋(x), 我房间里的东西你随便看(r), 但是你不能动它们(w).


同样, 关于上面提到的对于目录要rx同时提供, 对于文件rw要同时提供的问题, 我们也用这个例子看一下.

(5)  现在A对B,C,D说, 你看咱们关系这么好, 我屋的东西你们随便看随便用哦, 但是不能进我的屋子. 那么权限被A设置成这样 -->  drwxrw---- user(A) group(dorm602). 于是貌似大方, 其实就剩调侃了, 不给x权限, 有rw有神马用嘛... 好, 既然不让我进, 那我就在门口瞅瞅吧, 于是B试着在home目录执行ls -l A/, 如果A的屋里有个目录aaa, 有个文件bbb, 那么你大概能得到这样的结果: 

d?????????  ?  ?  ?  ?  ?  aaa

 -?????????  ?  ?  ?  ?  ?  bbb

很合理是不是? 即使你有r的权限, 进不去屋, 在外面"远观"你大概也就能看清里面有什么东西了, 东西的具体情况, 真的了解不到了.

(6)  如果是这样呢 --> drwx--x--- user(A) group(dorm602). 那就相当于说, 我屋你们可以进, 但是得把你们眼睛蒙上. OK, 屋是能进了, 但是里面有什么你完全不知道, 你想去动一下屋子里的东西, 都是不可能的. 于是cd A, 真的进到了A目录, 但是你要是ls一下, 不好意思了, 系统提示你没有权限喽.

(7)  有的时候我们在一个目录里新建个文件, 却提示没有权限, 这是怎么回事呀. 这就好比B的一个东西想放在A的房间里, 为了达到这样目的, 目录A的权限可以这样 -->drwx-wx--- user(A) group(dorm602). 现在B的一个文件ccc就可以放到A的房间里了, 注意目录A的group权限的r不是必须的, wx却是缺一不可的.

(8)  可以看出上面大部分都在拿目录举例, 因为对于文件的读写执行权限的概念我们应该比较好接受. 说一下上面提的rw的问题吧. 对于文件, 只有w权限往往没有用, 还是没法写, r往往也需要带着. 比如A的房间里有个文件computer, A把这个文件的权限设置为了-->d-wx------ user(A) group(A). 如果有一天A觉得自己电脑的CPU性能太差了, 想给自己电脑换个新CPU, 当然, 他有这个操作权力(有w嘛), 可是没有r啊, 于是A只能闭着眼睛把新的CPU组装到电脑上, 显然, 这次w操作, 不会成功的, 没r权限, 他可能连电脑盖子都打不开, 梅超风那种闭着眼睛打架还那么厉害的, 只能存在于武侠小说里是吧^ ^ . 当然, 聊以自慰的, 由于有x权限, A平时还是可以开机玩玩电脑的, 虽然比较慢.

例子就举到这里吧, 现在关于rwx和user, group, others应该有些具体的印象感了吧!


对这些读写权限, user, group神马的有了了解, 文章的目的也就达到了, 最后附上设定权限的命令

一.  chgrp: 改变档案所属群组.   命令格式为: chgrp groupname filename. 当然, 群组名需要存在.

二.  chown: 改变档案拥有者.     命令格式为: chown username filename. 同理, 用户名也需要存在.

其实chown包含chgrp的功能, 使用起来非常灵活:

chown username filename                          //只设定user

chown username:groupname filename    //user & group同时设定

chown :groupname filename                       //只设定group.

另外' : ' 可以用 ' . ' 来代替, 用法也完全一样, 只是如果username和groupname里本身就含有' . ' 这个字符的话, 可能就容易混淆了, 所以还是推荐用 ' : ' 

三.  chmod: 更改r / w / x 权限

更改r / w / x 有两种方式, 一种是数字, 一种是符号. r , w, x 的权值分别为4, 2, 1, 于是权限表我们就可以用三个数字来表示, 比如rwx------ 为700,  rwx---r-- 为704, -wx--xrwx为317.

这样一来chmod的用法也就可以分别两种了, 这个命令用法很灵活, 直接举例作为总结了.

数字:

写法简单, 缺点是不直观, 且进行局部设定时不方便.

chmod 777 filename

字母:

这个用法就非常灵活了, 其中u, g, o, a分别代表user, group, others, all.

chmod u=rwx,go=rx filename

chmod u=wx filename

chmod g+x filename

chmod a+w filename

chmod +w filename

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机百度云下载的视频分解了怎么办 知道家人被绑架北派传销怎么办 接手前同事的客人无回复怎么办 喝了酒第二天一直吐怎么办 孩子看的鬼片不敢睡觉害怕怎么办 宝宝满月了脸还有点黄怎么办 我情人天天说没时间出去该怎么办 两个月宝宝下体三角区肿了怎么办 夏养的龙猫家里有味怎么办 不小心踩到仓鼠吐血了怎么办 不小心踩到仓鼠的头怎么办 母仓鼠生完孩子特别暴躁怎么办 被仓鼠咬出血怎么办要不要打针 被小仓鼠咬出血了该怎么办 仓鼠咬破手指流血了该怎么办 小仓鼠的手被棉花丝绑住了怎么办 荷兰猪如果不小心撞流血了怎么办 帮同事刷杯子但把杯子弄坏了怎么办 贵宾犬喜欢张开嘴巴跟人玩怎么办 鼻烟放了几天感觉跟受潮一样怎么办 两个月宝宝鼻屎堵住鼻子怎么办 肉包着智齿怎么办洗燥电影完整版 大腿内侧突然长黑痣越来越大怎么办 肚脐发炎、不脱落怎么办_妈网百科 老公出轨找个按摩的还不离婚怎么办 别人拿错钥匙装修好了房子怎么办 撞车后对方全责却不赔钱怎么办 我的世界国服客户端都是英文怎么办 下载的3d模型没有材质怎么办 写字时习惯把本子放歪该怎么办 被蚊子咬后留下硬疙瘩怎么办 吃冰镇西瓜导致呼吸不顺怎么办 吃冰镇西瓜嚓气导致呼吸不顺怎么办 在pr里面找不到做字幕的怎么办 电脑主机电源坏了接口坏了怎么办 邻居捡到我手机不给这种情况怎么办 婆婆总在儿子面前说媳妇坏话怎么办 试管准备取卵雌激素低该怎么办 订了火车票了忘记带身份证怎么办 网上买火车票忘记带身份证了怎么办 网上买的火车票忘记带身份证怎么办