基础知识

  相信大家应该都知道linux的文件基本权限,使用ls -l命令可以显示文件的基本权限,"-rwxrwxrwx.",第一位表示文件的属性(是文件-  ,目录d等),后面每隔三位为属主、属组、其他用户 对应的读写执行权限。这个比较简单很容易理解。

  文件特殊权限

  单纯的读写执行权限无法满足我们的基本要求,因此对应有了特殊权限位(SUID、SGID、SBIT),这些权限 位用来弥补一般权限不能实现的功能,帮助没有权限的用户执行需要root权限的工作。下面我们就详细了解一下这三个特殊权限位的功能和用法。

  1、SUID

  SUID可以让普通用户对某个可执行命令拥有属主的权限,比如普通用户可以用passwd命令,然而passwd的权限为:

  1. [root@linux-node2 cron]# ll /bin/passwd
  2. -rwsr-xr-x. 1 root root 27832 Jan 30 2014 /bin/passwd

  可以看到passwd的属主权限是rws,即x被赋予了特殊权限,其他用户执行该命令的时候也会拥有属主的权限。我们就拿rm命令举一个例子(生产环境中不建议使用):

  1. [root@linux-node2 cron]# ll /bin/rm
  2. -rwxr-xr-x. 1 root root 62808 Jan 25 2014 /bin/rm
  3. [root@linux-node2 cron]# chmod u+s /bin/rm
  4. [root@linux-node2 cron]# ll /bin/rm
  5. -rwsr-xr-x. 1 root root 62808 Jan 25 2014 /bin/rm
  6. [root@linux-node2 cron]# touch /data/test
  7. [root@linux-node2 cron]# ll /data/test
  8. -rw-r--r-- 1 root root 0 Jan 10 17:52 /data/test
  9. [root@linux-node2 cron]# su bing
  10. [bing@linux-node2 cron]$ rm -f /data/test

  通过上面的例子可以看出,当我们赋予rm特殊权限后,即使普通用户对文件没有写入权限,也可以使用特殊权限对其操作。

  2、SGID

  SGID可以让其他用户对某个可执行命令拥有属组权限,原理同SUID,只是这个是属组中x被赋予特殊权限,具体不再详解,请看例子:

  1. [bing@linux-node2 cron]$ ll /usr/bin/wall
  2. -r-xr-sr-x. 1 root tty 15344 Jan 27 2014 /usr/bin/wall

  删除SGID特殊权限:chmod g-s /usr/bin/wall,关于chmod的命令这里就不解释了。

  3、SBIT

  SBIT是针对others来设置的,和上面两个一样,只是功能不同而已。

  SBIT目前只针对目录有效,对于目录的作用是:当用户在该目录下建立文件或目录时,仅自己与root用户才有权限删除。

  像/tmp目录(drwxrwxrwt.),任何人可以在/tmp内增加、修改文件,但是这个目录只有root和自己才能够删除文件。举例说明:

  1. [bing@linux-node2 ~]$ cd /data/
  2. [bing@linux-node2 data]$ touch test1
  3. [bing@linux-node2 data]$ chmod o+t test1
  4. [bing@linux-node2 data]$ ll test1
  5. -rw-rw-r-T 1 bing bing 0 Jan 10 18:20 test1

上面的例子是错误示范,删除文件是看上级目录权限的,所以这样创建SBIT文件并没有什么作用,这个SBIT特殊权限建议对目录操作,目录下的文件会生效哦。  

这里我就不演示切换到其他用户删除该文件了,感兴趣的自己测试。

  文件隐藏权限

  linux中有些文件,虽然我们对这个文件有权限,却没有办法编辑和删除,或者仅能对这个文件追加等操作,这个就涉及到了linux的隐藏权限。

  1、chattr命令用于设置文件的隐藏权限,用法“chattr [+|-参数] [文件]”。

  参数:

  1. A:即Atime,告诉系统不要修改对这个文件的最后访问时间。
  2. S:即Sync,一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。
  3. a:即Append Only,系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。
  4. b:不更新文件或目录的最后存取时间。
  5. c:将文件或目录压缩后存放。
  6. d:当dump程序执行时,该文件或目录不会被dump备份。
  7. D:检查压缩文件中的错误。
  8. i:即Immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。
  9. s:彻底删除文件,不可恢复,因为是从磁盘上删除,然后用0填充文件所在区域。
  10. u:当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件,用来防止意外删除文件或目录。
  11. t:文件系统支持尾部合并(tail-merging)。
  12. X:可以直接访问压缩文件的内容。

   举例说明:我们想把某个文件锁定只读,不允许任何人修改或删除,可以用+i选项。

  1. [root@linux-node2 data]# ll test
  2. -rw-r--r-- 1 root root 0 Jan 11 09:25 test
  3. [root@linux-node2 data]# lsattr test
  4. ---------------- test
  5. [root@linux-node2 data]# chattr +i test
  6. [root@linux-node2 data]# lsattr test
  7. ----i----------- test
  8. [root@linux-node2 data]# rm -f test
  9. rm: cannot remove test’: Operation not permitted

  可以看出,使用隐藏文件属性保护文件很重要,即使root用户也无法对文件进行编辑,例如可以把很重要的日志文件保存,可以用+a选项,只能对日志文件进行追加写入,无法查看可编辑,这样保证了日志文件的安全性。

  删除文件隐藏权限也很简单(chattr -i test)。

  2、lattr 查看隐藏权限,用法:“lattr [文件]”。

  ACL权限设置命令(setfacl、getfacl)

  访问控制列表(Access Control List, ACL)在很多地方都能看到,比如路由交换命令中,防火墙规则中都能看到这个名词,主要是限制细节的功能。

  以上的权限管理都是基于用户和用户组的,而无法做到更精细的文件权限管理。这里就引入了setface命令可以对单一用户、单一文件或目录进行rwx权限控制。

  1、 setfacl

  用法:setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...

  选项:  

  1. -m, --modify-acl 更改文件的访问控制列表
  2. -M, --modify-file=file 从文件读取访问控制列表条目更改
  3. -x, --remove=acl 根据文件中访问控制列表移除条目
  4. -X, --remove-file=file 从文件读取访问控制列表条目并删除
  5. -b, --remove-all 删除所有扩展访问控制列表条目
  6. -k, --remove-default 移除默认访问控制列表
  7. --set=acl 设定替换当前的文件访问控制列表
  8. --set-file=file 从文件中读取访问控制列表条目设定
  9. --mask 重新计算有效权限掩码
  10. -n, --no-mask 不重新计算有效权限掩码
  11. -d, --default 应用到默认访问控制列表的操作
  12. -R, --recursive 递归操作子目录
  13. -L, --logical 依照系统逻辑,跟随符号链接
  14. -P, --physical 依照自然逻辑,不跟随符号链接
  15. --restore=file 恢复访问控制列表,和“getfacl -R”作用相反
  16. --test 测试模式,并不真正修改访问控制列表属性
  17. -v, --version 显示版本并退出
  18. -h, --help 显示本帮助信息

  例如:去掉user用户对data的访问权限:setfacl -x u:user /data/  

  2、getfacl

  getfacl是查看文件或文件夹的访问控制权限

  用法:

  getfacl file

  这里就举例说一下访问控制列表的用法:

  针对用户的设定方式:(u:用户名:权限)

  设定权限用m选项,删除权限用x选项,

  1. [root@linux-node2 data]# ll test2
  2. -rw-r--r-- root root Jan : test2
  3. [root@linux-node2 data]# setfacl -m u:bing:rwx test2
  4. [root@linux-node2 data]# getfacl test2
  5. # file: test2
  6. # owner: root
  7. # group: root
  8. user::rw-
  9. user:bing:rwx
  10. group::r--
  11. mask::rwx
  12. other::r--
  13. #授权用户bing对该文件有写入权限,切换到bing用户
  14. [bing@linux-node2 data]$ echo "haha" >test2
  15. [bing@linux-node2 data]$ cat test2
  16. haha

参考文献:https://blog.csdn.net/ttt111zzz/article/details/78779247

linux文件的特殊权限及隐藏权限的更多相关文章

  1. Linux学习之CentOS(九)-----文件与目录的默认权限与隐藏权限

    文件与目录的默认权限与隐藏权限 一个文件有若干个属性, 包括读写运行(r, w, x)等基本权限,及是否为目录 (d) 与文件 (-) 或者是连结档 (l) 等等的属性! 要修改属性的方法在前面也约略 ...

  2. Linux学习之CentOS(八)----文件与目录的默认权限与隐藏权限(转)

    文件与目录的默认权限与隐藏权限 一个文件有若干个属性, 包括读写运行(r, w, x)等基本权限,及是否为目录 (d) 与文件 (-) 或者是连结档 (l) 等等的属性! 要修改属性的方法在前面也约略 ...

  3. Linux之文件(目录)默认权限、特殊权限与隐藏权限

    文件默认权限 从Linux之用户组.文件权限详解了解到文件与目录的基本权限管理,文件在创建时如果不指定具体的权限,那么系统会给它分配一个默认的权限,这个默认权限就是umask. vbird@Ubunt ...

  4. Linux文件和目录的属性及权限

    Linux文件和目录的属性及权限讲解 文字解释: 第一列:inode索引节点 第二列:文件类型及权限 第三列:硬链接个数 第四列:文件或目录所属的用户(属主) 第五列:文件或目录所属的用户所归属的组( ...

  5. [转] Linux中的默认权限与隐藏权限(文件、目录)

    [From] https://blog.csdn.net/davidsky11/article/details/25424615 一个文件(或目录)拥有若干个属性,包括(r/w/x)等基本属性,以及是 ...

  6. Linux文件与目录的默认权限与隐藏权限 - umask, chattr, lsattr, SUID, SGID, SBIT, file

    文件默认权限:umask [root@www ~]# umask 0022 <==与一般权限有关的是后面三个数字! [root@www ~]# umask -S u=rwx,g=rx,o=rx ...

  7. 攻城狮在路上(叁)Linux(十五)--- 文件与目录的默认权限与隐藏权限

    一.文件默认权限:umask <==需要被减去的权限. 1.umask指的是当前用户在新建文件或者目录时的默认权限,如0022; 2.默认情况下,用户创建文件的最大权限为666; 创建目录的最大 ...

  8. 文件与目录的默认权限与隐藏权限【转vbird】

    一个文件有若干个属性, 包括读写运行(r, w, x)等基本权限,及是否为目录 (d) 与文件 (-) 或者是连结档 (l) 等等的属性! 要修改属性的方法在前面也约略提过了(chgrp, chown ...

  9. linux文件操作篇 (一)文件属性与权限

    文件的属性和权限是linux中 目录 和 文件 的两个基本特性. #属性: . 所有者属性 . 访问权限属性   -rwxrwxr-x #第一个字符是文件类别 -表示 普通文件 d 表示目录 b 表示 ...

随机推荐

  1. 什么是OTN交换?

    作者:Babak Samimi 大家不停地听到大数据的显著增长及其带来的全球运营商网络上流量的剧增. 比方.Qmee有一个有意思的infographic,在2013年捕捉了60秒的线上流量,其统计结果 ...

  2. 我的Android进阶之旅------&gt;Android中ListView中嵌套(ListView)控件时item的点击事件不起作的问题解决方法

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvb3V5YW5nX3Blbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...

  3. @SpringBootApplication注解

    @SpringBootApplication注解表明了SpringBoot的核心功能,即自动配置. @SpringBootApplication(主配置类): @SpringBootConfigura ...

  4. phoenixframe自己主动化測试平台对div弹出框(如弹出的div登陆框)的处理

    package org.phoenix.cases; import java.util.LinkedList; import org.phoenix.action.WebElementActionPr ...

  5. Spring+Mybatis之注册功能demo

    这次先注册功能的是基于登录之后,所以很多配置,实体类等就不再赘述了. 首先也不是直接在地址栏输入一个网页就可以到注册页面的.而是需要通过后台发送一个请求从而跳转到注册页面 先写注册页面,body部分 ...

  6. Android+Jquery Mobile学习系列(2)-HTML5/Jquery Mobile基础

    本章介绍两个关键字[HTML5]和[Jquery Mobile],简单说这两者的关系是:HTML5作为主体,Jquery Mobile在HTML5的基础上对其进行了优化.装饰. HTML5 HTML5 ...

  7. java web支持jsonp跨域

    jsonp跨域请求处理 Jsonp(JSON with Padding) 是 json的一种"使用模式",可以让网页从别的域名(网站)那获取资料,绕过同源策略(若地址里面的协议.域 ...

  8. linux更换阿里云的源的shell脚本

    #!/bin/bash##########################################Function: update source#Usage: bash update_sour ...

  9. 微信小程序左右滑动切换页面示例代码--转载

    微信小程序——左右滑动切换页面事件 微信小程序的左右滑动触屏事件,主要有三个事件:touchstart,touchmove,touchend. 这三个事件最重要的属性是pageX和pageY,表示X, ...

  10. CDN 内容分发网络

    第一步,HTML的文件引用:HTML的文件头(也有文件中,文件尾)那边常有其他文件引用,比如CSS以及JS的引用. 就以bootstrap常用的引用来举个栗子你常见的引用可能会是这样的: <he ...