Linux

為什麼 setuid 不能與 mount 一起使用?

  • August 4, 2016

文件上有一個setuid位。

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

為什麼作業系統需要 root 訪問權限才能執行“掛載”?

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您的有效ID 為root. 但是你仍然有一個真實的ID user

諸如passwdorsu之類的程序mount可以檢查真實 ID 以查看誰在執行它並相應地採取不同的行動。為此passwdroot使用者可以更改他人的密碼;因為su它允許在不知道密碼的情況下切換使用者。

因為mount它允許使用者掛載他們自己的文件系統*,如果*它們被定義/etc/fstab 具有user與之關聯的屬性

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

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

這意味著非 root 使用者可以執行mount /dev/sr0mount /media/cdrom0嘗試安裝 CD/DVD。

mount這是程序本身內置的邏輯;它檢查來電者的真實ID。

引用自:https://unix.stackexchange.com/questions/301247