2016-11-02 26 views
-1

操作系統如何阻止普通用戶執行像fdisk和umount這樣的命令,儘管這些命令對每個人都有執行權限?如何控制特權命令?

[[email protected] ~]# ls -la $(which umount) 
-rwsr-xr-x. 1 root root 31960 Aug 21 2015 /usr/bin/umount 
[[email protected] ~]# ls -la $(which fdisk) 
-rwxr-xr-x. 1 root root 182472 Aug 21 2015 /usr/sbin/fdisk 

回答

0

有可能可能會出現一些情況,當它可能是值得不允許用戶執行任何二進制文件(我想這可能是反對特權升級攻擊對策之一)。但是在很多情況下,普通用戶能夠執行他們自己的二進制文件,那麼如果用戶自己編寫和編譯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中安裝某個特定用戶所允許的某個分區),他們會設置一些特殊的強化二進制文件,如mountsudo設置用戶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,但它不是真正的限制(可以簡單地在命令行中指定可執行文件的完整路徑)。