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

掃一掃
關注微信公眾號

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

Solaris下究竟如何使用setuid/seteuid/setreuid
Q: 我被setuid/seteuid/setreuid搞瘋了,到底怎么使用它們?
A: 下面是Solaris 7的setuid(2)手冊頁
系統調用 setuid(2)
名字
setuid、setegid、seteuid、setgid - 設置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()只設置EUID。如果當前EUID為0,形參euid任意指定。否則
形參euid應該是RUID、EUID、SUID之一。無論如何,最終只影響當前
EUID。
setegid()只設置EGID。如果當前EUID為0,形參egid任意指定。否則
形參egid應該是RGID、EGID、SGID之一。無論如何,最終只影響當前
EGID。
登錄時,RUID、EUID、SUID設置成登錄ID。
進程調用exec(2)執(zhí)行一個程序文件,考慮兩種情況:
a. 程序文件set-user-id,則相應進程EUID、SUID被設置成這個程序
文件的屬主ID。
程序文件set-group-id,則相應進程EGID、SGID被設置成這個程
序文件的屬組ID。
b. 程序文件沒有set-user-id,則相應進程EUID、SUID不變。
程序文件沒有set-group-id,則相應進程EGID、SGID不變。
如果當前EUID為0,任意調用setuid()同時設置RUID、EUID、SUID。
如果當前EUID為0,任意調用setgid()同時設置RGID、EGID、SGID。
如果當前EUID不為0,形參uid等于RUID或者SUID,調用setuid()后當
前EUID被設置成形參uid,RUID、SUID不受影響。
如果當前EUID不為0,形參gid等于RGID或者SGID,調用setgid()后當
前EGID被設置成形參gid,RGID、SGID不受影響。
返回值
0 成功
-1 失敗,errno被設置
錯誤值
EINVAL 形參uid、gid等不在合法范圍內
EPERM 當前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)手冊頁
系統調用 setreuid(2)
名字
setreuid - 設置RUID、EUID
摘要
#include 
int setreuid ( uid_t ruid, uid_t euid );
描述
setreuid()設置RUID、EUID,最終可能導致SUID改變。
如果形參ruid為-1,RUID不變。如果形參euid為-1,EUID不變。形參
ruid、euid可以不同。
如果EUID為0,形參ruid、euid可以是任意合法值。
如果EUID不為0,形參ruid可以等于當前RUID、當前EUID,形參euid
可以等于當前RUID、當前EUID、當前SUID。
兩種情況下,如果RUID被成功修改(形參ruid不為-1),或者EUID被成
功修改(形參euid不為-1)并且不等于最終RUID,則最終SUID被設置成
最終EUID。
返回值
0 成功
-1 失敗,errno被設置
錯誤值
EINVAL 形參ruid、euid等不在合法范圍內。
/usr/include/limits.h中定義了合法范圍
[0, 2147483647(UID_MAX)]。
EPERM 當前EUID不為0,形參指定不符合前面描述。
用法
一個set-user-id進程調用setreuid()修改當前EUID成當前RUID后,
依然可以調用setreuid()修改當前EUID成當前SUID
參看
exec(2)、getuid(2)、setregid(2)、setuid(2)
D: 小四
從Solaris 2.6/7源碼中可以看到,由于SUID的存在,存在很多安全隱患。
對于一個setuid-to-root的程序,如果需要永久放棄特權,應該在當前EUID為0的時
候調用setuid( not root )放棄特權。或者調用setreuid( not root, not root )放
棄特權。只有這兩種正確辦法,否則始終有機會重獲特權。
假設當前ruid == 500、euid == 0、suid == 0,
setreuid( -1, 500 ); <-- 臨時放棄特權 ruid == 500、euid == 500、suid == 0
setreuid( -1, 0 ); <-- 恢復特權 ruid == 500、euid == 0、suid == 0
setuid( 500 ); <-- 永久放棄特權 ruid == euid == suid == 500
某些系統可能不支持SUID,假設當前ruid == 500、euid == 0,
setuid( 0 ); <-- 現在ruid == euid == 0
setreuid( -1, 500 ); <-- 現在ruid == 0、euid == 500
seteuid( 0 ); <-- 現在ruid == euid == 0
顯然在某些shellcode編寫過程中,應該是這個調用順序成功幾率最大:
seteuid( 0 );
setuid( 0 );
下面這個程序演示如何調用setreuid()、setregid()永久放棄setuid、setgid特權
--------------------------------------------------------------------------
/* 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 <-- 即使整個過程中沒有EUID為0的機會,
rgid = 100 egid = 100 還是成功地永久釋放了特權
I see setegid: Not owner
I see seteuid: Not owner
[scz@ /export/home/scz/src]>
D: tt 2001-06-07 14:04
如果一個Solaris下的程序setuid-to-,應該盡量使用setreuid()永久放棄特權,
而不是setuid(),因為這樣最通用。尤其當setuid-to-的時候,setuid()
根本無法永久放棄特權。
如果一個Solaris下的程序setgid-to-,應該盡量使用setregid()永久放棄特權,
而不是setgid(),因為這樣最通用。尤其當整個過程中無法滿足EUID為0的時候,
setgid()根本無法永久放棄特權。
假設一個Solaris下的程序同時setuid、setgid過,較理想的釋放順序應該是先釋放

熱詞搜索:

上一篇:UNIX平臺雙機配置
下一篇:solaris常用網絡文件配置

分享到: 收藏
国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区
国产精品久久久免费| 亚洲一区久久| 亚洲欧美久久久久一区二区三区| 欧美成年人网站| 1024亚洲| 欧美视频一区二区三区四区| 亚洲精品视频中文字幕| 国产精品久久| 久久夜色撩人精品| 亚洲亚洲精品三区日韩精品在线视频| 国产麻豆一精品一av一免费| 免费看黄裸体一级大秀欧美| 亚洲特级片在线| 伊人久久男人天堂| 国产精品高潮呻吟久久av无限| 两个人的视频www国产精品| 亚洲一区二区成人| 亚洲国产一区二区三区在线播| 国产亚洲欧美一区二区| 国产精品国内视频| 欧美日本一区| 男人的天堂成人在线| 久久精品一区二区三区四区| 亚洲综合视频网| 一本大道久久a久久精二百| 国产一区二区激情| 国产精品久久中文| 亚洲欧美日韩一区在线| 在线视频日韩精品| 在线观看的日韩av| 99综合在线| 亚洲激情第一区| 国产亚洲欧美一级| 国产精品亚洲欧美| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ入口 | 久久综合国产精品| 亚洲国产精品久久91精品| 在线观看欧美日本| 国产视频亚洲精品| 一本色道精品久久一区二区三区| 鲁鲁狠狠狠7777一区二区| 欧美连裤袜在线视频| 国产精品入口麻豆原神| 亚洲第一区色| 亚洲欧美变态国产另类| 欧美一区二区久久久| 欧美另类极品videosbest最新版本| 国产精品h在线观看| 亚洲国产清纯| 久久性色av| 国产女精品视频网站免费| 亚洲三级毛片| 欧美暴力喷水在线| 黄色精品一区二区| 亚洲永久字幕| 国产精品久久久久久影视| 亚洲美女黄网| 欧美—级a级欧美特级ar全黄| 精品福利免费观看| 欧美一区二区三区久久精品茉莉花 | 国产一区白浆| 欧美在线亚洲一区| 国产一区二区三区奇米久涩| 亚洲欧美精品一区| 国产精品女人网站| 亚洲一区二区三区在线| 欧美视频网站| 久久久久www| 亚洲高清成人| 欧美激情国产精品| 一本色道88久久加勒比精品 | 久久网站免费| 亚洲激情视频在线播放| 欧美国产视频一区二区| 99成人在线| 国内揄拍国内精品久久| 欧美大学生性色视频| 亚洲一区二区影院| 亚洲成色777777女色窝| 欧美日韩国产专区| 欧美一区二区三区日韩| 亚洲激情影院| 国模私拍一区二区三区| 欧美日韩精品久久久| 国产一区二区三区精品欧美日韩一区二区三区| 国产热re99久久6国产精品| 中文有码久久| 亚洲人成网站影音先锋播放| 欧美三级第一页| 欧美日韩国产色视频| 免费国产自线拍一欧美视频| 久久精品123| 久久国内精品自在自线400部| 亚洲性人人天天夜夜摸| 99热免费精品| 亚洲黄色在线视频| 欧美日韩精品是欧美日韩精品| 欧美在线播放视频| 欧美尤物一区| 久久综合给合| 欧美精品性视频| 欧美日韩人人澡狠狠躁视频| 欧美精品在线极品| 欧美日韩在线观看一区二区三区| 欧美喷潮久久久xxxxx| 欧美视频一区二区三区四区| 国产视频观看一区| 亚洲激情在线视频| 午夜精品在线看| 欧美日韩三级视频| 久久爱另类一区二区小说| 亚洲在线中文字幕| 欧美伊人久久久久久久久影院| 午夜视频一区在线观看| 性欧美1819性猛交| 欧美成人精品在线播放| 欧美日韩国产首页| 国产亚洲精品久久久久久| 亚洲成色777777女色窝| 欧美高清一区二区| 国产精品电影网站| 久久久蜜桃一区二区人| 久久视频在线看| 猛干欧美女孩| 国产精品日韩在线观看| 在线观看国产精品淫| 制服丝袜亚洲播放| 久久久蜜桃精品| 国产精品第2页| 精品96久久久久久中文字幕无| 亚洲日本aⅴ片在线观看香蕉| 亚洲免费中文| 欧美日韩在线第一页| 亚洲国产另类精品专区 | 欧美韩日亚洲| 国内一区二区三区在线视频| 99视频一区| 欧美日韩一区在线观看视频| **网站欧美大片在线观看| 久久久久成人网| 国产一区二区三区久久久| 亚洲一区免费网站| 国产精品草草| 亚洲欧美精品在线| 国产伪娘ts一区| 久久综合色影院| 亚洲茄子视频| 欧美手机在线| 欧美中文字幕在线播放| 国产欧美日韩亚洲一区二区三区| 亚洲欧美综合精品久久成人| 国产精品女主播在线观看| 欧美在线亚洲| 日韩午夜剧场| 国产精品欧美风情| 久久亚洲一区二区| 最新国产拍偷乱拍精品| 欧美日韩一区二区三区免费看 | 欧美视频专区一二在线观看| 99视频精品在线| 国产欧美日韩视频一区二区| 久久免费视频观看| 亚洲欧美国产高清| 亚洲电影欧美电影有声小说| 国产精品美女久久久久av超清 | 久久av一区二区三区| 欧美激情精品久久久久久变态| 国产一区二区三区丝袜 | 国产午夜精品久久久久久久| 亚洲精品一区二区三区99| 久久久综合激的五月天| 99在线精品视频在线观看| 国产精品成人免费视频| 久久动漫亚洲| 亚洲三级免费电影| 欧美日韩综合在线| 久久久免费av| 亚洲欧美久久久久一区二区三区| 在线播放不卡| 欧美日韩中文字幕在线| 亚洲欧美第一页| 9i看片成人免费高清| 国产三级欧美三级日产三级99| 久久久女女女女999久久| 久久99伊人| 一本色道久久综合亚洲精品不| 国产精品自拍在线| 国产精品一区二区三区免费观看| 玖玖玖国产精品| 老色批av在线精品| 久久久另类综合| 欧美成人精品在线播放| 欧美大片第1页| 国产精品久久久久7777婷婷| 欧美日韩三级在线| 国产精品永久免费观看| 亚洲第一在线综合在线| 日韩网站在线观看| 欧美一区二区免费观在线| 亚洲欧美国产日韩天堂区|