setuid vs seteuid function

时间:2015-10-12 08:31:04

标签: c linux unix setuid

setuid和seteuid函数有什么区别。在man page中,这两个函数都有类似的描述。

的setuid:

DESCRIPTION

   setuid()  sets  the  effective user ID of the calling process.  If the effective UID of the caller is root, the real UID and saved
   set-user-ID are also set.

个seteuid:

DESCRIPTION

   seteuid()  sets  the  effective user ID of the calling process.  Unprivileged user processes may only set the effective user ID to
   the real user ID, the effective user ID or the saved set-user-ID.

在两个描述中都包含sets the effective user ID of the calling process。那么有什么区别呢 这两个功能以及这些功能之间的功能如何不同。

还有一个疑问是,只使用chmod(chmod u + s) 可以为文件设置set user id权限。然后,仅在程序的运行时期间,该进程具有设置为设置的权限 用户身份。除了这些函数之外,这些函数如何将有效的用户标识设置为进程。

2 个答案:

答案 0 :(得分:4)

来自man page

   Thus, a set-user-ID-root program wishing to temporarily drop root
   privileges, assume the identity of an unprivileged user, and then
   regain root privileges afterward cannot use setuid().  You can
   accomplish this with seteuid(2).

答案 1 :(得分:0)

回答“为什么使用seteuid()”这个问题:某些系统应用程序使用seteuid(),以便他们可以尝试使用“有效”用户的权限执行指令。这允许以root身份运行的编程确保,例如,它创建的任何文件都是使用有效的用户ID而不是root id创建的。

也许最值得注意的应用程序是Unix“cron”系统,它必须以用户“root”身份运行,但有责任以任意用户身份执行任意命令。