好吧,所以我的问题很简单,但是我对C有很新,我希望有人可以帮助我。我想更改为C中的其他用户。例如,我知道用户的密码,以及用户类型:./change user1,它将更改为user1。我知道这可能是一个安全问题,但目前我不担心安全性。

有帮助吗?

解决方案

您将要使用可以在 unistd.h 因此,它可以在POSIX系统上使用(因此任何Linux/Unix Falvour都可以)

从男人页面

如果该过程具有适当的特权,则setUID()应设置真实的用户ID,有效的用户ID和呼叫过程中已保存的set-user-id到UID。

如果该过程没有适当的特权,但是UID等于真实的用户ID或已保存的Set-user-id,则SETUID()应将有效的用户ID设置为UID;真实的用户ID和保存的Set-user-ID应保持不变。

setUID()函数不得以任何方式影响补充组列表。

这是一个 例子

其他提示

致电 su 二进制(例如通过 system() 或组合 fork() 和其中之一 exec 函数),它知道更改凭证的所有复杂性,无论是在unix-generer和您的特定操作系统上。终端共享并继续属于原始用户。

这些复杂性中的一些并不是简单处理的 setuid() 呼叫是组,帐户禁用和资源限制。

如果这只是为了好玩, setuid() 先于 setgid()initgroups() 可能对您来说足够了。

您必须使用 getpwuid(). 。后词您必须在程序中设置UID setuid() 其次是您意图使用这些新权利的应用程序/功能,例如Shell。用 当前的 UID使用 系统().

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top