我需要通过编程将当前用户切换到另一个用户,然后在环境中执行下面的代码(例如路径、权限..)另一个用户的。我发现'chroot()','setuid()‘可能与我的案例相关联,但这些函数需要root权限,我没有root权限,但我有第二个用户的密码。我该怎么办?
我已经尝试过shell "su -“可以切换当前用户,这个命令对我的C++代码有帮助吗?
如果我的问题很愚蠢,请不要嘲笑我,我是一个真正的linux新手。:)谢谢!
发布于 2010-06-09 20:11:55
当客户端连接到服务器时,服务器会传输它们需要的数据,但前提是用户名和密码正确。
如果您的主要需求是进行身份验证,那么可以尝试使用man pam。还有一些库允许通过LDAP进行身份验证。不幸的是,我没有实现这两种方法的个人经验。
否则,重新创建完整的用户环境是不可靠的,而且容易出错。想象一个打字错误或无限循环,但在用户的~/.profile中。
我已经有一段时间没有这样做了,但我也会尝试挖掘"su“的方向,找出用户shell (从/etc/passwd)并尝试执行(),就好像它是一个登录shell (带有"-")一样。但在此之后,您需要以某种方式将执行命令传递给它,这是一个问题: shells在批处理、更多和交互模式下的运行方式是不同的。作为一种可能的黑客攻击,expect (man expect)出现在脑海中,但它仍然太不可靠。
我过去在expect下使用过ssh (输入密码),但每次它都会破坏自定义的用户配置文件。使用expect,要发送命令,必须以某种方式识别外壳已经完成初始化(执行配置文件和rc文件)。但是,由于许多人自定义shell提示符,并且他们的配置文件/rc文件打印额外的信息,因此expect经常过早地识别shell提示符。
顺便说一句,根据用户的数量,可以尝试用户在自己的帐户下手动启动服务器的设置。服务器将只能访问仅对用户可访问的信息。
发布于 2010-06-09 18:21:53
您可以使用系统函数在操作系统上执行shell命令。
发布于 2010-06-09 18:27:44
您可以查看登录命令的源代码,也可以尝试使用exec()-family函数在登录时进行调用。
编辑:似乎您在任何情况下都需要root访问权限。
https://stackoverflow.com/questions/3004907
复制相似问题