我们进入一个目录, 执行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

linux文件权限解说的更多相关文章

  1. 修改linux文件权限

    Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. 文件或目录的访问权限分为只读,只写和可执行三种.以文件为例,只读权限表示只允许读其内容,而禁 ...

  2. Linux:文件权限

    Linux:文件权限 1.文件权限 ☆文件所有者 ☆用户组 ☆其他人 ☆ROOT 说明: Linux系统中默认所有系统上的账号与一般身份用户,还有那个root的相关信息记录在/etc/passwd文件 ...

  3. Linux 文件权限总结

    在 Linux 中最基本的任务之一就是设置文件权限.理解它们是如何实现的是你进入 Linux 世界的第一步.如您所料,这一基本操作在类 UNIX 操作系统中大同小异.实际上,Linux 文件权限系统就 ...

  4. Linux&shell 之Linux文件权限

    写在前面:案例.常用.归类.解释说明.(By Jim) Linux文件权限用户useradd test (添加用户test)userdel test (删除用户test)passwd test(修改用 ...

  5. linux文件权限整理

    网上对linux文件权限的已经很多,不过还是要自己整理一下,不然每次都要查资料. linux下所有东西都是文件,包括设备,所以这里的文件也包括文件夹. 先是查看文件权限:ls -lh xzc@xzc- ...

  6. 修改linux文件权限命令:chmod 【转载】

    Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. chmod  命令可以改变所有子目录的权限,下面有2种方法 改变一个文件的权限: chmod ...

  7. linux文件权限总结(创建root不可以删除文件、只可追加的日志文件等)

    文件类型 对于文件和目录的访问权力是根据读访问,写访问,和执行访问来定义的. 我们来看一下 ls 命令的输出结果 [root@iZ28dr6w0qvZ test]# ls -l 总用量 72 -rw- ...

  8. Linux 文件权限于目录配置

    用户与用户组 我們以王三毛為例,王三毛這個『檔案』的擁有者為王三毛,他屬於王大毛這個群組, 而張小豬相對於王三毛,則只是一個『其他人(others)』而已. 不過,這裡有個特殊的人物要來介紹的,那就是 ...

  9. Linux文件权限与属性详解 之 SUID、SGID & SBIT

    Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...

随机推荐

  1. js中setTimeout/setInterval定时器用法示例

    js中setTimeout(定时执行一次)和setInterval(间隔循环执行)用法介绍. setTimeout:在指定的毫秒数后调用指定的代码段或函数:setTimeout示例代码 functio ...

  2. Java基础知识强化58:经典排序之二叉树排序(BinaryTreeSort)

    1. 二叉树排序 二叉树排序的描述也是一个递归的描述, 所以二叉树排序的构造自然也用递归的: 二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它 ...

  3. Nginx的10万并发内核参数优化

    关于内核参数的优化: net.ipv4.tcp_max_tw_buckets = 6000timewait的数量,默认是180000.net.ipv4.ip_local_port_range = 10 ...

  4. JS笔记-常见函数与问题

    1.请给Array本地对象增加一个原型方法,它用于删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组. Array.prototype.distinct = functi ...

  5. ASP.Net用jQuery ajax实现页面局部刷新

    刚开始的时候使用asp的updatepanel控件实现局部刷新,而且在本地运行正确,但是部署到服务器上就变成整个页面全部刷新了.服务器用的是Windows server2000,本地机子上用的是win ...

  6. Linux 系统库函数coreleft 与sbrk简介

    coreleft   函数名: coreleft 功 能: 返回未使用内存的大小 用 法: unsigned coreleft(void); 程序例: #include <stdio.h> ...

  7. Search 和 Select比较 - 浅谈

    Search 语法: public IFeatureCursor Search (    IQueryFilter filter,    bool Recycling); Select 语法: pub ...

  8. Catel帮助手册-Catel.Core:(1)参数检查

      我们检查方法是否正确,一般是返回对错,或者是是否抛出一个异常,大部分人不检查异常的正确性,那么这种错误在很深的堆栈中,很难查看. Catel与一般的检查方法不同,一般是使用   public vo ...

  9. 自己手动绿色化MyEclipse

    绿化过程因每个人的文件存放路径不同而不同 首先打开你解压的MyEclipse文件,或者以前安装的MyEclipse重装系统后不能用,打开到这里:记住路径,比如我的是:D:\MyEclipse 我们打开 ...

  10. Qt5.4静态编译方法

    静态编译,就是编译器在编译可执行文件的时候,将可执行文件需要调用的对应动态链接库(.so或.lib)中的部分提取出来,链接到可执行文件中去,使可执行文件在运行的时候不依赖于动态链接库.这样就可以发布单 ...