目录

1.SUID权限

2.SGID权限

3.Sticky BIT权限

4.ACL权限

在多用户多任务的Linux系统里,每个进程的运行都与运行的用户和组相关联。除了进程识别号(PID)以外,每个进程还有另外4个用户和用户组相关的识别号。他们分别是:实际用户识别号(RUID)、实际组识别号(RGID)、有效用 户识别号(EUID)、有效组识别号(EGID)。EUID和EGID的作用在于确定一个进程对其访问的文件的权限和优先权。一般情况下, EUID、EGID与RUID和RGID相同。设置了SUID和SGID情况除外。

1.SUID权限 

当一个具有执行权限的文件设置SUID权限后,用户执行这个文件时将以文件所有者的身份执行。

特点:只有可以执行的二进制程序才能设定SUID权限

命令执行者要对该程序拥有x(执行)权

命令执行者在执行该程序时获得该程序文件属主的身份

SUID权限只在该程序执行过程中有效,就是说身份改变只在执行过程中有效。

可执行文件/usr/bin/passwd所属用户是root(UID为0),此文件被设置了SUID权限。当一个UID为1000、GID为1000的用户执行此命令时,产生的进程RUID和RGID分别是1000和 1000,EUID是0、EGID是1000。

user1用户登陆,取得了一个bash的shell类型。然后 执行passwd命令。在这个命令执行过程中,执行命令的身份被切换成了root用户。 在用户权限上 有一个s,这就是说明该文件设置了SUID权限。也就是说在普通用户在执 行passwd命令的时候是使用root的身份。

添加或删除SUID的命令格式为:

chmod u+s /usr/bin/passwd           #添加SUID权限

chmod u-s /usr/bin/passwd           #删除SUID权限

2.SGID权限

SGID权限的功能和SUID类似。如果某个二进制文件的用户组权限设置了SGID权限。则在执行该文件时,用户将获得该文件所属组的权限。 SGID可以针对文件生效,也可以针对目录生效。在设置了SGID权限的目录下建立文件时,新创建的文件的所属组会继承上级目录的权限

添加或删除SGID的命令格式为:

chmod g+s /usr/bin/passwd

chmod g-s /usr/bin/passwd

除了二进制程序之外,SGID也能用在目录上,这也是常见的用途。当一个目录设置了SGID的权限后它将具有如下功能: 用户在此目录下有效用户组将会变成该目录的用户组。若用户在此目录下具有w的权限,那么在创建新文件之后文件的所属组与目录的属组相同。

SGID针对文件: 

只有可执行的二进制程序才能设置SGID权限。

命令执行者要对该程序拥有x(执行)权限。

程序在执行过程中,程序的组会改变成程序文件的属组。

SGID权限同样只在该程序执行过程中有效,也就是说组身份的转变在程序执行过程中有效。

SGID针对目录: 

普通用户必须对此目录拥有r和x权限才能进入此目录。

普通用户在此目录中的有效组会变成此目录的属组。

普通用户对此目录拥有w权限时,新建的文件的默认属组是这个目录的属组。

3.Sticky BIT权限

sticky权限只能用于设置在目录上,设置了这种权限的目录,任何用户都可以在该目录中创建或修改文件,但只有该文件的创建者、目录的拥有者和root可以删除自己的文件。在RedHat或CentOS系统中/tmp目录就拥有sticky权限。

添加或删除

chmod o+t /tmp/            #添加SBIT权限

chmod o-t /tmp/            #删除SBIT权限

4.ACL权限 

ACL(access control list)访问控制列表,可以对单一的用户或者组设置对文件或目录的独立rwx权限。

开启ACL权限 

由于ACL是传统的Unix-like操作系统权限的额外支持项目,因此要使用ACL必须要有文件系统的支持才行。目前绝大部分的文件系统都支持ACL的功能,包括EXT3/EXT4,JFS,XFS等。ext系列:

文件系统查询命令格式:dumpe2fs -h 分区设备名称

命令:dumpe2fs -h  /dev/sad3

Default mount options;     #缺省挂载选项

假如没有开启ACL权限,手动开启分区ACL权限。

命令:mount -o remount ,acl/

此命令执行后是临时让/分区有ACL权限,重启后失效。若永久开启ACL需要修改配置文 件/etc/fstab文件:

xfs文件系统: xfs文件系统是centos7中默认使用的文件系统(旧版本通常为ext系列),XFS文件系统默认开启ACL权限。因为是不同的文件系统,所以查询的方式也并不相同:

命令:dmesg  |  grep  -i  “acl”

ACL权限的使用描述

实验:

第一步:创建一个目录。将目录的所属组进行修改,所有用户使用组权限进行创建文件

第二步:为了防止组用户之间相互删除或修改文件,使用SBIT权限对目录进行限制。最终使目录的权限为1770

第三步:防止组内的其他人查看自己的文件,文件创建者修改自己文件其他人权限为 0

第四步:创建一个特殊的用户,用来代替root用户对目录内文件进行查看修改。给该用户添加ACL权限。

setfacl 【选项】 {-m|-x} {u:username:rwx} 文件或目录

getfacl  目录名   :可以查看目录权限的详细信息

选项: -b          #删除所有ACL条目

-m         #添加ACL条目

-x         #删除指定用户的ACL权限

-R          #实现目录上的ACL权限递归 :对目录进行-R递归添加,就可以对目录下的所有文件生效。

-d            #设置默认ACL权限(对目录生效)对文件或目录进行-d设置,后续新生成的文件都会自动生效。

一般情况下setfacl   -mRd  u:username:rwx   文件或目录

注:删除的时候不能带权限:setfacl   -x  u:username  文件或目录

mask:在ACL权限里还有mask的相关设置,可以把mask理解为有效权限。它的意思就是 用户或组的权限必须要存在于mask的权限设置范围内才能生效。

(为test目录设置mask为r可读。再次查看发现ACL权限出现了变化。user1的ACL权限在 加上mask之后只有r权限。)

注:为/test/添加默认最大权限(mask)为r,其他ACL权限不得超出此权限。但mask的设置必须遵循最后设置原则,其他ACL权限设置完成后最后设置mask默认ACL才能正常生效。

在生产环境中我们通常将mask默认设置成rwx,然后针对不同的用户和用户组规定他们权限。

sudo命令 

而如果要切换的用户是root就要知道root的密码。在系统中root的权限是最大的,如果很多人都知道root密码以后那么是非常不安全的。为了避免这种情况我们还可以使用sudo命令,在使用sudo命令时只输入自己的密码即可。sudo的使用方式是在sudo后加上需要执行的命令。sudo执行流程如下:

1.当用户执行sudo时系统会在/etc/sudoers文件中查找该用户是否有执行sudo的权限。

2.若用户具有执行sudo的权限后,系统会让用户输入自己的密码来确认。

3.密码输入成功,开始进行sudo后续的命令。但root执行sudo不需要输入密码(如果切换的用户与执行者的身份相同也不用输入密码)。

因为在sudo执行的时候要去检查/etc/sudoers文件,所以先要对/etc/sudoers文件进行修改,让该账号能够使用全部或部分的root命令功能。(可以用visudo命令打开文件进行修改,在退出时如果有语法错误会提示)

(vim /etc/sudoers 添加user1的sudo权限)

格式为:用户账号    登录者的来源主机名=(可切换的身份)   可执行的命令

所以上面两行的意思是:

1.用户账号:系统默认为root可以使用sudo命令。后添加user1用户。

2.可以被管理的服务器的网络地址,写自己或者ALL代表任何来源地址都可以管理本台服务器。

3.可切换身份:这个账号可以切换成什么身份来执行后续的命令。

4.可执行的命令:这个命令必须写绝对路径。

ALL:代表任何身份,任何主机,任何命令。

user用户权限接近与root的原因:

%wheel  ALL=(ALL)  ALL   ,wheel是一个默认组,这个组内的成员默认使用sudo命令时转换成root用户执行所有命令的,而user1用户就在此组内。

添加授权组使用sudo命令:添加组的时候在组名添加%即可。之后保存退出

加!表示取反:user2  ALL=(ALL)   !/usr/bin/passwd root

sudo和su命令的组合使用:

这样可以让user1不知道root用户密码的情况下使用“sudo su - root”切换用户身份至root。

23.文件特殊权限之SUID权限、SGID权限、Sticky BIT权限和ACL权限相关推荐

  1. 理解基本权限以及特殊权限:Suid 、Sgid、Sticky以及acl

    理解基本权限以及特殊权限:Suid .Sgid.Sticky以及acl 1 在Linux中特殊权限是什么?为什么要设定特殊权限?回答这个问题前,我们不妨思考为什么要设定权限? 大家知道Linux中一切 ...

  2. linux下文件、文件夹权限的作用及设置方法(常规权限与SUID、SGID、SBIT、ACL、sudo、umask)

    linux下文件权限设置及其作用 文件权限与归属(读.写.执行权限) linux系统中一切皆文件,要说权限,有必要先了解一下文件的分类 Linux中的文件分类 在linux系统中一切都是文件,但是文件 ...

  3. 特殊权限控制之SUID、SGID、Sticky及facl

    上次讲了基本权限管理中的chown.chgrp.chmod以及umask四个命令,今天我们来讲一讲权限最后的一点内容特殊权限位:SUID.SGID.Sticky以及facl 一.SUID 定义:运行某 ...

  4. Linux 文件目录特殊权限设定(SUID,SGID,SBIT)

    Linux文件及目录的权限设定,除了我们孰知的读写执行(rwx)之外,还有一些特殊的权限设定用来满足特定的目录.这些特殊权限的设定主要是SUID,SGID以及SBIT.这几个值并非一个单独的rwx,而 ...

  5. 关于SUID、SGID、Sticky

    SUID属性 passwd命令可以用于更改用户的密码,一般用户可以使用这个命令修改自己的密码.但是保存用户密码的/etc/shadow文件的权限是400,也就是说只有文件的所有者root用户可以写入, ...

  6. Linux的特殊权限(Suid、Sgid、Sbit 详解)

    文章目录 一.Linux系统特殊权限概述 二.suid 1.在介绍这个权限之前需要了解一些问题 2.SUID 作用详解 3. 授权SUID 4.SUID总结 二.Sgid 1.Sgid作用详解 2.授 ...

  7. linux suid提权原理,Linux SUID、SGID、sticky提权

    S UID SGID SOID 核心就在 "S" ,S就是允许本圈子 用户有r,w,x ; 例如:1.chmod s+g test.txt 只允许testex.txt所在的组 员可 ...

  8. Linux特殊权限:SUID、SGID、SBIT

    SUID: 只对二进制程序有效 执行者对于程序需要有x权限 在程序运行过程中,执行者拥有程序拥有者的权限 例如: 普通用户执行passwd命令. 首先查看passwd命令的绝对路径: 查看passwd ...

  9. Linux04-文件系统权限与ACL权限

    目录 一.文件系统权限 1.1.认识文件系统权限 1.2.管理文件系统权限 1.3.特殊权限 1.4.默认权限 二.ACL权限 2.1.ACL本质是文件系统的一个挂载选项 2.2.更改文件的ACL权限 ...

  10. Linux之特殊权限(SUID/SGID/SBIT)

    Linux之特殊权限(SUID/SGID/SBIT) 博客分类: Linux Linux脚本UnixF#  特殊权限的介绍 Set UID 当s这个标志出现在文件所有者的x权限上时,如/usr/bin ...

最新文章

  1. 深度学习英文文献_文献速递 | 预测术后30天死亡率的深度学习模型
  2. push本地代码到github出错
  3. 全国人口净流入城市排名2020_从人口净流入量来看一线城市吸引力的对比分析...
  4. VB讲课笔记05:数据输入输出
  5. zTree动态添加节点
  6. 如何在手机上编码python_如何在Python中进行热编码?
  7. 口令破解:kali字典工具的使用:CUPP、Crunch、Hydra
  8. 生成模型应用——使用变分自编码器(VAE)控制人脸属性生成人脸图片
  9. 采用 KMP 算法编程实现病毒感染检测算法
  10. c 语言温度换算的程序,华氏温度换算公式及C语言转换程序代码
  11. svn访问路径提示Unable to connect to a repository at url
  12. 2021数学建模C题详细思路,代码,论文,参考文献
  13. 组的迷惑行为之 Linux用户的初始用户组(主组,基本组)与有效用户组(附加组)
  14. Python-被7整除
  15. (精华)2020年10月7日 高并发高可用 Redis实现异步架构
  16. 标准盒模型与怪异盒模型
  17. 在Activity中获取另一个XML文件的控件
  18. SpringBoot整合MybatisPlus实战动态SQL,java分布式架构
  19. FPGA DDR2操作
  20. C/C++数字后面的L是什么意思?

热门文章

  1. Android 获取文件名 乱码
  2. 在线问答系统---数据库管理
  3. 2018-8-10-dotnet-从入门到放弃的-500-篇文章合集
  4. 「Gitea篇」如何用Git平台账号登录建木CI
  5. 中国苏珊大叔山东农民 朱之文
  6. 微信公众号开发之分享接口实现
  7. 第十四届全国大学生信息安全竞赛-线上赛Writeup
  8. oracle-12514,Oracle错误 ORA-12514 解决方法
  9. centos 8 编译安装hyperscan
  10. join()方法的作用