国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区

掃一掃
關(guān)注微信公眾號(hào)

solaris下究竟如何使用setuid/seteuid/setreuid
2008-09-12   51CTO

Solaris下究竟如何使用setuid/seteuid/setreuid
Q: 我被setuid/seteuid/setreuid搞瘋了,到底怎么使用它們?
A: 下面是Solaris 7的setuid(2)手冊(cè)頁(yè)
系統(tǒng)調(diào)用 setuid(2)
名字
setuid、setegid、seteuid、setgid - 設(shè)置UID和GID
摘要

#include 
#include
int setuid ( uid_t uid );
int seteuid ( uid_t euid );
int setgid ( gid_t gid );
int setegid ( gid_t egid );
描述
seteuid()只設(shè)置EUID。如果當(dāng)前EUID為0,形參euid任意指定。否則
形參euid應(yīng)該是RUID、EUID、SUID之一。無(wú)論如何,最終只影響當(dāng)前
EUID。
setegid()只設(shè)置EGID。如果當(dāng)前EUID為0,形參egid任意指定。否則
形參egid應(yīng)該是RGID、EGID、SGID之一。無(wú)論如何,最終只影響當(dāng)前
EGID。
登錄時(shí),RUID、EUID、SUID設(shè)置成登錄ID。
進(jìn)程調(diào)用exec(2)執(zhí)行一個(gè)程序文件,考慮兩種情況:
a. 程序文件set-user-id,則相應(yīng)進(jìn)程EUID、SUID被設(shè)置成這個(gè)程序
文件的屬主ID。
程序文件set-group-id,則相應(yīng)進(jìn)程EGID、SGID被設(shè)置成這個(gè)程
序文件的屬組ID。
b. 程序文件沒(méi)有set-user-id,則相應(yīng)進(jìn)程EUID、SUID不變。
程序文件沒(méi)有set-group-id,則相應(yīng)進(jìn)程EGID、SGID不變。
如果當(dāng)前EUID為0,任意調(diào)用setuid()同時(shí)設(shè)置RUID、EUID、SUID。
如果當(dāng)前EUID為0,任意調(diào)用setgid()同時(shí)設(shè)置RGID、EGID、SGID。
如果當(dāng)前EUID不為0,形參uid等于RUID或者SUID,調(diào)用setuid()后當(dāng)
前EUID被設(shè)置成形參uid,RUID、SUID不受影響。
如果當(dāng)前EUID不為0,形參gid等于RGID或者SGID,調(diào)用setgid()后當(dāng)
前EGID被設(shè)置成形參gid,RGID、SGID不受影響。
返回值
0 成功
-1 失敗,errno被設(shè)置
錯(cuò)誤值
EINVAL 形參uid、gid等不在合法范圍內(nèi)
EPERM 當(dāng)前EUID不為0,形參指定不符合前面描述
屬性
___________________________________________________________ 
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
| ____________________________|_____________________________|
| MT-Level | setuid() and setgid() and|
| | Async-Signal-Safe |
|_____________________________|_____________________________|

參看
intro(2)、exec(2)、getgroups(2)、getuid(2)、attributes(5)
stat(5)
A: 下面是Solaris 7的setreuid(2)手冊(cè)頁(yè)
系統(tǒng)調(diào)用 setreuid(2)
名字
setreuid - 設(shè)置RUID、EUID
摘要
#include 
int setreuid ( uid_t ruid, uid_t euid );
描述
setreuid()設(shè)置RUID、EUID,最終可能導(dǎo)致SUID改變。
如果形參ruid為-1,RUID不變。如果形參euid為-1,EUID不變。形參
ruid、euid可以不同。
如果EUID為0,形參ruid、euid可以是任意合法值。
如果EUID不為0,形參ruid可以等于當(dāng)前RUID、當(dāng)前EUID,形參euid
可以等于當(dāng)前RUID、當(dāng)前EUID、當(dāng)前SUID。
兩種情況下,如果RUID被成功修改(形參ruid不為-1),或者EUID被成
功修改(形參euid不為-1)并且不等于最終RUID,則最終SUID被設(shè)置成
最終EUID。
返回值
0 成功
-1 失敗,errno被設(shè)置
錯(cuò)誤值
EINVAL 形參ruid、euid等不在合法范圍內(nèi)。
/usr/include/limits.h中定義了合法范圍
[0, 2147483647(UID_MAX)]。
EPERM 當(dāng)前EUID不為0,形參指定不符合前面描述。
用法
一個(gè)set-user-id進(jìn)程調(diào)用setreuid()修改當(dāng)前EUID成當(dāng)前RUID后,
依然可以調(diào)用setreuid()修改當(dāng)前EUID成當(dāng)前SUID
參看
exec(2)、getuid(2)、setregid(2)、setuid(2)
D: 小四
從Solaris 2.6/7源碼中可以看到,由于SUID的存在,存在很多安全隱患。
對(duì)于一個(gè)setuid-to-root的程序,如果需要永久放棄特權(quán),應(yīng)該在當(dāng)前EUID為0的時(shí)
候調(diào)用setuid( not root )放棄特權(quán)。或者調(diào)用setreuid( not root, not root )放
棄特權(quán)。只有這兩種正確辦法,否則始終有機(jī)會(huì)重獲特權(quán)。
假設(shè)當(dāng)前ruid == 500、euid == 0、suid == 0,
setreuid( -1, 500 ); <-- 臨時(shí)放棄特權(quán) ruid == 500、euid == 500、suid == 0
setreuid( -1, 0 ); <-- 恢復(fù)特權(quán) ruid == 500、euid == 0、suid == 0
setuid( 500 ); <-- 永久放棄特權(quán) ruid == euid == suid == 500
某些系統(tǒng)可能不支持SUID,假設(shè)當(dāng)前ruid == 500、euid == 0,
setuid( 0 ); <-- 現(xiàn)在ruid == euid == 0
setreuid( -1, 500 ); <-- 現(xiàn)在ruid == 0、euid == 500
seteuid( 0 ); <-- 現(xiàn)在ruid == euid == 0
顯然在某些shellcode編寫(xiě)過(guò)程中,應(yīng)該是這個(gè)調(diào)用順序成功幾率最大:
seteuid( 0 );
setuid( 0 );
下面這個(gè)程序演示如何調(diào)用setreuid()、setregid()永久放棄setuid、setgid特權(quán)
--------------------------------------------------------------------------
/* gcc -Wall -O3 -o ugtest ugtest.c */ 
#include
#include
#include
#include
int main ( int argc, char * argv[] )
{
uid_t temp_ruid, temp_euid, orig_ruid, orig_suid;
gid_t temp_rgid, temp_egid, orig_rgid, orig_sgid;
orig_ruid = temp_ruid = getuid();
orig_suid = temp_euid = geteuid();
orig_rgid = temp_rgid = getgid();
orig_sgid = temp_egid = getegid();
printf( "ruid = %d euid = %d suid = %dn", ( int )temp_ruid,
( int )temp_euid, ( int )orig_suid );
printf( "rgid = %d egid = %d sgid = %dn", ( int )temp_rgid,
( int )temp_egid, ( int )orig_sgid );
if ( setregid( orig_rgid, orig_rgid ) < 0 )
{
perror( "Faint setregid" );
}
if ( setreuid( orig_ruid, orig_ruid ) < 0 )
{
perror( "Faint setreuid" );
}
temp_ruid = getuid();
temp_euid = geteuid();
temp_rgid = getgid();
temp_egid = getegid();
printf( "ruid = %d euid = %dn", ( int )temp_ruid, ( int )temp_euid );
printf( "rgid = %d egid = %dn", ( int )temp_rgid, ( int )temp_egid );
if ( setegid( orig_sgid ) < 0 )
{
perror( "I see setegid" );
}
if ( seteuid( orig_suid ) < 0 )
{
perror( "I see seteuid" );
}
return( EXIT_SUCCESS );
} /* end of main */
--------------------------------------------------------------------------
[scz@ /export/home/scz/src]> ls -l ./ugtest
-rwsr-sr-x 1 warning3 root 5416 6月 7 15:29 ./ugtest*
[scz@ /export/home/scz/src]> ./ugtest
ruid = 500 euid = 501 suid = 501 <-- setuid-to-
rgid = 100 egid = 0 sgid = 0 <-- setgid-to-root
ruid = 500 euid = 500 <-- 即使整個(gè)過(guò)程中沒(méi)有EUID為0的機(jī)會(huì),
rgid = 100 egid = 100 還是成功地永久釋放了特權(quán)
I see setegid: Not owner
I see seteuid: Not owner
[scz@ /export/home/scz/src]>
D: tt 2001-06-07 14:04
如果一個(gè)Solaris下的程序setuid-to-,應(yīng)該盡量使用setreuid()永久放棄特權(quán),
而不是setuid(),因?yàn)檫@樣最通用。尤其當(dāng)setuid-to-的時(shí)候,setuid()
根本無(wú)法永久放棄特權(quán)。
如果一個(gè)Solaris下的程序setgid-to-,應(yīng)該盡量使用setregid()永久放棄特權(quán),
而不是setgid(),因?yàn)檫@樣最通用。尤其當(dāng)整個(gè)過(guò)程中無(wú)法滿(mǎn)足EUID為0的時(shí)候,
setgid()根本無(wú)法永久放棄特權(quán)。
假設(shè)一個(gè)Solaris下的程序同時(shí)setuid、setgid過(guò),較理想的釋放順序應(yīng)該是先釋放

熱詞搜索:

上一篇:UNIX平臺(tái)雙機(jī)配置
下一篇:solaris常用網(wǎng)絡(luò)文件配置

分享到: 收藏
国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区
欧美videossexotv100| 久久精品亚洲麻豆av一区二区| 久久99久久99精品免视看婷婷| 国产亚洲精品精华液| 欧美日韩电影在线播放| 国产aⅴ精品一区二区三区色成熟| 亚洲综合一区二区三区| 久久久99免费| 欧美一区二区视频在线观看2020| 高潮精品一区videoshd| 蜜桃视频免费观看一区| 亚洲综合色噜噜狠狠| 国产精品伦理在线| 日韩午夜激情av| 欧美午夜精品一区二区三区| 国产不卡高清在线观看视频| 蜜桃视频一区二区三区在线观看| 一区二区三区久久久| 国产精品色眯眯| 久久蜜臀中文字幕| 91精品国产综合久久久蜜臀图片| 91成人在线观看喷潮| 成人免费高清在线| 国产乱码精品一区二区三区av| 日韩制服丝袜先锋影音| 亚洲精品国产精华液| 中文字幕 久热精品 视频在线| 日韩色视频在线观看| 欧美视频三区在线播放| 色综合天天狠狠| 99久久免费视频.com| 丁香网亚洲国际| 国产精品一区二区无线| 激情欧美一区二区三区在线观看| 日本亚洲免费观看| 日本成人中文字幕在线视频| 亚洲.国产.中文慕字在线| 亚洲精品乱码久久久久久黑人 | 中文字幕日韩av资源站| 久久色在线视频| 久久影院视频免费| 日韩欧美高清dvd碟片| 欧美一卡2卡三卡4卡5免费| 欧美电影一区二区三区| 欧美顶级少妇做爰| 日韩三级视频在线观看| 5月丁香婷婷综合| 日韩欧美资源站| 欧美精品一区二区高清在线观看 | 成人免费视频国产在线观看| 国产福利不卡视频| av资源网一区| 日本高清不卡一区| 欧美三区在线视频| 91麻豆精品国产自产在线观看一区 | 韩国av一区二区三区| 精品一区二区在线视频| 国产激情91久久精品导航 | 麻豆免费精品视频| 激情五月婷婷综合| 成人免费毛片高清视频| 91老师片黄在线观看| 欧美性猛交xxxxxxxx| 欧美放荡的少妇| 久久久不卡影院| 亚洲黄色免费电影| 午夜久久福利影院| 国产精品久久久久婷婷| 国产精品羞羞答答xxdd| 国产不卡高清在线观看视频| 99在线热播精品免费| 亚洲青青青在线视频| 国产69精品久久久久毛片| 久久久国产精品麻豆| 欧美日韩视频一区二区| 国产真实乱偷精品视频免| 一区二区三区色| 久久日一线二线三线suv| 色婷婷综合中文久久一本| 国内不卡的二区三区中文字幕| 亚洲男人的天堂在线观看| 日韩一二在线观看| 91国产精品成人| 国产成人在线免费观看| 午夜视频在线观看一区二区| 日本一区二区视频在线| 91精品国产免费| 在线观看91视频| 成人免费视频caoporn| 久久黄色级2电影| 亚洲午夜国产一区99re久久| 国产精品毛片大码女人| 日韩一区二区在线观看| 在线观看欧美黄色| 91在线视频官网| 国产成人精品一区二区三区网站观看| 日韩和欧美一区二区三区| 亚洲激情欧美激情| 中文字幕av资源一区| 久久久久青草大香线综合精品| 欧美日韩国产a| 欧美视频一区二| 在线观看日韩毛片| 91黄色激情网站| 91影院在线免费观看| 成人app在线观看| 国产成人啪免费观看软件| 精品一区二区影视| 男男gaygay亚洲| 老司机精品视频一区二区三区| 亚洲成人激情社区| 亚洲成人高清在线| 婷婷中文字幕一区三区| 日韩主播视频在线| 日韩精品视频网站| 日韩成人精品视频| 免费成人在线观看视频| 视频一区国产视频| 美女视频免费一区| 精品亚洲免费视频| 国产夫妻精品视频| 成人丝袜18视频在线观看| 国产成人午夜视频| 岛国精品在线观看| 9l国产精品久久久久麻豆| 不卡的电影网站| 色香蕉成人二区免费| 色狠狠综合天天综合综合| 欧美性一二三区| 91精品国产高清一区二区三区| 欧美一区二区黄色| 久久久九九九九| 亚洲三级在线观看| 午夜精品久久久久| 国产主播一区二区| 99久久国产综合色|国产精品| 色综合久久综合中文综合网| 欧美日本在线视频| 久久久久久久久免费| 亚洲欧洲国产日本综合| 亚洲最快最全在线视频| 日韩成人免费电影| 国产不卡在线一区| 欧美视频第二页| 欧美精品一区二区不卡| 一区二区中文视频| 婷婷国产在线综合| 国产精品自拍av| 日本精品一区二区三区高清| 欧美一区二区网站| 国产精品国产自产拍高清av王其 | 欧美精品一二三四| 久久免费看少妇高潮| 亚洲嫩草精品久久| 久久99国产精品久久| av一区二区三区在线| 欧美一区二区三级| 亚洲人快播电影网| 久久精品国内一区二区三区| 成人免费高清视频在线观看| 欧美高清性hdvideosex| 国产精品福利电影一区二区三区四区| 性做久久久久久久免费看| 国产成人免费xxxxxxxx| 欧美一区2区视频在线观看| 国产精品视频一二| 久久99精品久久久久久 | 国产99久久精品| 欧美日韩日本视频| 国产精品三级在线观看| 美女网站色91| 欧洲精品中文字幕| 中文字幕成人网| 国产综合一区二区| 欧美日韩精品一区二区| 一区在线观看免费| 国产精品影视天天线| 8v天堂国产在线一区二区| 中文幕一区二区三区久久蜜桃| 蜜桃久久精品一区二区| 欧美色综合天天久久综合精品| 国产精品无遮挡| 激情欧美日韩一区二区| 欧美一区二区国产| 偷拍日韩校园综合在线| 欧美丝袜丝nylons| 一区二区三区在线观看国产| 丁香五精品蜜臀久久久久99网站| 久久伊人蜜桃av一区二区| 麻豆精品蜜桃视频网站| 日韩一级二级三级| 日本亚洲电影天堂| 欧美日韩视频在线一区二区| 免费看日韩精品| 欧美日韩高清在线| 一区二区三区精品在线观看| 色婷婷亚洲精品| 一二三区精品福利视频| 91国产免费观看| 亚洲高清一区二区三区|