linux文件权限解说
我们进入一个目录, 执行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文件权限解说的更多相关文章
- 修改linux文件权限
Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. 文件或目录的访问权限分为只读,只写和可执行三种.以文件为例,只读权限表示只允许读其内容,而禁 ...
- Linux:文件权限
Linux:文件权限 1.文件权限 ☆文件所有者 ☆用户组 ☆其他人 ☆ROOT 说明: Linux系统中默认所有系统上的账号与一般身份用户,还有那个root的相关信息记录在/etc/passwd文件 ...
- Linux 文件权限总结
在 Linux 中最基本的任务之一就是设置文件权限.理解它们是如何实现的是你进入 Linux 世界的第一步.如您所料,这一基本操作在类 UNIX 操作系统中大同小异.实际上,Linux 文件权限系统就 ...
- Linux&shell 之Linux文件权限
写在前面:案例.常用.归类.解释说明.(By Jim) Linux文件权限用户useradd test (添加用户test)userdel test (删除用户test)passwd test(修改用 ...
- linux文件权限整理
网上对linux文件权限的已经很多,不过还是要自己整理一下,不然每次都要查资料. linux下所有东西都是文件,包括设备,所以这里的文件也包括文件夹. 先是查看文件权限:ls -lh xzc@xzc- ...
- 修改linux文件权限命令:chmod 【转载】
Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. chmod 命令可以改变所有子目录的权限,下面有2种方法 改变一个文件的权限: chmod ...
- linux文件权限总结(创建root不可以删除文件、只可追加的日志文件等)
文件类型 对于文件和目录的访问权力是根据读访问,写访问,和执行访问来定义的. 我们来看一下 ls 命令的输出结果 [root@iZ28dr6w0qvZ test]# ls -l 总用量 72 -rw- ...
- Linux 文件权限于目录配置
用户与用户组 我們以王三毛為例,王三毛這個『檔案』的擁有者為王三毛,他屬於王大毛這個群組, 而張小豬相對於王三毛,則只是一個『其他人(others)』而已. 不過,這裡有個特殊的人物要來介紹的,那就是 ...
- Linux文件权限与属性详解 之 SUID、SGID & SBIT
Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...
随机推荐
- Spring3 MVC 使用JSON进行前后台数据交互
http://wbj0110.iteye.com/blog/2007918 在 Spring3 中,响应.接受 JSON都十分方便.向前台返回 JSON 格式的数据: 1 2 3 4 5 6 7 8 ...
- JSON格式的各种转换
/** *JSON 格式的解析 */ // json 去掉转义字符 message = message.replaceAll("\\\\", ""); //转成 ...
- Python学习--07迭代器、生成器
迭代 如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration). Python里使用for...in来迭代. 常用可迭代对象有 ...
- 1.引入必要的文件 2.加载 UI 组件的方式 4.Parser 解析器
//引入 jQuery 核心库,这里采用的是 2.0 <scripttype="text/javascript"src="easyui/jquery.min.js& ...
- OD: Heap Exploit : DWORD Shooting & Opcode Injecting
堆块分配时的任意地址写入攻击原理 堆管理系统的三类操作:分配.释放.合并,归根到底都是对堆块链表的修改.如果能伪造链表结点的指针,那么在链表装卸的过程中就有可能获得读写内存的机会.堆溢出利用的精髓就是 ...
- c笔试题(1)
1.sizeof和strlen的区别 #include<stdio.h> #include<string.h> int main() { char a[10] = " ...
- 深入了解session
session在web开发中是一个非常重要的概念,这个概念很抽象,很难定义,也是最让人迷惑的一个名词,也是最多被滥用的名字之一,在不同的场合,session一次的含义也很不相同.这里只探讨HTTP S ...
- 所谓has a 和 is a
在 C# 中 很好理解: { is a: 继承关系. has a: 成员关系,其他类是本类的成员.} 在C++ 中稍微复杂一点: { 由于有多重继承, 继承也可能是has a,类似C# ...
- sql语句读取所有父子标签
select A.HOSPITAL_ID from T_HOSPITAL A connect by prior A.HOSPITAL_ID=A.PARENT_ID start with A.HOSPI ...
- vi使用入门指南
一.Unix编辑器概述 编辑器是使用计算机的重要工具之一,在各种操作系统中,编辑器都是必不可少的部件.Unix及其相似的ix操作系统系列中,为方便各种用户在各个不同的环境中使用,提供了一系列的ex编辑 ...