2020-03-17特殊权限

特殊权限有三个

一,SUID

suid使用:

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

方式1: chmod 004  /etc/shadow

方式2: 为cat命令赋予一个 suid权限即可


结论:

当为cat命令赋予了特殊权限后,此时所有的普通用户通过cat去查看文件时,其实都是通过cat的属主身份查看的该文件

oldxue --> cat  ---> /etc/shadow

由于cat有suid

cat的属主又是root

转换的结果

root --> cat  --->/etc/shadow  -->结果 -->输出到--->oldxue ---> bash窗口了

二,SGID

oldxue用户-->执行-->passwd命令时。

1.由于passwd命令拥有SGID特殊权限 (在命令属组权限位有一个s),

2.那么在整个命令执行的过程中,会以命令的  “属组”  身份去运行该命令。  <-- root组

oldxu --> passwd  ---> 该命令属组身份 root 在运行 ---> 依托root组 身份  --> 变更 /etc/shadow 密码信息

演示如下

(1)建立测试目录


(2)给测试的目录赋予SGID权限,检查SGID权限是否生效


(3)给测试的目录赋予777权限,让普通用户可以写


(4)切换成普通用户lamp,并进入该目录


(5)普通用户创建测试文件,检查文件的信息


SGID作用:使用sgid可以使得多个用户之间共享一个目录的所有文件变得简单。

三,SBIT

针对的是目录:

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


四,特殊的属性(权限有关)

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

chattr [+-=] [选项] 文件或目录名

#选项:

+ 增加权限

- 减少权限

= 等于某个权限

# a:让文件或目录仅可追加内容

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

示例一:chattr+a

#1.配置一个文件,让其只能追加内容,不允许手动修改,也不允许删除 ( sudo -->日志-->设置为只能追加,不能修改,不能删除 )


#2.可以追加内容


#3.不能删除


#4.如果想删除特殊属性,需要使用root身份,先取消属性,然后删除

示例二:chattr

#1.配置一个文件,不能改,不能追加,不能删除。 ( /etc/passwd 可能不需要删除、更改、追加。 )


#2.赋予权限


#3.验证权限


五,默认权限UMASK

1.为什么系统中默认创建的文件权限是 644 目录是 755

2.为什么默认创建一个普通用户,他的家目录权限是 700

原因:

默认系统规定的权限, 目录 777  文件 666  那么为什么创建出来的文件和目录都不是777 也不是 666呢?

由于UMASK控制了, 比如UMASK 设置为  0022

那么最终创建出来的文件和目录分别就是 

目录: 755

文件: 644

----------------UMASK表示要减掉的权限-------------------------------

目录: 777 - 022  = 755 最终创建出来的目录权限

文件: 666 - 022  = 644 最终创建出来的文件权限

1.默认创建普通用户家目录的权限,在哪个文件中控制的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/

2.默认情况下 root用户创建的文件权限,和普通用户创建的文件权限是不一样的?为什么?

那么他们的UMASK又是在哪个文件中控制的呢?

root创建的文件,默认是644

[root@oldboy tmp]# ll root_file

-rw-r--r--. 1 root root 0 3月  17 11:39 root_file

普通用户创建的文件,默认是664

[oldxu@oldboy tmp]$ ll

-rw-rw-r--. 1 oldxu oldxu 0 Mar 17 11:39 oldxu_file

?????

root执行 666 - 022 = 644

[root@oldboy tmp]# umask

0022

普通用户执行 666 - 002 =664

[oldxu@oldboy tmp]$ umask

0002

当一个用户登陆系统时,会去加载一些环境变量,来初始化我们的工作目录。

/etc/profile    <--umask就在这里面给控制了????

#通过查看/etc/profile发现了如下公式:

----------------------------------------------------------------------------------------------

if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then

  umask 002

else

    umask 022

fi

----------------------------------------------------------------------------------------------

root:  0  既然你的UID没有大于199,那么就将你的 UMASK 初始化为 022

oldxu:  1000 UID大于199,并且,组名称和用户名称一致,所以条件成立,那么就讲你的UMASK初始化为  002

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

这里的UMASK可以改,但是我们基本不动他。(这是系统默认的机制,了解就可以,不要动!!!!!!!!!!!)

UMASK扩展:如何去临时修改UMASK,来验证我们的权限的说法:

#1.假设umask值为:022(所有位为偶数)

#文件的起始权限值

6 6 6  -  0 2 2  = 6 4 4

7 7 7  -  0 2 2 =  7 5 5

#2.假设umask值为:045(其他用户组位为奇数)

#计算出来的权限。由于umask的最后一位数字是5,所以,在其他用户组位再加1。

6 6 6  -  0 4 5 = 6 2 1  + 1  = 622

7 7 7  -  0 4 5 = 7 3 2

#umask所有位全为偶数时

# umask 044

# mkdir d044  目录权限为 777 - 044 = 733

# touch f044  文件权限为 666 - 044 = 622

#umask部分位为奇数时

# umask 023

# mkdir d023  目录权限为777 - 023 = 754

# touch f023  文件权限为666 - 023 = 643 + 001 = 644

#umask部分位为奇数时

# umask 032

# mkdir d032  目录权限为777 - 032 = 745

# touch f032  文件权限为666 - 032 = 634 + 010 = 644

#umask值的所有位为奇数时

# umask 035

# mkdir d035  目录权限为777 - 035 = 742

# touch f035  文件权限为666 - 035 = 631 + 011  = 642


你可能感兴趣的:(2020-03-17特殊权限)