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特殊权限

时间: 2024-10-05 05:31:56

Linux文件权限;ACL;Setuid、Setgid、Stick bit特殊权限的相关文章

setuid setgid stick bit 特殊权限 粘滞位

1.setuid与setgid讲解 看一下系统中用到它的地方,以/etc/passwd和/usr/bin/passwd为例: 分析一下,/etc/passwd的权限为 -rw-r--r-- 也就是说:该文件的所有者拥有读写的权限,而用户组成员和其它成员只有查看的权限.我们知道,在系统中我们要修改一个用户的密码,root用户和普通用户均可以用/usr/bin/passwd someuser这个命令来修改这个/etc/passwd这个文件,root用户本身拥有对/etc/passwd的写权限,无可厚

五大权限:UGO权限、SetUID SetGID Sticky、ACL权限、chattr(文件系统级别的权限)、SELINUX

五大权限:UGO权限.SetUID SetGID Sticky.ACL权限.chattr(文件系统级别的权限).SELINUX ======================文件属性以及ugo权限================================== ls -l 列出文件的属性 linux文件的类型包括以下六种: -  普通文件 d 目录文件 l  链接文件 b block类型的设备文件  块设备文件 c 字符型的设备文件 s socket文件 网络类型的文件 p 管道类型的文件 u

Linux文件权限详解

在Linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录. 通过设定权限可以从以下三种访问方式限制访问权限:只允许用户自己访问:允许一个预先指定的用户组中的用户访问:允许系统中的任何用户访问.同时,用户能够控制一个给定的文件或目录的访问程度.一个文件活目录可能有读.写及执行权限.当创建一个文件时,系统会自动地赋予文件所有者读和写的权限,这样可以允许所有者能够显示文件内容和修改文件.文件所有者可以将这些权限改变为任何他想指定的权限.一个文件也许只有读权限

​Linux文件和目录特殊权限位介绍及实践​(setuid setgid)

            Linux文件和目录特殊权限位介绍及实践 在Linux中不管是超级用户root还是普通用户都可以使用命令"passwd"命令修改自己的密码,但是了解Linux的人都知道Linux密码是存放在/etc/passwd  /etc/shadow  里面的 用ls -l /etc/passwd  /etc/shadow 查看一下权限 [[email protected] ~]# ls -l /etc/passwd /etc/shadow -rw-r--r--. 1 ro

linux文件权限管理与ACL访问控制列表

一.文件属性 1.文件属性: 文件属性操作 chown : change owner  ,设置文件所有者 chgrp : change group  ,设置文件的属组 文件属主修改: chown 格式:chown [OPTION]- [OWNER][:[GROUP]] FILE- 用法: OWNER OWNER:GROUPNAME    (同时修改属主.属组) :GROUPNAME                (默认属主,修改属组) ( 命令中的冒号可用.替换:) chown  –refere

Linux系统中文件的ACL权限

管理员的工作中,相当重要的一环就是"管理账号".因为整个系统都是你在管理,并且所有一般用户的账号申请必须要经过你的协助.在前两篇博客中,我们分别介绍文件的基础权限和特殊权限,也一直在强调权限的重用性,但是传统的权限仅有三种身份(ower.group.others)搭配读.写.执行(r.w.x)三种权限,并不能单纯针对某一个用户或某一个组来设置特定的权限需求,这时我没就不得不使用ACL(访问控制列表)了. 一.什么是 ACL ACL是 Access Control List 的缩写,主要

Linux 文件权限总结

在 Linux 中最基本的任务之一就是设置文件权限.理解它们是如何实现的是你进入 Linux 世界的第一步.如您所料,这一基本操作在类 UNIX 操作系统中大同小异.实际上,Linux 文件权限系统就直接取自于 UNIX 文件权限(www.lampbrother.net). 但不要以为理解文件权限需要长时间的学习.事实上会很简单,让我们一起来看看你需要了解哪些内容以及如何使用它们. 基础概念 你要明白的第一件事是文件权限可以用来干什么.当你设置一个分组的权限时发生了什么?让我们将其展开来说,这个

linux文件权限、特殊权限

在linux中每一个文件或者目录都包含有访问权限. 当执行ls –l,最前面的2-10个字符是用来表示权限的,第一个字符是用来区分文件类型的: d:表示目录 - :表示普通文件 l  :表示一个符号链接文件,实际上它指向另一个文件 b :表示块设备 p:表示管道设备 一.一般权限: 第2-9个字符当中每三个为一组,依次为所有者,所属组,其他用户. r(read,可读):对文件而言,具有可读取文件内容的权限,也就是可以用cat.对目录而言就是浏览目录,可以ls但不可cd: w(write,可写):

初识 Linux 文件权限--Linux基础教程

初识 Linux 文件权限--Linux基础教程 在 Linux 中最基本的任务之一就是设置文件权限.理解它们是如何实现的是你进入 Linux 世界的第一步.如您所料,这一基本操作在类 UNIX 操作系统中大同小异.实际上,权限系统就直接取自于 UNIX 文件权限(甚至使用许多相同的工具). 但不要以为理解文件权限需要长时间的学习.事实上会很简单,让我们一起来看看你需要了解哪些内容以及如何使用它们. 基础概念 你要明白的第一件事是文件权限可以用来干什么.当你设置一个分组的权限时发生了什么?让我们