一、用户与用户组
为了更好地理解文件权限,我们需要先有用户和用户组的概念。因为在Linux里面,任何一个文件都具有“User(用户)、Group(用户组)及Others(其他用户)”3种身份的个别权限。
1、用户和文件所有者的概念
你用来登陆Linux主机的那个用户名就是一个用户,例如,root就是一个用户,而Linux上存在很多的用户。如果你在Linux上创建了一个文件,那么默认情况下你就是这个文件的所有者。
2、用户组的概念
有了用户就可以区分不同的文件的所有者,也可以根据文件的所有者来限定用户可不可以对文件进行读写或执行等操作,那为什么还要有用户组的概念呢?
原因很简单,就是让一些指定的用户(非文件所有者),也能按照一定的权限访问你的文件,而其他的人则不能访问你的文件。而且设置用户组也使这种权限的管理变得容易。
举个例子来说,一个团队A在进行项目开发,你是团队A的成员,则你写的文档或者代码,你的其他成员也需要能对其进行读写,则可以把团队A的人加进一个用户组,这个用户组的人可以对这些文件进行读写,而其他的开发团队,在没有允许的情况下,是不能对你的团队的代码和文档进行阅读和修改。此外,每个用户可以有多个用户组的支持。
3、其他用户(Others)的概念
既然文件有所属的用户组的话,那必然就有一些人是既不属于这个用户组,也不属于文件所有者本身的用户,例如上面例子中除团队A之外的其他的开发团队的用户,就是属于文件的其他用户。
二、Linux文件属性
在自己的主文件夹下,执行ls命令,得到下面的执行结果:
从上面的结果可以后到,屏幕上出现了7列数据,它们分别代表:
权限 连接数 所有者 用户组 文件容量(B) 修改日期 文件名
1、详细解说第一列——权限
可以看到第一列都是由10个字符组成,如下图所示:
第一个字符表示文件类型,接下来的字符中,以3个为一组,且均以“rwx”的3个组合(r:read(可读),w:write(可写),x:execute(可执行)),无论是所有者对文件的权限、用户组对文件的权限还是其他用户对文件的权限,都是rwx,这个顺序是不会变的,如果可读、可写、可执行,则相应的位置就分别为r、w、x,否则为-。
第一个字符表示文件类型,而文件类型主要有:
[d]:目录
[-]:文件
[l]:连接文件
[b]:设备文件里面的可供存储的接口设备
[c]:设备文件里面的串行端口设备
对于权限是怎么理解的呢?举个例子吧,如果第一列为-rwxr-xr--,则表示:该文件为普通文件,对文件所有者可对其进行读写和执行,而用户组的成员,则只能对它进行读和执行,而不能写(修改),其他的用户则只能进行读操作。
而权限的设置除了可以用字母来表示之外,还能用数字表示,对照为r:4,w:2,x:1,-:0(化成二进制可知,其符合前缀码规则),而显示时,只显示每组的累加值,如上例rwxr-xr--可以表示为754。
2、详细解说目录与文件权限的区别
对于用惯了windows的我们来说,并不是每一个文件都是可执行的,它与文件的后缀有关,可执行文件的后缀为.exe,而在Linux下,一个文件是否可执行,与后缀是没有绝对关系的,而是由文件是否具有“x”这个权限来决定的。
而“w”代表你具有写入、编辑、新增、修改文件内容的权限,却不具备删除该文件本身的权利。rwx主要针对文件的内容。
然而,从上面的文件类型可知,文件类型也可能是目录,那么对一个目录进行写和执行显然是没有意义的,那么它到底意味着什么呢?它与普通文件类型[-]又有什么不同呢?
我们知道,文件是存放实际数据的所在,目录主要的内容是记录文件名列表,文件名与目录有强烈的关联。
所以,对于目录来说,r表示具有读取目录结构列表的权限,可以查询该目录下的文件名数据,例如你用ls命令显示目录的内容列表。
对于目录来说w可以说是强大的,它表示具有更改该目录结构的权限,如新建新的目录和文件,删除已存在的文件与目录(不论该文件的权限如何),将已存在的文件或目录进行重命名,转移该目录内的文件和目录位置等。
你可能会觉得x对于一个目录来说总是怪怪的,但是它却是非常有用的,目录的x表示用户能否进入该目录成为工作目录,如是否能使用cd命令切换到该目录下。
值得注意的是:如果你对一个目录具有r权限而没有x权限,你能使用ls查看目录下的文件列表,却不能进入到该目录,也就不能对目录里的任何文件进行操作,即使你对目录中的文件具有rwx权限。
3、文件特殊权限:SUID,SGID,SBIT
当我们执行如下的ls命令时,我们可能会看到很奇怪的结果:
在第一列,中我们看到了上面介绍之外的文件权限属性,s和t。
1)SUID
当s这个标志出现在文件所有者的x权限上时,如上面的第二个例子,则被称为Set UID,简称SUID的特殊权限。
基本上SUID具有如下的限制和功能:
a、SUID权限仅对二进制程序有效,不能用在shell script上面,对目录也是无效的;
b、执行者对于该程序需要具有x的可执行权限;
c、本权限在执行该程序的过程中有效;
d、执行者将具有该程序所有者的权限;
看到这里,可能对于SUID还不是很理解,举上面的例子来说,就是passwd这个程序是root这个用户所有的,并属于root用户组,但是我们知道,对于普通用户,他们还是能够改变自己的密码,这是为什么呢?其原因在于:
1、passwd是一个可执行的二进制程序;
2、这个可执行文件在文件所有者的x权限上的标志是s,即设置了SUID;
3、普通用户对于root用户和root用户组来说是其他用户(Others),然而从文件的权限中我们可以知道,它支持其他用户(Others)对其进行读和执行的操作,
注意,这点很重要,因为如果Others的权限(后三位)设置为r--,则普通的用户就执行passwd这个程序了,即使它在文件所有者的x权限上的标志是s。(注:这个可执行权限要对应用户的角色,在相应的权限中有x的权限,如上面的例子中,无论是文件所有者,用户组,还是Others都具有x的权限。)
4、在执行passwd这个程序时,普通的用户将会获得passwd这个程序的所有者的权限,即root对该程序的权限,而不是Others或用户组的权限;
5、但是这个权限仅在passwd这个程序执行的过程中才有效,程序执行完毕之后,普通用户就不再拥有这种权限了;
2)SGID
相应地,当s出现在用户组的x时则称为Set GID,即SGID。SGID可以针对文件和目录来设置
对于文件来说,SGID有如下限制和功能:
a、SGID对二进制程序有用;
b、程序执行者对于该程序来说,需要备x的权限;
c、执行者在执行的过程中将会获得该程序用户组的支持。
对于文件的权限和操作来说,基本上与SUID相同,只是它获得的不是程序所有者的权限,而是它的用户组的权限。
而SGID可用于目录,对于目录来说,SGID有如下的限制和功能:
a、用户若对于此目录具有r与x的权限,该用户能够进入此目录;
b、用户在此目录下的有效用户组将会变成该目录的用户组;
c、若用户在此目录下具有w的权限,则用户所创建的新文件的用户组与此目录的用户组相同。
3)SBIT
SBIT只针对目录有效,它对目录的作用是:
当用户对于此目录具有w,x权限,即具有定稿的权限时,用户在该目录下创建文件或目录,只有自己与root才有权利删除该文件。
三、修改文件权限
修改文件权限的常用命令有:
chgrp:修改文件所属用户组
chown:修改文件所有者
chmod:修改文件的权限
至于这些命令的用法,这里不详述,要用时,可以找一下男人——man。
注:文件的三种特殊权限也可以用数学表示,4为SUID,2为SGID,1为SBIT,如-rwsr-xr-x,按照前面的计算我们知道,原先为755,由于它有SUID特殊权限,所以就变成了4755了。
- 全面解析Linux数字文件权限
全面解析Linux数字文件权限 来源: 时间:2013-09-04 20:35:13 阅读数:11433 分享到:0 [导读] 在刚开始接触Linux时对于文件权限的理解并不是很透彻,这里详细 ...
- [转]Linux中文件权限目录权限的意义及权限对文件目录的意义
转自:http://www.jb51.net/article/77458.htm linux中目录与文件权限的意义 一.文件权限的意义 r:可以读这个文件的具体内容: w:可以编辑这个文件的内容,包括 ...
- 第六章、Linux 的文件权限与目录配置
第六章.Linux 的文件权限与目录配置 1. 使用者与群组 2. Linux文件权限概念 2.1 Linux文件属性 2.2 如何改变文件属性与权限: chgrp, chown, chmod 2.3 ...
- linux初学者-文件权限
linux初学者-文件权限 lunix系统都是以文件的形式存在,自然而然的就会要求不同的用户拥有不同的权限,这也是系统能够运行的根本保证,下文将对文件的权限管理进行简要的介绍. 1.文件属性的查看 - ...
- linux的文件权限小结
对于初接触Linux的朋友来说,会有各种不习惯和各种昏头,文件的权限就很让人不知所措. ls命令以及字段含义 比如我们列出当前目录文件: 我们来看下上述大致含义: 第1行显示的信息: 总用量(tota ...
- Linux的文件权限与目录配置
用户与用户组(Linux是一个多用户多任务的系统) 文件所有者 设置适当的权限,其他人无法看到自己的文件 用户组概念 属于同一个用户组的可以看到这个团体的公共信息,每个账户都可以有多个用户组的 ...
- 初窥Linux 之 我最常用的20条命令
魏公 SecureCRTuname -avisftppartition,fsshell kshell,bshelluser,groupIPTables文件数,内核参数tail,less/var/log ...
- Linux:文件权限
使用较长格式列出文件:ls -l显示除了 '.'(当前目录),'..' 上一级目录之外的所有包含隐藏文件(Linux 下以 '.' 开头的文件为隐藏文件): ls -Al查看某一个目录的完整属性,而不 ...
- Linux的文件权限
1 文件权限的表示 (1)字母表示法 Linux中所有文件(普通文件.目录文件.字符特殊文件.块特殊文件.管道或FIFO.符号链接.套接字)都有9个权限,如下图所示: -rw-rw-r--就是文件a的 ...
随机推荐
- linux exec和文件描述符妙用技巧(转)
最近在看<精通unix shell脚本编程>时,看到exec<$1 exec 1>$OUTFILE,一下看的我就蒙了.网上看了大半天,终于搞定,记录如下.对于 Linux 而言 ...
- c++ try throw catch
c++ try throw catch 这三者联合使用 , try { statement list; } catch( typeA arg ) { statement list; } catch( ...
- AJAX入门---DOM操作HTML
AJAX入门---DOM操作HTML 一边学习AJAX一边坐着总结加深印象.上次写的是怎样简单的使用XMLHttpRequest对象.今天写的是DOM(文档对象模型(Document Object M ...
- HTML 页面载入 Flash 插件的几种方法
前言 之所以写这篇文章,主要是由于组长给提的一个新的需求--使用浏览器调用电脑的摄像头,来实现即时拍照的功能.在网上查了非常多资料,由于这样那样的原因,终于选择了使用flash插件来调用pc的摄像头. ...
- Swift - 类和结构体的区别
类和结构体有许多相同之处,也有许多不同之处. 二者区别如下: 1,类可以继承和扩展,结构体不可以 2,可以让一个类的实例来反初始化,释放存储空间,结构体做不到 3,类的对象是引用类型,而结构体是值类型 ...
- mormort 土拨鼠,做后端服务那是杠杠的,基于http.sys
http.sys你可以用 mormort 土拨鼠,做后端服务那是杠杠的,基于http.sys并且还是开源的,作者天天更新代码,非常勤奋,官方论坛提问,回答也快其实,稍微看看,就能玩的挺好的
- Common Lisp学习笔记(0):从SLIME开始 | 优哉·幽斋
Common Lisp学习笔记(0):从SLIME开始 | 优哉·幽斋 Common Lisp学习笔记(0):从SLIME开始
- Android实战技巧: ListView之ContextMenu无法弹出
问题 Activity中使用了ListView作为布局.当每一列表项中含有默认能获取焦点的子View时有可能会对ListView的某些事件有影响: 1. OnItemClick 2. OnItemLo ...
- POJ2828 Buy Tickets 【线段树】+【单点更新】+【逆序】
Buy Tickets Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 12296 Accepted: 6071 Desc ...
- HOG算子
原地址:http://blog.csdn.net/chlele0105/article/details/11991533 梯度直方图特征(HOG) 是一种对图像局部重叠区域的密集型描述符,它通过计算局 ...