有可能可能會出現一些情況,當它可能是值得不允許用戶執行任何二進制文件(我想這可能是反對特權升級攻擊對策之一)。但是在很多情況下,普通用戶能夠執行他們自己的二進制文件,那麼如果用戶自己編寫和編譯fdisk
或類似的東西呢?真的,你不想禁止用戶運行fdisk
。您只是想禁止fdisk
或任何其他程序以某種方式修改系統狀態。所以普通用戶真正可以執行fdisk
:
$ fdisk --help
Usage:
fdisk [options] <disk> change partition table
fdisk [options] -l [<disk>] list partition table(s)
...
什麼普通用戶實際上不能做的是執行受限操作:
$ fdisk /dev/sda
Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
fdisk: cannot open /dev/sda: Permission denied
所以fdisk
成功啓動,打印一些信息。然後它試圖打開原始磁盤設備/dev/sda
,那是真正受到權限限制的操作,所以fdisk
只是抱怨它無法做任何事情而退出。
雖然有些情況下您可能想要限制某些用戶的某些二進制文件的可執行性。當管理員或操作系統維護人員希望普通用戶能夠執行某些特權操作時(例如在/etc/fstab
中安裝某個特定用戶所允許的某個分區),他們會設置一些特殊的強化二進制文件,如mount
或sudo
設置用戶ID的許可:
$ ls -l /bin/mount /usr/bin/sudo
-rwsr-xr-x 1 root root 40152 May 27 02:31 /bin/mount
-rwsr-xr-x 1 root root 136808 Aug 17 16:20 /usr/bin/sudo
當執行這樣的二元,內核賦予它不是主叫用戶的用戶ID,但是,在這種情況下,UID 0(根)。由於普通用戶不能以這種方式設置二進制文件(root用戶和設置UID位集),因此理論上可能會限制這些二進制文件對某些特定組的可執行性(但在上述情況下,它們是世界可執行的並檢查權限我真的不知道,如果set-UID可執行文件的可執行性限制不能以某種方式規避,並且是否像某種方法被廣泛使用那樣。
和一個額外注:在fdisk
您的系統上時,它被安裝到/usr/sbin
目錄,可能會或可能不會在普通用戶的PATH變量,所以fdisk
可能會或可能不會被普通用戶執行通過在命令提示符處輸入fdisk
,但它不是真正的限制(可以簡單地在命令行中指定可執行文件的完整路徑)。