题
好吧,所以我的问题很简单,但是我对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使用 系统().
不隶属于 StackOverflow