C語言中設定使用者識別碼的相關函式的簡單講解

2022-10-04 03:42:10 字數 1232 閱讀 2581

c語言setuid()函式:設定真實的使用者識別碼

標頭檔案:

#include 程式設計客棧nistd.h>

定義函式:

int setuid(uid_t uid);

函式說明:

setuid()用來重新設定執行目前程序的使用者識別碼. 不過, 要讓此函式有作用, 其有效的使用者識別碼必須為0(root). 在linux 下, 當root 使用setuid()來變換成其他使用者識別碼時, root 許可權會被拋棄, 完全轉換成該使用者身份, 也就是說, 該程序往後將不再具有可setuid()的權利, 如果只是向暫時拋棄root 許可權, 稍後想重新取回許可權, 則必須使用seteuid().

返回值:執行成功則返回0, 失敗則返回-1, 錯誤**存於errno.

附加說明:一般在編寫具 setuid root 的程式時, 為減少此類程式帶來的系統安全風險, 在使用完root 許可權後建議馬上執行setuid(getuid());來拋棄root 許可權. 此外, 程序uid 和euid 不一致時linux 系統將不會產生core dump.

c語言setreuid()函式:設定真實及有效的使用者識別碼

標頭檔案:

#include

定義函式:

int setreuid(uid_t ruid, uid_t euid);

函式程式設計客棧說明:setreuid()用來將引數ruid 設為目前程序的真實使用者識別碼, 將引數euid 設定為目前程序的有效使用者識別碼. 如果引數ruid 或euid 值為-1, 則對應的識別碼不會改變。

返回值:執行成功則返回0, 失敗則返回-1, 錯誤**存於errno.

c語言setfsuid()函式:設定檔案系統的使用者識別碼

標頭檔案:

#include

定義函式:

int setfsuid(uid_t fsuid);

函式說明:setfsuid()用來重新設定目前程序的檔案系統的使用者識別www.cppcns.com碼. 一般情況下, 檔案系統的使用者識別碼(fsuid)與有效的使用者識別碼(euid)是相同的. 如果是超級使用者呼叫此函式, 引數fsuid 可以為任何值, 否則引數fsuid 必須為real/effective/s**ed 的使用者識別碼之一.

返回值:執行成功則返回0, 失敗則返回-1, 錯誤**存於errno 附加說明此函式為 linux 特有

錯誤**:

eperm:許可權不夠, 無法完成設定.

本文位址: /ruanjian/c/130375.html

c 獲取機器唯一識別碼的方法記憶

在客戶端認證的過程中,我們總要獲取客戶機的唯一識別資訊,曾經以為mac位址是不會變的,但是現在各種改,特別是使用無線上網絡卡,mac位址插一次變一次,所以這樣使用mac就沒有什麼意義了,怎麼辦,又開始求助google,最後找到乙個折中的方案 通過獲取主機板 處理器 bios mac 顯示卡 硬碟等的...

C語言設定和取得socket狀態的相關函式用法

c語言setsockopt 函式 設定socket狀態 標頭檔案 include include 定義函式 int setsockopt int s,int level,int optname,const void optval,socklen toptlen 函式說明 setsockopt 用來設...

C語言中的setjmp和longjmp函式

c語言的setjmp 異常處理與構建協作式多工系統 int setjmp jmp buf envbuf 巨集函式setjmp 在緩衝區envbuf中儲存系統堆疊裡的內容,供longjmp 以後使用,setjmp 必須使用標頭檔案setjmp.h。呼叫setjmp 巨集時,返回值為0,然而longjm...