setuid bit疑問 - Linux

Thomas avatar
By Thomas
at 2019-02-05T20:37

Table of Contents


我有兩個用戶tenghaooo和user1

首先用戶tenghaooo在自家目錄新創一個文字檔file
並將其權限改為640
-rw-r----- 1 tenghaooo tenghaooo 9 Feb 5 19:45 file


然後再編譯一個C檔 test.c,源碼如下
#include <stdlib.h>

int main(void) {
system("/bin/cat file");
return 0;
}

編譯後的a.out改其權限為4755
-rwsr-xr-x 1 tenghaooo tenghaooo 8304 Feb 5 20:04 a.out


最後切換用戶成user1,到tenghaooo家目錄裡執行a.out
結果無法成功看見file內容
/bin/cat: file: Permission denied


我以為由於a.out setuid bit的緣故,當user1執行a.out時,權限會變成tenghaooo
進而能夠看見file內容
但似乎不是如此


希望各位大大解說一下setuid bit的運作方式
謝謝,新年快樂

--
Tags: Linux

All Comments

Bennie avatar
By Bennie
at 2019-02-07T20:42
有些 shell 在啟動時會主動把 setuid bit 拿掉以免意外
Margaret avatar
By Margaret
at 2019-02-09T03:44
可以試試看不要用 system 以避開 shell
Sierra Rose avatar
By Sierra Rose
at 2019-02-13T20:09
若是還要用 system(), 一般土炮方式 setuid(0) 補上
Joe avatar
By Joe
at 2019-02-17T14:18
setreuid()
Oscar avatar
By Oscar
at 2019-02-18T15:19
三樓方法也許可以硬解,但是不太安全會變成root...
Andy avatar
By Andy
at 2019-02-20T05:09
抱歉因為我測試是 chown root 方式達成,所以要改改
Hedda avatar
By Hedda
at 2019-02-25T04:47
不用 system() 是比較單純的

docker容器內的NIS該如何讓其他Host連到

Tristan Cohan avatar
By Tristan Cohan
at 2019-02-05T17:03
※ 引述《ShenJing (ShenJing)》之銘言: : 大家好,不好意思又來發問, : 想請問若想在 docker container 中架設 NIS Server, : 該如何讓其他台主機連上(ypbind)呢? : 我先描述目前環境、嘗試過的方法、卡住的地方: : ---目前設備--- : 總共2 ...

最近網路上找到能正常玩惡靈古堡2重製版的方法

Yedda avatar
By Yedda
at 2019-01-31T12:18
這篇幫自己備份用,以免未來自己忘記怎麼做。 以下方法是使用 Valve 的 Proton3.16-6 BETA 來達成的。 發行版是以 Ubuntu 18.04.1 為例 --------------------------------------------------------------------- ...

透過VPN登入ssh

Isabella avatar
By Isabella
at 2019-01-29T21:01
最近在IP分享器上弄了openVPN, 從手機連上VPN後, 可以登入FreeBSD的ssh, 但是不能登入Debian的ssh, 請問Debian的sshd_config需要修改哪個環節, 才可以讓Debian可以允許VPN端登入? -- 孔明受命造箭,諧魯肅登船進發,當夜五更時候,船已近曹操水寨。 孔明 ...

docker容器內的NIS該如何讓其他Host連到

Jack avatar
By Jack
at 2019-01-29T20:06
大家好,不好意思又來發問, 想請問若想在 docker container 中架設 NIS Server, 該如何讓其他台主機連上(ypbind)呢? 我先描述目前環境、嘗試過的方法、卡住的地方: ---目前設備--- 總共2台實體主機,其中1台為 Docker host(開個container架 ...

檔案名稱後面有*及@

Irma avatar
By Irma
at 2019-01-29T10:05
小弟在Windows下使用zsh及fish shell 下了 % cat /etc/shells後顯示以下shell # /etc/shells: valid login shells /bin/sh /bin/bash /bin/rbash /bin/dash /usr/bin/tmux /usr/bi ...