SetUID 学习笔记

到了大二下学期,我才深刻体会到学习计算机的险恶 …


题外话,Virtual Box和hyper-v的兼容性真的很垃圾
为了用Virtual Box跑学校给的垃圾虚拟平台,我们就必须用命令行关掉hyper-v

  1. 管理员身份打开cmd
  2. 输入命令:bcdedit /set hypervisorlaunchtype off
  3. 重启电脑

Linux操作系统之操作命令大全

Linux chmod命令用法


什么是Set-UID

Set-UID是Unix系统中的一个重要的安全机制。

计算机中的一些重要文件是拥有使用权限的,只有其owner才有权限对其进行查看和修改,一般情况下,普通的visitor是不能访问并修改该文件的。

我们在SEEDUbuntu中运行shell:

[03/02/21]seed@VM:~$ ls -l /etc/shadow
-rw-r----- 1 root shadow 1497 Aug 22  2017 /etc/shadow

[03/02/21]seed@VM:~$ cat /etc/shadow
cat: /etc/shadow: Permission denied

[03/02/21]seed@VM:~$ sudo cat /etc/shadow
root:$6$NrF46O1p$.vDnKEtVFC2bXslxkRuT4FcBqPpxLqW05IoECr0XKzEEO5wj8aU3GRHW2BaodUn4K3vgyEjwPspr/kqzAqtcu.:17400:0:99999:7:::
daemon:*:17212:0:99999:7:::
bin:*:17212:0:99999:7:::
...

现在我们有一个密码文件passwd,ta的owner是root,
但是passwd的属性中有一个Set-UID位,
一旦Set-UID位有效,visitor就可以披着root的外壳对passwd进行访问。
访问者的真实身份(Real UIDIdentity)还是visitor,但是却拥有了root的权限(Effective UID)。
普通程序在执行的时候,RUID=EUID,都等于运行程序的用户的权限;
如果程序的Set-UID位设置有效,RUID!=EUID,EUID等于该文件拥有者的权限。

[03/02/21]seed@VM:~$ which passwd
/usr/bin/passwd

[03/02/21]seed@VM:~$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 53128 Mar 29  2016 /usr/bin/passwd

解释一下-rwxr-xr-x的含义

这一串代码实际上是解释权限所属的,
在Linux 系统中权限是区分用户的,即用户、组用户、其他用户
第一位表示文件的类型,-代表文件,d代表目录,其他每个用户占三个字符,
这里-rwxr-xr-x对应如下关系:

文件类型用户权限组用户权限其他用户权限
-rwxr-xr-x

第一位:-代表文件,d代表目录。
用户、组用户、其他用户都为rwx形式,其中r表示读、w表示写、x表示可执行,-表示没有权限。
r只能出现在第一个位置、w只能出现在第二个位置、x只能出现在第三位。
如果我们将出现字符(可以是r、w、x)表示为1,出现-表示为0,
那么对应二进制如下,r - - = 100、- w - = 010、- - x = 001、即读=4、写=2、可执行=1。

可执行读+写读+可执行读+写+可执行
标识符r–-w-–xrx-r-xrwx
二进制100010001110101111
十进制421657

也就是说这里的数字简写了用户权限,我们也可以用数字反推权限。
比如数据6,我们转换为为二进制:110,转换为:rw-,即具有可读、可写权限。

现在我们已经明白了标题中的-rwxr-xr-x权限含义了,
用数字简写就是-755,这里还需要改写成0755,0可以简单理解成10进制标识。

如果该文件设置了Set-UID位,则用户的执行权限的x用s替代

[03/02/21]seed@VM:~$ cp /bin/cat ./mycat

[03/02/21]seed@VM:~$ ls -l mycat
-rwxr-xr-x 1 seed seed 51036 Mar  2 22:46 mycat

[03/02/21]seed@VM:~$ sudo chown root mycat

[03/02/21]seed@VM:~$ ls -l mycat
-rwxr-xr-x 1 root seed 51036 Mar  2 22:46 mycat

[03/02/21]seed@VM:~$ mycat /etc/shadow
mycat: /etc/shadow: Permission denied

[03/02/21]seed@VM:~$ sudo chmod 4755 mycat

[03/02/21]seed@VM:~$ ls -l mycat
-rwsr-xr-x 1 root seed 51036 Mar  2 22:46 mycat

[03/02/21]seed@VM:~$ mycat /etc/shadow
root:$6$NrF46O1p$.vDnKEtVFC2bXslxkRuT4FcBqPpxLqW05IoECr0XKzEEO5wj8aU3GRHW2BaodUn4K3vgyEjwPspr/kqzAqtcu.:17400:0:99999:7:::
daemon:*:17212:0:99999:7:::
bin:*:17212:0:99999:7:::
sys:*:17212:0:99999:7:::
...

su & sudo su

su是申请切换root用户,需要申请root用户密码。
有些Linux发行版,例如ubuntu,默认没有设置root用户的密码,所以需要我们先使用sudo passwd root设置root用户密码。

而sudo su是当前用户暂时申请root权限,所以输入的不是root用户密码,而是当前用户的密码。
sudo是用户申请管理员权限执行一个操作,而此处的操作就是变成管理员

sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。
这样不仅减少了root用户的登录和管理时间,同样也提高了安全性。
sudo不是对shell的一个代替,它是面向每个命令的。

ta的特性主要有这样几点:

  • sudo能够限制用户只在某台主机上运行某些命令。
  • sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器。
  • sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票(这个值可以在编译的时候改变)。之后的一段时间内(默认为5分钟,可在/etc/sudoers自定义),使用sudo不需要再次输入密码。
  • sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为0440。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值