系统相关
首页 > 系统相关> > linux – 为什么setuid不能与mount一起工作?

linux – 为什么setuid不能与mount一起工作?

作者:互联网

文件上有一个setuid位.

user@host:~$ls -l /bin/mount
-rwsr-xr-x 1 root root 40152 May 26 19:31 /bin/mount

为什么操作系统需要root访问才能执行’mount’?

user@host:~$/bin/mount /dev/sdb1 /mnt
mount: only root can do that
user@host:~$sudo /bin/mount /dev/sdb1 /mnt
user@host:~$lsblk  | grep sdb

sdb      8:16   0  102M  0 disk
└─sdb1   8:17   0  101M  0 part /mnt

我的/ etc / fstab

# / was on /dev/sda1 during installation
UUID=026bb2d9-1c0c-4163-85a1-f83b2221eb34 /               ext4    errors=remount-ro 0       1

# swap was on /dev/sda5 during installation
UUID=aec6b039-13b1-4568-abb1-2be1f3429325 none            swap    sw              0       0

解决方法:

Unix具有真实有效的UID(以及GID)的概念.

运行setuid程序时,进程的有效ID将设置为文件的所有者.

因此,在mount的情况下,您具有root的有效ID.但您仍然拥有真实的用户ID.

诸如passwd或su或mount之类的程序可以检查真实ID以查看谁正在运行它并相应地采取不同的行动.对于passwd,这允许root用户更改另一个密码;因为它允许在不知道密码的情况下切换用户.

对于mount,它允许用户安装自己的文件系统(如果它们在/ etc / fstab中定义)并具有与之关联的用户属性

例如,在我的Debian fstab中,我有:

/dev/sr0        /media/cdrom0   udf,iso9660 user,noauto     0       0

这意味着非root用户可以运行mount / dev / sr0或mount / media / cdrom0,它将尝试安装CD / DVD.

这是安装程序本身内置的逻辑;它检查调用者的真实ID.

标签:setuid,linux,mount
来源: https://codeday.me/bug/20190814/1651442.html