运维开发网

linux文件的特殊权限总结与实验

运维开发网 https://www.qedev.com 2020-03-19 12:09 出处:51CTO 作者:liu008qing
本文简要的总结了linux的特殊权限,SUID、SGID、SBIT的作用与实验,并进行了简单测试。

Linux中,有一个安全上下文的概念,一个进程(运行的程序)能否访问某个文件,取决于发起进程的用户对被操作文件存在什么权限。

A. 如果进程的发起者是该被访问文件的属主,则以文件属主的权限来访问

B. 否则,如果进程的发起者是属于该被访问文件的属组中的用户,则以文件属组的权限来访问

C. 否则,以其他用户来访问此文件

而在这个权限之外,还存在着三种特殊权限

SUID:当对某一个程序文件设置了SUID置位,则该进程(程序)访问系统上的文件时,以程序的属主的身份来访问该文件,而不是执行程序的用户的权限来访问文件。

SGID:当某目录的属组对目录有写权限,并且设置了SGID置位时,属于属组的这些用户在这个目录下创建文件时,被创建的文件的属组默认会变成该目录的属组,而不是创建文件的用户的基本组。

SBIT:当对某目录设置了SBIT置位时,用户只能删除自己在该目录下创建的文件,而不能删除其他用户创建的文件,哪怕用户对目录存在写权限。

操作:

1. SUID:   chmod u+s

2. SGID:  chmod g+s

3. SBIT: chmod o+t

实验:

一、 SUID实验

将/bin/cat复制到/test目录,将/test/bin程序进行SUID置位。让一个普通使用该程序来查看/etc/shadow文件。然后再用系统自带的/bin/cat来查看该文件。

#  将/bin/cat复制到/test目录

[root@liuqing test]# cp /bin/cat /test/

[root@liuqing test]# ll /test

总用量 60

-rwxr-xr-x. 1 root root 54080 11月 21 17:04 cat

#对/test/cat文件进行SUID置位,该文件的属主属组都是root

[root@liuqing test]# chmod u+s /test/cat

[root@liuqing test]# ll

总用量 60

-rwsr-xr-x. 1 root root 54080 11月 21 17:04 cat

-rw-r-----. 1 lyf  lyf     14 11月 21 16:15 file1.txt

#切换到普通用户liuqing

[root@liuqing test]# su - liuqing

上一次登录:四 11月 21 16:05:54 CST 2019pts/1 上

[liuqing@liuqing ~]$

#普通用户liuqing,使用/test/cat可以查看/etc/shadow

[liuqing@liuqing ~]$ /test/cat /etc/shadow

root:$6$gdIxmcOy$JSDVjR0tSdQfVTDrukonWIfRLdDIut63ZYiucsTmj8TPJ0Sq/wZduJhWgSUidlHeW6pmISq.B7Vx4OlGX1P1p1:18185:0:99999:7:::

#普通用户使用系统自带的/bin/cat,不能查看/etc/shadow

[liuqing@liuqing ~]$ ll /bin/cat

-rwxr-xr-x. 1 root root 54080 8月  20 14:25 /bin/cat

[liuqing@liuqing ~]$ cat /etc/shadow

cat: /etc/shadow: 权限不够

二、 SGID实验

系统上有两个用户,gentoo和fedora,它们的附加组为mygrp,现在对/test目录进行SGID置位,当我们使用这两个用户在/test目录下创建文件时,文件的属组会自动变成mygrp。

#查看gentoo和fedora是否存在

[root@liuqing test]# id gentoo

uid=4007(gentoo) gid=4007(gentoo) 组=4007(gentoo),5000(magedu)

[root@liuqing test]# id fedora

uid=4008(fedora) gid=4008(fedora) 组=4008(fedora),5000(magedu)

# 创建组mygrp

[root@liuqing test]# groupadd mygrp

# 将用户gentoo和fedora添加附加组mygrp

[root@liuqing test]# usermod -a -G mygrp gentoo

[root@liuqing test]# usermod -a -G mygrp fedora

[root@liuqing test]# id gentoo

uid=4007(gentoo) gid=4007(gentoo) 组=4007(gentoo),5000(magedu),5003(mygrp)

[root@liuqing test]# id fedora

uid=4008(fedora) gid=4008(fedora) 组=4008(fedora),5000(magedu),5003(mygrp)

# 修改/test的属组为mygrp,修改属组权限为rwx,对/test进行SGID置位

[root@liuqing /]# chown :mygrp /test

[root@liuqing /]# chmod g+w /test

[root@liuqing /]# chmod g+s /test

[root@liuqing /]# ls -ld  /test

drwxrwsr-x. 2 root mygrp 34 11月 21 17:23 /test

# 切换用户到gentoo

[root@liuqing /]# su - gentoo

上一次登录:四 11月 21 17:22:21 CST 2019pts/0 上

[gentoo@liuqing ~]$

# gentoo用户在/test目录下创建了gentoo.txt文件,查看文件属性,该文件属组为mygrp

[gentoo@liuqing ~]$ touch /test/gentoo.txt

[gentoo@liuqing ~]$ ll /test

总用量 60

-rw-rw-r--. 1 gentoo mygrp     0 11月 21 17:25 gentoo.txt

三、 SBIT实验

/test目录的属组是mygrp,对这个目录,进行了SGID置位,mygrp组对目录有rwx权限。那么这个目录下,附加组是mygrp的用户在目录中创建的文件的属组是mygrp,这时,附加组是mygrp的这些用户可以在目录中创建、修改删除文件,而这样的话,这些用户也可以删除别的用户创建的文件,为了不让别人删除某用户创建的文件,则可以对目录进行stick,stick之后,只有用户自己和管理员可以删除该目录下该用户自己创建的文件。

# 对目录进行stick置位,查看权限,发现在o的权限位,有一个t

[root@liuqing test]# chmod o+t /test

[root@liuqing test]# ls -ld /test

drwxrwsr-t. 2 root mygrp 52 11月 21 17:25 /test

#切换到fedora用户,创建一个fedora.txt

[root@liuqing test]# su  - fedora

[fedora@liuqing ~]$ touch /test/fedora.txt

[fedora@liuqing ~]$ echo "How are you?"  >> /test/fedora.txt

#查看目录下的文件,对于gentoo.txt ,它的权限是属组有rw。

[fedora@liuqing ~]$ ll /test

-rwsr-xr-x. 1 root   root  54080 11月 21 17:04 cat

-rw-rw-r--. 1 fedora mygrp    13 11月 22 08:45 fedora.txt

-rw-rw-r--. 1 gentoo mygrp     0 11月 21 17:25 gentoo.txt

#fedora用户可以编辑gentoo.txt这个文件

[fedora@liuqing ~]$ echo  "New line"  >> /test/gentoo.txt

[fedora@liuqing ~]$

[fedora@liuqing ~]$

[fedora@liuqing ~]$ cat /test/gentoo.txt

New line

#由于进行了SBIT置位,fedora用户不能删除gentoo.txt这个文件,因为这个文件不是fedora创建的。

[fedora@liuqing ~]$ rm /test/gentoo.txt

rm: 无法删除"/test/gentoo.txt": 不允许的操作

0

精彩评论

暂无评论...
验证码 换一张
取 消