linux基础篇(二):基于Redhat7系统的特殊权限与acl权限列表

新建目录和文件的默认权限

新建目录和文件的默认权限是由系统中umask值来决定的。
新建FILE权限:666-umask (对位相减)    由数字法赋权限的过程中,我们能够发现,凡是奇数权限,总是包含执行权限的。而一个文件如果默认就包含执行权限其实是非常危险的。因此如果所得结果中某位存在执行(奇数)权限,则将其权限加1.
新建DIR权限:777-umask
非特权用户umask 是002
root的umask是022 设定umask: umask # ,比如 umask 022
umask -S 模式方式显示
umask -p 输出可被调用
全局设置: /etc/bashrc 用户设置 ~/.bashrc
在这里插入图片描述

Linux 系统中的特殊权限 SUID, SGID, Sticky

1、普通权限在一般情况下应用是没有问题。可是在一些特殊场景下,仅仅设置普通权限,并不能满足实际生产需要。
2、如果一个文件具有SUID,SGID,Sticky权限,那么相应u,g,o 的x权限位会被替换成s权限。
3、SUID,SGID,权限是用来提升权限的。权限是累加的。也就是说,用户本身的权限,加上SUID,SGID的权限。

SUID

我们先来看一个实例
在这里插入图片描述

我们能够看到在,passwd 属主的权限为: rws
这里的s 就是特殊权限SUID。
它表现为,当任何用户在使用passwd命令时,它的身份将临时切换为root用户,并具有root用户的权限,而不用考虑该用户对passwd的权限。 也可以理解为,某二进制文件如果具有SUID权限,则任何使用该二进制文件的用户,其权限将临时集成该二进制文件属主的权限。

SUID特殊权限使用前提:进程有属主和属组;文件有属主和属组
任何一个可执行程序文件能不能启动为进程,取决发起者对程序文件是否拥有执行权限
启动为进程之后,其进程的属主为发起者,进程的属组为发起者所属的组
进程访问文件时的权限,取决于进程的发起者
       (a) 进程的发起者,同文件的属主:则应用文件属主权限
       (b) 进程的发起者,属于文件属组;则应用文件属组权限
       (c) 应用文件“其它”权限
    任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限
    启动为进程之后,其进程的属主为原程序文件的属主
    SUID只对二进制可执行程序有效
    SUID设置在目录上无意义
    权限设定:
    chmod u+s FILE…
    chmod u-s FILE…
    chmod u+s 文件名称
    chmod 4777  文件名称  

将 /usr/bin/passwd s权限去掉
在这里插入图片描述
此时,如果切换普通用户,将不具备写权限。 也就修改不了自己的密码

在这里插入图片描述
将权限恢复 切换回root用户
在这里插入图片描述

SUID是一种特殊权限,用s 表示。如果一个二进制文件具有SUID权限的话,其属主x权限将被s替代。而且在使用数字法进行权限修改的时候,其数字位单独用4表示。

SGID

任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限
启动为进程之后,其进程的属主为原程序文件的属组
权限设定:chmod g+s FILE…    chmod g-s FILE…
默认情况下,用户创建文件时,其属组为此用户所属的主组
一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录的属组
    通常用于创建一个协作目录(多用户公用目录) 
    权限设定:chmod g+s DIR…    chmod g-s DIR…
    chmod g+s 目录或文件名称
    chmod 2777 目录或文件名称

在这里插入图片描述

通过以上描述我们可以发现,如果我们给一个目录设置了SGID权限,然后有多个用户在该目
录下创建了不同的文件,而这些文件的属组都是该目录的属组。此时问题出现了,在该目录
下的不同用户可以相互删除对方的文件。那么此时,我们就需要使用另外一个特殊权限,来解
决这个问题。

Sticky

    具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权
    在目录设置Sticky 位,只有文件的所有者或root可以删除该文件
    sticky 设置在文件上无意义
    权限设定:chmod o+t DIR…    chmod o-t DIR…
    chmod  o+t   目录名称  或者chmod 1777 目录名称

在这里插入图片描述

权限位映射

我们首先来看一组实例
实验环境中创建两个文件,注意,f1没有x权限,f2有x权限
在这里插入图片描述
下面分别给两个文件加上SUID权限,执行ll 命令查看两个文件的权限变化
在这里插入图片描述

从上面的实例我们可以看出
SUID: user,占据属主的执行权限位
   s: 属主拥有x权限
   S:属主没有x权限

接下来我们看另外一组实例
实验环境中创建两个目录文件,注意属组的权限区别
在这里插入图片描述
下面分别给两个目录加上SGID权限,执行 ll 命令观察两个目录文件的权限变化
在这里插入图片描述

从上面的实例中,我们可以看出
SGID: group,占据属组的执行权限位
  s: group拥有x权限
  S:group没有x权限

最后一组实例
实验环境中创建两个目录文件,注意 o 的权限区别
在这里插入图片描述
下面分别给两个目录加上sticky权限,执行ll 命令观察两个目录的权限变化
在这里插入图片描述

通过上面的实例
Sticky: other,占据other的执行权限位
t: other拥有x权限
T:other没有x权限

访问控制列表 ACL

ACL:Access Control List ,实现灵活的权限管理
除了文件的所有者,所属组和其它人,可以对更多的用户设置权限
ACL生效顺序:所有者,自定义用户,自定义组,其他人

setfacl #启动文件权限列表

setfacl -m u:student:rw /mnt/westos
-rw-rw-r–+(文件权限列表启动) 1 root root 0 Apr 4 22:01 westos
在这里插入图片描述

getfacl #查看文件权限列表

getfacl /mnt/westos
getfacl: Removing leading '/' from absolute path names
# file: mnt/westos                        ##文件名称
# owner: root                             ##文件所有者
# group: root                             ##文件所有组
user::rw-                                 ##用户权限
user:student:rw-                          ##指定用户权限
group::r--                                ##组权限   
mask::rw-                                 ##用户能够修改的最大权限
other::r--                                ##其他用户权限

在这里插入图片描述

测试

(1)新建用户 love 用love用户对/mnt/westos进行写入,提示love用户没有对/mnt/westos文件的写入权限
在这里插入图片描述
在这里插入图片描述
(2)切换到student用户,对/mnt/westos进行写入,提示student用户可以对/mnt/westos文件进行写入
在这里插入图片描述
在这里插入图片描述

设定

setfacl -m u:lee:rwx /mnt/file        #设定lee用户对file文件可以读写执行
setfacl -m g:student:rwx  /mnt/file    #设定student组对文件可以读写执行
setfacl -x u:lee /mnt/file        #在权限列表中删除用户lee的信息
setfacl -x g:student    /mnt/file    #在权限列表中删除student组的信息
setfacl -b   /mnt/file            #关闭权限列表那么,"+"消失

(1)设定
在这里插入图片描述
(2)删除
在这里插入图片描述
(3)关闭权限列表
在这里插入图片描述
权限后的“+”消失,表示权限列表关闭

对目录的操作

(一)setfacl -m d:u:student:rwx /mnt/test/
对目录中新出现的内容启动权限列表,而目录本身和原来存在的文件不生效
在这里插入图片描述
(二)setfacl -Rm u:student:rwx /mnt/test/
对目录本身和已存在的文件启动权限列表,但对新建立的文件无效
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/gd0306/article/details/83038263