首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

这段代码的作用了什么?linux下的,该怎么解决

2012-02-19 
这段代码的作用了什么?linux下的uid_tuidgetuid()ssocket(PF_PACKET,SOCK_DGRAM,0)socket_errnoerrno

这段代码的作用了什么?linux下的
uid_t   uid   =   getuid();

s   =   socket(PF_PACKET,   SOCK_DGRAM,   0);
socket_errno   =   errno;

setuid(uid);

[解决办法]
setuid()用来重新设置执行目前进程的用户识别码。不过,要让此函数有作用,其有效的用户识别码必须为0(root)。在Linux下,当root使用setuid()来变换成其他用户识别码时,root权限会被抛弃,完全转换成该用户身份,也就是说,该进程往后将不再具有可setuid()的权利,如果只是向暂时抛弃root 权限,稍后想重新取回权限,则必须使用seteuid()。
一般在编写具setuid root的程序时,为减少此类程序带来的系统安全风险,在使用完root权限后建议马上执行setuid(getuid());来抛弃root权限。此外,进程uid和euid不一致时Linux系统将不会产生core dump。

热点排行