SUID权限简介

SUID简介:
1.只有可以执行的二进制程序文件才能设定SUID权限,非二进制文件设置SUID权限没任何意义.
2.命令执行者要对该程序文件拥有执行(x)权限.
3.命令执行者在执行该程序时获得该程序文件属主的身份.
4.SUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效

以passwd命令说明

1 [vampire@LAMP ~]$ whereis passwd
2 passwd: /usr/bin/passwd /etc/passwd /etc/passwd.OLD /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz

passwd是一个命令,即一个可执行二进制文件,可以使用这个命令来修改用户密码
由于用户密码是存储在/etc/shadow文件中,但是该文件权限是000,就是不允许任何人修改(root除外),
使用该命令能修改用户密码,是因为执行该命令的时候我们拥有了一个特殊权限,这个特殊权限让我们可以
修改/etc/shadow文件

查看passwd文件的详细信息

1 [vampire@LAMP ~]$ ll /usr/bin/passwd 
2 -rwsr-xr-x. 1 root root 25980 Feb 17  2012 /usr/bin/passwd  //可以看到该文件所属主权限标志位上是rws,文件属主是root,其他人具有执行权限(x),就是说当其他人执行该命令是会暂时获得文件属主权限,即root权限,而root是可以操作/etc/shadow文件的

查看shadow文件得权限

1 [vampire@LAMP ~]$ ll /etc/shadow
2 ---------- 1 root root 969 May 16 22:44 /etc/shadow
3 
4 [vampire@LAMP ~]$ cat /etc/shadow   
5 cat: /etc/shadow: Permission denied    //尝试查看shadow文件,没有权限,会发现使用vim,tail,head也一样没有权限

这样就相当于把shadow文件保护起来了,只有使用执行passwd命令修改密码那一刻才能修改shadow文件

给文件设定SUID权限

1 [vampire@LAMP vampire]$ touch test.file     //创建一个新文件
2 [vampire@LAMP vampire]$ ll
3 total 0
4 -rw-rw-r-- 1 vampire vampire 0 May 20 10:34 test.file
5 [vampire@LAMP vampire]$ chmod u+s test.file    //给文件添加SUID权限
6 [vampire@LAMP vampire]$ ll
7 total 0
8 -rwSrw-r-- 1 vampire vampire 0 May 20 10:34 test.file

上面给文件添加SUID权限貌似成功了,但是是错误的,正常的拥有SUID权限的文件中属主标志位第三位是s.
之所以出现S,是因为我们设置的文件之前就没有执行权限,test.file权限为664

1 [vampire@LAMP vampire]$ chmod 4775 test.file    //给文件赋予可执行权限,再设置SUID权限
2 [vampire@LAMP vampire]$ ll
3 total 0
4 -rwsrwxr-x 1 vampire vampire 0 May 20 10:34 test.file

取消文件SUID权限

1 [vampire@LAMP vampire]$ chmod 755 test.file
2 [vampire@LAMP vampire]$ ll
3 total 0
4 -rwxr-xr-x 1 vampire vampire 0 May 20 10:34 test.file

注:给文件赋予SUID权限之前,该文件一定要有可执行权限(x)
给文件赋予SUID权限的两种方式
chmod 4xxx test.file (后面xxx中任何一个有可执行权限即可)

chmod u+x test.file

原文地址:https://www.cnblogs.com/iaknehc/p/6881517.html