2013-09-16 23 views
0

我使用OpenBSD的5.3作爲Parallels的來賓操作系統爲Mac全新安裝:爲什麼不在OpenBSD中設置SUID位將有效並保存的UID設置爲可執行文件所有者?

$ uname -a 
OpenBSD openbsd.localdomain 5.3 GENERIC#53 amd64 

令我驚訝的是,通過與它的SUID根位設置擁有的二進制文件,UID的運行彷彿SUID是沒有設置。也就是說,當UID 1000運行這樣的程序,該程序的啓動狀態:

<real_uid, effective_uid, saved_uid> = <1000, 1000, 1000> 
不狀態

<real_uid, effective_uid, saved_uid> = <1000, 0, 0> 

預期。

爲什麼會出現這種情況?

下面是關於如何我發現這個問題的細節:

我已經寫在不同的Unix系統評估setuid行爲的交互式C程序(編譯爲 setuid_min.bin)。該程序位於UID 1000主目錄的子目錄中,並且 sudo命令用於更改所有權和SUID;然後在程序運行和我進入 UID報告真實,有效,並保存過程中的UID:以上

$ sudo chown root:staff setuid_min.bin 
$ ls -l | grep 'setuid_min\.bin$' 
-rwxr-xr-x 1 root staff [...] setuid_min.bin 
$ sudo chmod a+s setuid_min.bin 
$ ls -l | grep 'setuid_min\.bin$' 
-rwsr-sr-x 1 root staff [...] setuid_min.bin 
$ ./setuid_min.bin 
uid 
1000 1000 1000 some_pid 
exit 
$ 

注意 some_pid的setuid_min.bin進程的PID 。該項目通過報告下面的shell命令的輸出報告的實際UID,有效UID,並保存UID:

ps -ao ruid,uid,svuid,pid | grep '[ ]my_pid$' 

其中 my_pid是PID由 GETPID()報道。我唯一能猜出爲什麼會出現這種情況的原因是,OpenBSD有一些基本的權限結構,它使用的是目錄的所有權/權限,其中 setuid_min.bin所在的目錄的所有權/權限,或者當沒有特權時,實際上並未改變所有權/ SUID位用戶使用 sudo更改文件權限。

回答

0

很可能您的二進制文件位於安裝爲「nosuid」的默認分區之一中。除非已知它包含suid二進制文件,否則安裝腳本創建的默認fstab將掛載一切nosuid。

相關問題