Linux文件权限;ACL;Setuid、Setgid、Stick bit特殊权限

相关学习资料

http://blog.sina.com.cn/s/blog_4e2e6d6a0100g47o.html
http://blog.csdn.net/aegoose/article/details/25439649

 

目录

1. Linux文件系统权限
2. Linux目录文件权限的安全配置

 

1. Linux文件系统权限

文件与(或)目录是文件系统的具体表现形式,在Linux系统管理部分,文件与目录管理映射了Linux文件系统管理策略的重要方面

0x1: 文件系统的默认权限(umask)

当我们在系统中新建一个文件或目录时,系统会自动赋予该文件或目录一个初始访问权限(Value),我们称为默认权限,默认权限与文件系统的umask值有关。可以在终端下直接输入umask来查看当前系统的umask值。例如:

umask
0022

linux会在默认文件系统策略的基础上,将默认权限减去umask得到最终的权限

/*
假设默认的情况下,umask是0022
*/
1. 新建"文件"的权属是-rw-rw-rw-,权限值是666
则新建文件最终的默认权限是-rw-r--r--

2. 新建"目录"的权属是drwxrwxrwx,权限值是777
则新建目录最总的默认权限但是drwxr-xr-x

0x2: Linux系统权限的表示方法及文件与目录的约定权限

文件和目录的权限

[-dcbps][u:rwx][g:rwx][a:rwx]   
1. 类型
    1) d: dir
    2) -: file
    3) l: symbolic link
    4) p: pipe
    5) c: character device
    6) b=block device
    7) s: socket
2. u(属主owner)
    1) r: 4
    2) w: 2
    3) x: 1
2. g(所在组group)
    1) r: 4
    2) w: 2
    3) x: 1
2. o(其他人ohters)
    1) r: 4
    2) w: 2
    3) x: 1

文件系统的权限表示方法有两种

1. 直接用r、w、x来代表文件的所有者(u owner)、用户组(g group)、其他用户(o other)对某一文件或目录的读、写、执行(x)权限,称为字符表示法,例如
ll
-rw-rw-rw-
2. 用一组(三位)八进制数来间接表示文件或目录的权属,称为数字表示法,例如
chmod 777 test 
注:所谓数字表示法是指将读取(r),写入 (w) 和执行(x) 分別以4(读)、2(写)、l(执行)来代表,沒有授予的部份就表示值为0,然后再把所授予的权限相加而成

0x:3 文件系统属性的修改

chmod的命令可以用下面的正则来表示
chmod [ugoa]*([-+=]([rwxXst]*|[ugo]))+
example

1. chmod 777 /dir/file 设置文件为读写执行(x)  
2. chmod -x /dir/file 删除文件u(owner)g(group)a(all)的可执行(x)  
3. chmod ga-w /dir/file 删除文件g(group)a(all)的可写权限(w)
4. chmod u=rx /dir/file 重设置文件u(owner)为读(r)和执行(x)  
5. chmod +x /dir/file 增加文件u(owner)g(group)a(all)为可执行(x) 

 

 

2. Linux文件系统的特殊权限

从概念上来说,这一部分的所谓"特殊权限"也应该属于第一部分的文件系统权限,但是因为这类权限比较特殊,我们平时使用ls、ll指令也都看不到,同时这类特殊权限如果配置不当,可能还会引发某些安全风险,所以单独分出来学习

0x1: 文件系统的隐藏权限

除了设置文件或目录的读(r)、写(w)、执行(x)权限外,对于某些有特殊要求的档案(如服务器日志)还可以追加隐藏权限的设定。大部分属性在文件系统的安全管理方面起很重要的作用

lsattr: 显示文件/目录的全部隐藏属性
chattr: 修改文件/目录的隐藏属性
Usage: chattr [-RVf] [-+=AacDdeijsSu] [-v version] files..

1. A
文件或目录的atime(access time)不可被修改(modified), 可以有效防御黑客为了隐藏webshell或者隐藏入侵过程中擦去对敏感文件的访问痕迹
2. a
即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性
3. c
即compresse,设定文件是否经压缩后再存储。读取时需要经过自动解压操作
4. d
即no dump,设定文件不能成为dump程序的备份目标
5. i
设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件 系统的安全设置有很大帮助
6. j
即journal,设定此参数使得当通过mount参数: data=ordered或者data=writeback挂载的文件系统,文件在写入时会先被记录(在journal中)。如果filesystem被设定参数为 data=journal,则该参数自动失效
7. s
保密性地删除文件或目录,即硬盘空间被全部收回
8. S
硬盘I/O同步选项,功能类似sync
9. u
与s相反,当设定为u时,数据内容其实还存在磁盘中,可以用于undeletion.
//值得注意的是:
只有superuser(root)或具有CAP_LINUX_IMMUTABLE处理能力(标识)的进程能够施加这些隐藏选项

0x2: 和提权相关的特殊权限

接下来,我们来谈谈Linux文件系统中的特殊的权限规范,这些权限包括SUID/SGID/Sticky Bit

1. Set UID

SUID表示当请求执行包含SUID特殊权限的程序时,能够"临时"拥有该程序所有者(属主)对该文件的存取权限。 set uid之后,权限组合中的-x位被-s所取代
假设普通用户A通过passwd命令更新自己的密码,而/usr/bin/passwd的所有者是root(root,root),也就是说,当A请求执行passwd命令时,实际上是暂时获得root对/usr/bin/passwd的执行权限,并进一步更新/etc/shadow的内容
归纳一下流程是这样的

1. root用户对指定的文件设置-s位权限
chmod u+s file
这意味着其他用户可以"临时"地以root的身份操作这个文件

2. 非root用户使用临时提权命令 1) 直接使用sudo指令 2) 在代码中使用setuid(0)这样的api来进行临时提权 /* 对于这里所谓的临时提权,我们必须要搞清楚它们的概念 1. 不是什么文件都可以通过sudo、setuid进行临时提权的 2. 只有明确设置了-s标志位的文件才具有被临时提权的机会 3. 可以简单的理解为只有root主动放出了这个-s权限,其他用户才有机会进行临时提权 */

2. Set GID

SGID在概念上和SUID很类似,当所有者所在的用户组(group)的权限组合中可执行位(x)被s所取代时(例如---rws---),便构成Set GID的权限设置。请求执行者所在的用户组将暂时获得该程序所属的用户组ID(group ID)的存取权限

chmod g+s dir

3. Sticky Bit

当文件系统"其他(others)"的权限组合中可执行位(x)被t所取代时(例如------rwt),便构成Sticky Bit的权限设置
SBIT顾名思义可以起到限制访问的作用,是容易理解而好用的设置,它只对目录有效。当对一个目录A施加了SBIT设定以后,并且使用者对A目录有w和x权限时,则使用者在A目录下所创建的个人文档(含目录)只有使用者本身或root可以执行删除、更名、移动等操作(是否可读依实际权限r而定)

chmod o+t dir 
rm -r dir: error  

 

 

2. Linux目录文件权限的安全配置

0x1: 建议umask安全配置

umask命令用来设置进程所创建的文件的读写权限,最保险的值是0077,即关闭创建文件的进程(owner 拥有者)以外的所有进程的读写权限,表示为-rw-------
在~/.bash_profile中,加上一行命令umask 0077可以保证每次启动Shell后, 进程的 umask权限都可以被正确设定

 

Copyright (c) 2014 LittleHann All rights reserved

Linux文件权限;ACL;Setuid、Setgid、Stick bit特殊权限,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。