一、用户与用户组
为了更好地理解文件权限,我们需要先有用户和用户组的概念。因为在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 之 文件权限的更多相关文章

  1. 全面解析Linux数字文件权限

    全面解析Linux数字文件权限 来源:   时间:2013-09-04 20:35:13   阅读数:11433 分享到:0 [导读] 在刚开始接触Linux时对于文件权限的理解并不是很透彻,这里详细 ...

  2. [转]Linux中文件权限目录权限的意义及权限对文件目录的意义

    转自:http://www.jb51.net/article/77458.htm linux中目录与文件权限的意义 一.文件权限的意义 r:可以读这个文件的具体内容: w:可以编辑这个文件的内容,包括 ...

  3. 第六章、Linux 的文件权限与目录配置

    第六章.Linux 的文件权限与目录配置 1. 使用者与群组 2. Linux文件权限概念 2.1 Linux文件属性 2.2 如何改变文件属性与权限: chgrp, chown, chmod 2.3 ...

  4. linux初学者-文件权限

    linux初学者-文件权限 lunix系统都是以文件的形式存在,自然而然的就会要求不同的用户拥有不同的权限,这也是系统能够运行的根本保证,下文将对文件的权限管理进行简要的介绍. 1.文件属性的查看 - ...

  5. linux的文件权限小结

    对于初接触Linux的朋友来说,会有各种不习惯和各种昏头,文件的权限就很让人不知所措. ls命令以及字段含义 比如我们列出当前目录文件: 我们来看下上述大致含义: 第1行显示的信息: 总用量(tota ...

  6. Linux的文件权限与目录配置

    用户与用户组(Linux是一个多用户多任务的系统) 文件所有者   设置适当的权限,其他人无法看到自己的文件 用户组概念   属于同一个用户组的可以看到这个团体的公共信息,每个账户都可以有多个用户组的 ...

  7. 初窥Linux 之 我最常用的20条命令

    魏公 SecureCRTuname -avisftppartition,fsshell kshell,bshelluser,groupIPTables文件数,内核参数tail,less/var/log ...

  8. Linux:文件权限

    使用较长格式列出文件:ls -l显示除了 '.'(当前目录),'..' 上一级目录之外的所有包含隐藏文件(Linux 下以 '.' 开头的文件为隐藏文件): ls -Al查看某一个目录的完整属性,而不 ...

  9. Linux的文件权限

    1 文件权限的表示 (1)字母表示法 Linux中所有文件(普通文件.目录文件.字符特殊文件.块特殊文件.管道或FIFO.符号链接.套接字)都有9个权限,如下图所示: -rw-rw-r--就是文件a的 ...

随机推荐

  1. 让notepad.exe的utf8不添加BOM

    实在是厌烦了notepad的utf8模式了,于是决定修改之,方案如下: 使用任何支持hex模式的编辑器打开%SystemRoot%/system32/notepad.exe查找二进制串56 8D 45 ...

  2. Java线程并发中常见的锁--自旋锁 偏向锁

    随着互联网的蓬勃发展,越来越多的互联网企业面临着用户量膨胀而带来的并发安全问题.本文着重介绍了在java并发中常见的几种锁机制. 1.偏向锁 偏向锁是JDK1.6提出来的一种锁优化的机制.其核心的思想 ...

  3. php网站共享session方法(相同一级域名)

    这段时间做web开发使用的是php语言 要实现从主站进入子站时无需再登录(如已登录) 使用memcache实现 方法如下 修改php.ini如下 添加 extension=php_memcache.d ...

  4. 小记css的margin collapsing

    近期在做web页面设计的时候,莫名的发现最上面会出现一个横条,颜色为html的背景颜色.本意是那一片空横条应该为header的背景色.查了一些资料,发现是margin collapsing的问题,记录 ...

  5. 特么的. 最终把 amobbs 的站长阿莫(莫进明)给回骂了一顿.

    起因:  假设你居住的地方,要上马PX等高污染的项目,你会怎么做. 鼓动别人上街暴力示威与军警对抗. 自己待在家里支持怂恿. 这样的人真心猥琐! 鉴于他常常私自改动帖子, 在此截图留存. 真特么没劲. ...

  6. NSHashTable 和 NSMapTable学习

    今天,在实现play gif时间功能,我看见两个陌生班,只需看看这个纪录: NSSet和NSDictionary是两个经常使用的类,可是他们默认假定了当中对象的内存行为.对于NSSet.object是 ...

  7. java.util.zip - Recreating directory structure(转)

    include my own version for your reference. We use this one to zip up photos to download so it works ...

  8. Mojo 分析日志接口

    #!/usr/bin/perl #取文件行数 ##循环开始清空文件 use POSIX; use DBI; my $dir = '/data01/applog_backup'; my $file = ...

  9. 获取Jenkins project build结果

    当Jenkins管理的build project越来越多的时候,须要脚本收集每一个project的近期一次build结果,从而集中管理.依据业务规则,决定是否重算和何时重算. 以下的命令是利用curl ...

  10. mongodb时间戳转换成格式化时间戳

    db.pay_order.find({"id":"5332336532"},{"tradeNo":true,"status&quo ...