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权限。然后,仅在程序的运行时期间,该进程具有设置为设置的权限 用户身份。除了这些函数之外,这些函数如何将有效的用户标识设置为进程。
答案 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”身份运行,但有责任以任意用户身份执行任意命令。