Skip to Content
LINUX系統程式設計 第二版
book

LINUX系統程式設計 第二版

by Robert Love
December 2013
Intermediate to advanced
496 pages
8h 57m
Chinese
GoTop Information, Inc.
Content preview from LINUX系統程式設計 第二版
176
|
第五章
讓不具 root 身份的行程得以來回切換。真實用戶識別碼就是有效用戶識別碼被設定成實
際執行程式的用戶,而暫存用戶識別碼就是在 exec 進行期間,一個 suid 二元檔導致有
效用戶識別碼變更之前的有效用戶識別碼。
變更真實或暫存的用戶或群組識別碼
下面的系統呼叫可分別用於設定用戶與群組識別碼:
#include <sys/types.h>
#include <unistd.h>
int setuid (uid_t uid);
int setgid (gid_t gid);
setuid()
可用於設定當前行程的有效用戶識別碼。如果該行程目前的有效用戶識別碼為
0root),則也會設定真實及暫存用戶識別碼。root 用戶可以替
uid
提供任何值,因此
可以把這三個用戶識別碼的值設定成
uid
。一個非 root 的用戶只能替
uid
提供真實或暫
存的用戶識別碼。換言之,一個非 root 的用戶只可以把有效用戶識別碼設定成這兩個值
其中之一。
執行成功時,
setuid()
會傳回
0
。發生錯誤時,此呼叫會傳回
-1
並把
errno
設定成下面
其中一個值:
EAGAIN
uid
與真實用戶識別碼不同,而且將真實用戶識別碼設定成
uid
,會使得用戶逾越其
NPROC
rlimit(用於指定一個用戶所能擁有之行程的數目)。
EPERM
用戶不是
root
,而
uid
既不是有效用戶識別碼也不是暫存用戶識別碼。
前面的討論同樣適用於群組—僅需要把
setuid()
代換成
setgid()
,以及把
uid
代換成
gid
變更有效的用戶或群組識別碼 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

優雅的SciPy|Python科學研究的美學

優雅的SciPy|Python科學研究的美學

Juan Nunez-Iglesias, Stéfan van der Walt, Harriet Dashnow
C++语言导学(原书第2版)

C++语言导学(原书第2版)

本贾尼 斯特劳斯特鲁普

Publisher Resources

ISBN: 9789862769812