特殊权限--14 (可不用却知)

问题一:查看用户属于那个组
[root@oldboy ~]# groups oldxu (用户名称)
oldxu : oldxu root adm


1.特殊权限
相比于一般权限不同的,文件出现一些特殊的标记符号,去达到一个一些特殊的命令使用。

      特殊权限SUID     属主
  特殊权限SGID     属组
  特殊权限SBIT      

       打开/usr/bin 

一般绿色的都是拥有执行权限的
红色的都是属主拥有特殊权限的
蓝色的都是权限打满,是软连接的
黄色的都是属组拥有的特殊权限

特殊权限的一个使用方式:
普通用户-->执行-->passwd命令时。
1.由于passwd命令拥有suid特殊权限(在命令属主权限的执行位变成一个s),
2.那么在整个命令执行的过程中,会以命令的属主身份去运行该命令。 <-- root
xiaolei -->运行 passwd 命令 ---> 却查看到该命令是属主身份root在运行 --->相当于普通用户是依托root身份 --> 来达到变更 /etc/shadow 密码信息


特殊权限--14 (可不用却知)_第1张图片
Xnip2020-03-17_21-43-15.jpg

对于更换一个普通用户的 属主身份,来执行这个命令。得到的结果是:你可以去执行这个变更密码,但是你不是root,shadow这个文件,你没权限,所以就一直都改不成功


特殊权限--14 (可不用却知)_第2张图片
Xnip2020-03-17_21-49-51.jpg

总结:/etc/shadow 这个文本本身是谁都无法修改的,但是root除外。此时xiaolei执行passwd 通过 特殊权限 借助的是root身份运行该命令。所以最终是由root去更新了/etc/shadow 文件,完成的密码修改。

suid使用环境:
默认情况下,所有的普通用户,都无法查看/etc/shadow,有没有办法能够让所有的普通用户都能查看/etc/shadow

方式1: chmod 004  /etc/shadow
                    给文件增加一个普通用户查看的权限
方式2: 为cat命令赋予一个 suid权限即可
             两种添加方法
                chmod u+s /usr/bin/cat   
                chmod 4755  /usr/bin/cat 
             两种减去方法
                chmod u-s /usr/bin/cat   
                chmod 755  /usr/bin/cat

cat是实验总结:
给cat赋予了一个特殊权限,然后在访问每天权限的文件时候,使用特权,达到借用root的身份,完成查看。


特殊权限SGID: 组
表形式: 在文件属组权限上有显示一个s (红色标记)
s(有执行权限) S(没有执行权限)

和上边的属主是一个道理,只不过借助了属组的身份。来达到的普通用户的任务使用。

实现:
将目录设置为sgid后,如果在该目录下创建文件,都将与该目录的所属组保持一致。
使用sgid可以使得 “多个用户” 之间共享一个目录的所有文件变得简单。组里边的成员可以共享这个文件里边的内容,自由的修改和使用。

sgid 与组的-R 递归,是可以这样理解的,本文件里边的文件和目录都会变成当下组的名字,而数主则是谁创建的,就是谁的。

             两种添加方法
                chmod g+s     
                chmod 2755  
             两种减去方法
                chmod g-s 
                chmod 755    

特殊权限SBIT:
只针对目录:
目录一旦被赋予了粘滞位,除了 root 可以删除所有文件,普通用户对该目录就算拥有 w 权限,也只能删除自己建立的文件,而不能删除其他用户建立的文件。

[root@oldboy dtest]# ll -d /tmp/
drwxrwxrwt. 9 root root 202 3月 17 10:52 /tmp/

特殊权限--14 (可不用却知)_第3张图片
Xnip2020-03-17_23-05-46.jpg

总结:就是你就是目录本身有删除的权限,但是因为粘滞位的存在,就算你们是一个组里的。你也只能删除自己创建的,别人创建的,你不允许删除。当然你的别人也动不了,

             两种添加方法
                chmod o+t /usr/bin/cat   
                chmod 1757  /usr/bin/cat 
             两种减去方法
                chmod o-t  /usr/bin/cat    
                chmod 777  /usr/bin/cat  

chatrr
只有 root 用户可以使用,用来修改文件系统的权限属性,建立凌驾于 rwx 基础权限之上的授权。

chattr [+-=] [选项] 文件或目录名
#选项:
+ 增加权限
- 减少权限
= 等于某个权限
# a:让文件或目录仅可追加内容
# i:不得任意更动文件或目录

实验
特殊的属性:权限有关
1.我希望创建一个文件,不允许被删除。包括root都不行。
2.我希望这个文件只能往里面追加数据。

hattr [+-=] [选项] 文件或目录名
#选项:
+ 增加权限
- 减少权限
= 等于某个权限
# a:让文件或目录仅可追加内容


特殊权限--14 (可不用却知)_第4张图片
Xnip2020-03-17_23-29-02.jpg

总结:a属性一般作用于日志类文件,特别是 sudo 记录下来的日志 。(你删除不了,所以你的误操作我就能看到。)如果不想要,减去这个权限就行

i:不得任意更动文件或目录

特殊权限--14 (可不用却知)_第5张图片
Xnip2020-03-17_23-34-21.jpg

配置一个文件,不能改,不能追加,不能删除
使用场景:/ etc/passwd 放用户信息的地方
如果加了权限,不能做任何事,那么如果有人侵入了你的电脑,也添加不了用户。也是一种安全保护。


默认权限UMASK:表示要减掉的权限

默认系统规定的权限, 目录 777 文件 666

      问题:默认创建    普通用户  家目录   的权限,在哪个文件中控制的UMASK:
    1.默认创建的用户家目录为啥是 700,是哪个文件控制的UMASK   
[root@oldboy tmp]# vim /etc/login.defs
    UMASK           077     #创建用户时,设定的UMASK为077

    2.假设去创建一个用户那么如何计算这个家目录的权限呢?
        777 - 077 = 700
        [root@oldboy tmp]# ll -d /home/oldboy/
        drwx------. 2 oldboy oldboy 62 3月  17 11:33 /home/oldboy/

    3.如果我希望创建出来的目录权限是755,我该怎么做呢?
        777 - 755 = 022  (将/etc/login.defs 中UMASK设置为022,那么我们的目录是不是在创建初就为755了)
    [root@oldboy tmp]# ll -d /home/olgirl/
    drwxr-xr-x. 2 olgirl olgirl 62 3月  17 11:36 /home/olgirl/

问题:默认情况下 root用户创建的文件权限,和普通用户创建的文件权限是不一样的
通过输入umask这个指令,发现,root用户是0022 。而普通用户是0002.
对于root:默认的文件就是666-022=644 rw,只需要读写)
默认的目录就是777-022-755 rwx,打满

对于普用:默认的文件就是666-002=664 r 能读取就行
默认的目录就是777-002-775 rx 能读和进入就行

当一个用户登陆系统时,会去加载一些环境变量,来初始化我们的工作目录。
而默认的0022 和0002 就是在 /etc/profile 中

公式:
if [ $UID -gt 199 ] && [ "/usr/bin/id -gn" = "/usr/bin/id -un" ]; then
umask 002 就是普用
else
umask 022 是root
fi
root: 0 UID没有大于199,那么 UMASK 初始化为 022
oldxu: 1000 UID大于199,并且,组名称和用户名称一致,所以条件成立,那么就讲你的UMASK初始化为 002

 文件和目录的默认权限都是授UMASK控制,而UMASK是用户在登陆系统时,通过 /etc/profile 中的一个公式来进行的分别设定

你可能感兴趣的:(特殊权限--14 (可不用却知))