首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >setuid和seteuid函数

setuid和seteuid函数
EN

Stack Overflow用户
提问于 2015-10-12 10:46:36
回答 2查看 1.2K关注 0票数 1

我试图找出setuid和seteuid函数之间的区别。当时,他们中的许多人说,以下是不同之处。它在setuid的手册页中显示。

因此,希望暂时删除根权限、假定非特权用户的身份、然后重新获得根权限的设置用户ID根程序不能使用setuid()。您可以使用seteuid(2)完成这一任务。

我对上面的手册页有疑问。使用setuid,我们可以设置进程的有效用户id。代表:

代码语言:javascript
复制
setuid(getuid());

执行此语句后,进程的有效用户is将更改为当前用户。因此,为了重新获得根权限,我只需使用

代码语言:javascript
复制
setuid(0);

但是为什么手册页引用显示

afterward cannot use setuid(). You can accomplish this with seteuid(2)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-12 13:29:08

  • setuid()函数将所有三个进程UID都设置为函数参数中指定的进程UID。根权限只能从保存的-uid进程字段获得,该字段刚刚被setuid调用覆盖。因此,在unistd.h文件中定义了_POSIX_SAVED_IDS的系统上,在调用setuid()之后无法返回根用户。setuid()是单程票。
  • seteuid()函数不会覆盖保存的-uid字段,因此可以在函数调用后重新获得根权限。
  • 我不确定问题中提到的setuid(0)是否实际工作(或者您的系统上没有定义_POSIX_SAVED_IDS )。
票数 3
EN

Stack Overflow用户

发布于 2015-10-12 13:08:12

注意手册页的措辞:它用于set- user -id-root程序(因此可执行文件由用户根拥有,suid位被设置)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33079216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档