红联Linux门户
Linux帮助

文件权限、特殊权限、属性、隐藏属性和ACL

发布时间:2012-10-14 21:00:06来源:红联作者:horsetornado
[i=s] 本帖最后由 horsetornado 于 2012-10-14 21:07 编辑 [/i]

linux提供了一套相当安全的文件管理方式,它包括文件的权限、属性、ACL还有SELINUX

1、权限
在说文件权限之前,我们得知道它们是什么?
先在终端中输入ls -l /root,root是系统管理员的HOME目录,它下面有一个目录Desktop和文件root.如下所示:
-rw------- 1 root root 8 9月 28 13:36 root
drwxr-xr-x 2 root root 4096 9月 26 21:42 Desktop
你会发现除了名字外前面还有一堆信息,那这些信息都是些什么意思呢?我先拿目录那行来说明
drwxr-xr-x 2 root root 4096 9月 26 21:42 Desktop

再说权限之前先看root和root这两个参数,他们的意思是该目录属于用户root(第一个root)和用户组root(第二个root),这两个不一定非要相同,可以通过命令修改
修改所属用户:chown haha Desktop 将Desktop的拥有者改成用户haha
修改所属组:chgrp heihei Desktop 将Desktop的群组拥有者改成用户组heihei

然后是文件的三大基本权限:读r、写w、执行x
对于文件的意义:
r:可读取文件的实际内容,如读取文本文件的文字内容等;
w:可以新增、修改该文件的内容,但不能删除该文件;
x:该文件可以被系统执行
对于文件夹的意义
r:可以读取文件夹里列表的权限,比如用ls命令将该目录下的内容列出来
w:可以新建、删除、重命名、移除文件夹下的文件和文件夹
x:进入一个文件夹的权限,如使用cd进入一个文件夹

说完这两个参数和三大权限后,那前面那十个参数就好理解了
drwxr-xr-x 这十个字母可以分成1+3+3+3四个小组。
第1组:代表该文件的类型,这里是d,代表目录
-代表普通文件,d代表目录,l代表链接文件
b代表读取数据以段为单位的设备,如硬盘
c代表读取数据以字符为单位的设备,如键盘、鼠标
第2组:代表文件拥有者对该文件的权限,这里是rwx,意思是root对该Desktop具有读r、写w、执行x的权限
第3组:代表文件所在组对该文件的权限,这里是r-x,意思是用户组root下面其他非root用户对Desktop具有读r、执行x权限,没有写w权限就用-表示
第4组:代表文件拥有者所在组外其他组及成员对该文件的权限,这里也是r-x,意思是其他组的成员对Desktop读、执行权限,没有写w权限
既然时权限,当然可以修改,修改的命令是chmod,有下面三种方法
数值模式:chmod 764 Desktop,修改完权限变成drwxrw-r--
赋值模式:chmod u=rwx,g=rw,o=r Desktop,修改完权限变成drwxrw-r--
增删模式:chmod u+x,g-x,o-x,修改完变成drwxr--r--


2、特殊权限
SUID、SGID、SBIT

先用ls -l命令看一下下面几个文件或目录的信息:
-rwsr-xr-x. 1 root root 25980 2月 22 2012 /usr/bin/passwd
-rwx--s--x. 1 root slocate 35612 8月 24 2010 /usr/bin/locate
drwxrwxrwt. 24 root root 20480 10月 14 17:55 /tmp
会发现在文件拥有者,文件拥有者所在组,其他组的权限x的位置上被s或者t取代了,这是什么?

先来看看他们的作用:
SUID:当用户执行具有x权限的二进制文件时拥有此文件所有者的权限
SGID:当用户执行具有x权限的二进制文件时拥有此文件所在组的权限,另外也可以对目录设置此权限
SBIT:当用户对某个目录具有w和x权限时,在该目录下建立的文件和目录只有该用户和root用户才可以删除
听着很绕,举个例子:
比如普通用户用passwd命令去修改密码,而密码是存在/etc/shadow文件中,而普通用户是无法修改这个文件的,也就无法把新密码保存进来。
但事实的结果是普通用户是可以修改密码,并且保存到/etc/shadow这个文件中的。

它的流程是这样的:
一、先看下/usr/bin/passwd这个文件,也就时命令passwd。
-rwsr-xr-x. 1 root root 25980 2月 22 2012 /usr/bin/passwd
发现这个文件的拥有者是root,并且其他组的权限为r-x,也就说普通用户对其具有r和x的权限
二、既然普通用户对其具有执行权限,因此当普通用户执行这条命令时,由于s这个权限的存在,那么在执行过程中会暂时获取root的权限
三、由于只有root才可以修改/etc/shadow文件,而在此次执行过程中已经得到了root用户的支持,因此密码会顺利得写入到这个文件中

那么,怎样才能增加这种权限呢?
可以参照第1节权限,使用chmod命令修改,命令如下:
SUID 4 SGID 2 SBIT 1
chmod 6777 这就添加了SUID和SGID权限,就是在原有权限的前面加了一个6

另外,还有可能出现rwsrwsrwt大写的情况,变成rwSrwSrwT,出现这种情况是因为用户不具备文件的x权限,而又用上面的命令强加了特殊权限
这就矛盾了,因为这三个权限的基础是用户对其有有x权限,现在连x权限都没有,那有sst这个权限又有什么用呢!


3、属性
名称大小:文件名、 大小,这两个最好理解了就是文件名字和占用空间大小
所属属性:拥有者、拥有组,如1中所述
时间属性:mtime、ctime、atime
mtime:最近一次文件内容变化时间,是具体内容变化,不是属性、权限变化,ls显示的结果就是mtime
ctime:最近一次文件状态变化时间,这里就是属性、权限那些变化时的时间
atime:最近一次读取文件时间,如用cat去读取文件的时候


4、隐藏属性
隐藏属性就是给文件设定特殊的标记使其达到某种需求

废话不多说,先看下是什么东西,再说它有什么用!
查看隐藏属性的命令是:lsattr 文件名,命令很好记忆,ls应该知道是干嘛的,attribute就是属性的意思,lsattr = ls + attribute
lsattr file
----ia------- file
这就显示了文件file的隐藏属性,可以看到有13个隐藏属性,这个文件只有i、a这两个隐藏属性,其他属性没有就用-代替。

隐藏属性是需要文件系统的支持的,我的机子是ext4格式,上面有15个隐藏属性,在网上搜了下,没找到关于ext4隐藏属性的说明,因此上面这个例子是用
鸟哥的ext3格式下的例子,ext3格式下只有13个隐藏属性。

那么这个i、a是什么意思呢?
i代表不能对这个文件进行删除、改名、链接、写入资料等等。
a代表这个文件只能增加数据不能删除和修改数据。

增加隐藏属性的命令如下:
chattr +a file 修改后file就具有了a这个隐藏属性。
其他属性我也不太清楚,鸟哥的书上面只列出了几个,谁有ext4上面的隐藏属性资料希望能发给我份,谢谢了!

5、ACL
ACL全称Access Control List,访问控制列表,这个东西又是什么?

在传统的权限控制中,比如ls -l diary,diary是我的一个文件。
-rw-rwx--- 1 root root 2 10月 1 15:16 diray
对于某个文件和目录,它的使用者大致分为三类:文件拥有者、文件拥有者所在组、其他组这三大类,这样分就有一个很大的局限性,就是不能个性化。

举个例子:我有本日记,我现在想让我的密友看,但是别的朋友不可以看
在这里,“日记”就是文件或者目录,“我”就是“日记”的所有者,文件所在组这里没提到,你可以认为你是内心的独白,“朋友”就是其他组
在传统权限控制中,我想让我的密友看,那么就必须给其他组r权限,这样一来,不光是密友可以看见了,所有朋友都能看见
那我能不能只让密友看,而不让其他人看呢!当然可以,这就是ACL目的所在,可以针对单个用户、群组进行特别权限控制。

先来看下传统的权限:ls -l diary
-rw-rwx---. 1 root root 2 10月 1 15:16 diary
再来看下默认情况下ACL的设定:getfacl diary
# file: diary //文件名
# owner: root //文件拥拥有者
# group: root //文件拥所在组
user::rw- //文件拥有者对其的权限,::之间为空代表文件所有者
group::rw- //文件所在组对其的权限,::之间为空代表文件所在组
other::--- //其他组成员对其的权限,::之间为空代表其他组成员

和ls -l的显示结果一模一样,只是换了种显示方式,现在来设置只让密友查看:setfacl -m u:miyou:r-- diary
设置完就只有密友可以查看,别的人就看不了了,再来看下ACL:getfacl diary
# file: diary
# owner: root
# group: root
user::rw-
user:miyou:r-- //多出了这一项
group::rw-
mask::rwx //又冒出了这么个东东
other::---
mask的作用是这样的:它规定了开放权限的范围,比如我现在把umask设置为r--,而我还想让我的密友可以修改我的日记,于是密友变成了rw-,由于我最大只开放了r权限,即使把密友设置为rw-也只能有r权限,w无效。

再来看下一个好玩的东西:ls -l diary
-rw-rwx---+ 1 root root 2 10月 1 15:16 diary
最后的.变成了+号,这个是因为我设置了ACL缘故,详情请见我以前的一个求助贴的二楼回复:
http://www.linuxdiyf.com/bbs/thread-311465-1-1.html
文章评论

共有 107 条评论

  1. fangzhan9527269 于 2015-11-07 12:15:48发表:

    推荐新手读下《Linux就该这么学》,里面包含了Linux技术知识以及所有红帽RHCSA+RHCE的考点知识点。
    书籍可以在线学习,挺方便的~ http://www.linuxprobe.com/

  2. 梵人 于 2015-09-04 00:37:43发表:

    感谢楼主

  3. fwl 于 2015-08-28 17:58:38发表:

    顶!

  4. 852741963 于 2015-07-19 22:55:52发表:

    感谢分享

  5. 359274651@qq.co 于 2015-02-04 10:13:34发表:

    学习了

  6. yuchunyan 于 2015-01-25 13:31:19发表:

    权限一直有些混乱

  7. sukey_hero 于 2015-01-13 17:01:32发表:

    支持

  8. 小苹果ask 于 2014-12-24 22:30:26发表:

    路过!!!
    帮顶……

  9. dustboy108 于 2014-09-25 09:37:24发表:

    很棒啊这教程啊实际是.........................

  10. jimzz 于 2014-09-25 00:31:12发表:

    初来乍到,没钱不好混啊,呵呵,谢谢楼主分享,好好学习

  11. 735513561 于 2014-09-12 09:00:43发表:

    感谢楼主发帖

  12. zoush_2014 于 2014-09-11 21:38:11发表:

    谢谢楼主!

  13. wangyichao0601 于 2014-08-21 23:22:12发表:

    不错

  14. william2011 于 2014-07-31 12:34:21发表:

    学习了

  15. william2011 于 2014-07-28 21:33:17发表:

    感谢楼主分享

  16. 菜菜123 于 2014-07-21 23:47:54发表:

    新手

  17. jfjlbt 于 2014-06-29 12:35:56发表:

    学习学习

  18. idfindy 于 2014-06-23 15:48:27发表:

    这个要收藏了好好看看

  19. jnexezdl 于 2014-05-08 13:49:24发表:

    不错

  20. beyonfu 于 2014-04-22 17:17:03发表:

    多谢楼主,顶!!!!!!!!!!!

  21. zhoudeng 于 2014-04-21 12:50:47发表:

    初来乍到,没钱不好混啊,呵呵,谢谢楼主分享,好好学习

  22. 834869349 于 2014-03-20 15:17:23发表:

    学学更健康

  23. 877969729 于 2014-03-15 10:54:53发表:

    受教啦

  24. jf1989117 于 2014-03-12 22:00:04发表:

    希望有用~

  25. 清风念浮沉 于 2014-01-25 22:25:09发表:

    0:w(5(

  26. tym5410 于 2014-01-17 14:29:48发表:

    谢谢分享!

  27. xdlg93 于 2013-12-01 14:45:07发表:

    谢谢分享!

  28. linux初学人 于 2013-11-23 12:42:25发表:

    初来乍到,望大神指点小弟,大大

  29. lianlekai 于 2013-11-22 15:27:00发表:

    太高深,暂时还看不懂,呵呵

  30. niejinci 于 2013-10-07 22:27:24发表:

    看看

  31. maolin0609 于 2013-10-01 18:44:21发表:

    终于搞清楚了文件相关的属性了,多谢

  32. idlerinwind 于 2013-09-30 11:29:33发表:

    努力学习Linux

  33. goldenrich 于 2013-09-10 14:22:18发表:

    开始就该这样~

  34. yjf531 于 2013-09-07 09:29:28发表:

    感谢搂住,很受益

  35. boeing747 于 2013-08-28 10:47:38发表:

    谢谢分享

  36. dielang 于 2013-08-24 15:52:16发表:

    好东西7

  37. hj5700 于 2013-08-23 16:46:51发表:

    支持下 非常感谢

  38. qwer5111 于 2013-08-20 16:36:01发表:

    学习了

  39. togogo 于 2013-07-23 09:26:39发表:

    不错~~~!

  40. 失落叶 于 2013-07-22 17:36:11发表:

    多谢