linux程序的有效使用者ID

2022-08-28 23:09:45 字數 1372 閱讀 8253

程序的有效使用者id用於檔案訪問時的許可權檢查。通常,有效使用者id等於實際使用者id(也就是你登入是的使用者id),有效組id等於實際組id。

我們知道每個檔案針對不同的user有不同的讀、寫、執行許可權。當執行乙個程式檔案時,程序的有效使用者id通常就是實際使用者id。但是可以在檔案模式字(st_mode)中設定乙個特殊標誌,其含義是「當執行此檔案時,將程序的有效使用者id設定為檔案所有者的使用者id」,這樣程序就用了該檔案所有者對該檔案的許可權了。例如,unix系統程式passwd允許任一使用者改變其口令,該程式是乙個設定使用者id程式。因為該程式應能夠將使用者的新口令寫入口令檔案中,而只有root才具有對該檔案的寫許可權。

#設定了st_uid之後,所有者的執行位顯示's'

-rwsr-xr-x 1 root root 51224 4月 21 2015 /usr/bin/passwd

為了驗證前面所講的,我寫了個小程式。

首先,我以root許可權新建了乙個檔案,root_file.lua

#! /usr/bin/lua 

print("hello world")

然後,再以root許可權寫個程式(write_command)來改變這個.lua檔案

#includeint main()

fputs("print(\"i am root\")\n", fp);

fclose(fp);

return 0;

}

如果我們以普通使用者的身份來執行這個程式,則會報錯:

wuman@wuman-pc:~/apue$ ll write_command 

-rwxr-xr-x 1 root root 8720 11月 26 17:51 write_command

wuman@wuman-pc:~/apue$ ./write_command

open file error

最後,我們再用chmod命令來設定它的使用者id

wuman@wuman-pc:~/apue$ sudo chmod u+s write_command 

wuman@wuman-pc:~/apue$ ll write_command

-rwsr-xr-x 1 root root 8720 11月 26 17:51 write_command

wuman@wuman-pc:~/apue$ ./write_command

此時我們的root_file.lua已經被更新了

#! /usr/bin/lua 

print("hello world")

print("i am root")

有效使用者ID 實際使用者ID

實際使用者id,有效使用者id和設定使用者id 看unix相關的書時經常能遇到這幾個概念,但一直沒有好好去理清這幾個概念,以致對這幾個概念一直一知半解。今天好好區分了一下這幾個概念並總結如下。說白了這幾個uid引出都是為了系統的許可權管理。下面分別用ruid,euid,suid來表示實際使用者id,...

Linux程序的實際使用者ID和有效使用者ID

本人對unix下的程序的實際使用者id和有效使用者id一直都比較迷惑,沒有完全搞清楚。最近溫習apue 高階unix環境程式設計 終於對這兩個概念有了乙個清晰的認識,看來經典著作絕對需要溫習多遍,才能領略其中的奧秘。在unix程序中涉及多個使用者id和使用者組id,包括如下 1 實際使用者id和實際...

Linux程序的實際使用者ID和有效使用者ID

在unix程序中涉及多個使用者id和使用者組id,包括如下 1 實際使用者id和實際使用者組id 標識我是誰。也就是登入使用者的uid和gid,比如我的linux以simon登入,在linux執行的所有的命令的實際使用者id都是simon的uid,實際使用者組id都是simon的gid 可以用id命...