setuid()与seteuid()的区别
2014-08-30 17:53
309 查看
头文件:#include <unistd.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.
定义函数: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.
相关文章推荐
- linux下setuid,setgid ,setbit的区别
- chmod u+s用法和setuid(),seteuid()
- setuid,seteuid,setreuid
- setuid和seteuid
- chmod u+s用法和setuid(),seteuid()
- 中国程序员和其它程序员的区别
- TextBox中的TextChanged和KeyDown事件的小区别
- 引用参数和输出参数的2个区别(以前偶只知道第一个)
- (旧文重贴)真是惭愧,翻译代码的过程中,才明白了new和override的区别。
- CSS中Class与ID的区别,Margin与Padding的区别
- Java 查看器 和 Java Plug-in 查看器之间的区别
- SQL中UNION 与 UNION ALL 的区别
- static readonly与使用const的区别
- DataSet.WriteXml(String)与DataSet.WriteXml(Stream)的区别
- OptimalJ三个版本的区别(开发版、专业版、架构版)
- 关于MTS和COM+的区别.(个人理解dotnet是windows DNA和com+的延续,那么MTS应该逐渐退出舞台了)
- Web 应用的执行过程 -- 谈谈 WAD/CGI/ISAPI 的区别
- 指针问题的一点体会(区别 [指向指针的指针] 与 [指针的指针] .)
- C#和VB.NET的区别
- Visual Basic 6.0 控件和 .NET 控件的区别