我在C中编写了一个在浏览器中运行的cgi-bin应用程序,允许用户打开交互式shell并在Linux机器上查看编辑文件。它作为标准apache“www-data”用户运行。我刚刚添加了一个登录屏幕,用户输入他们的名称和密码(在表单中),但我无法使用getspnam对用户进行身份验证,因为此功能仅在以root身份运行时才有效。如何在不以root身份运行时检查linux中的登录凭据?
如果没有以root用户身份运行,必须检查用户的登录凭据有哪些选项?
PS:在我的交互式shell我可以键入“苏根”,然后输入我的密码,它并提升到根细。因此很明显可以交互进行。
应该指出,这只适用于因为'su'是suid root。如果不是,那么无论您尝试切换到哪个用户,它都会有相同的问题。 – 2009-12-22 19:28:12
我不知道我明白你在说什么@Evan Teran。他正在做一个'su root'来切换到root用户。如果他做了一个'su randomUser',那么他就不能读取root的文件作为'randomUser',除非'root'给了'randomUser'许可。这不是一个给定的?或者我误解了你? – mrduclaw 2009-12-22 19:30:17
使用SetUID解决了我的问题。因为我是Linux新手,所以之前我不知道这个功能。谢谢! – KPexEA 2009-12-22 19:48:09