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.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

深入理解運算原理|從簡單的機器到無所不能的程式

深入理解運算原理|從簡單的機器到無所不能的程式

Tom Stuart
管理Kubernetes

管理Kubernetes

Brendan Burns, Craig Tracey
算法技术手册(原书第2 版)

算法技术手册(原书第2 版)

George T.Heineman, Gary Pollice, Stanley Selkow

Publisher Resources

ISBN: 9789862769812