Linux
為什麼 setuid 不能與 mount 一起使用?
文件上有一個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
. 但是你仍然有一個真實的IDuser
。諸如
passwd
orsu
之類的程序mount
可以檢查真實 ID 以查看誰在執行它並相應地採取不同的行動。為此passwd
,root
使用者可以更改他人的密碼;因為su
它允許在不知道密碼的情況下切換使用者。因為
mount
它允許使用者掛載他們自己的文件系統*,如果*它們被定義/etc/fstab
並具有user
與之關聯的屬性例如,在我的 Debian 中,
fstab
我有:/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0
這意味著非 root 使用者可以執行
mount /dev/sr0
或mount /media/cdrom0
嘗試安裝 CD/DVD。
mount
這是程序本身內置的邏輯;它檢查來電者的真實ID。