<?
/* PHP中如何增加一个系统用户
下面是一段例程,增加一个名字为james的用户,
root密码是 verygood。仅供参考
*/
$sucommand = "su --login root --command";
$useradd = "useradd ";
$rootpasswd = "verygood";
$user = "james";
$user_add = sprintf("%s \"%s %s\"",$sucommand,$useradd,$user);
$fp = @popen($user_add,"w");
@fputs($fp,$rootpasswd);
@pclose($fp);
?>
请问:一通过上述程序可以简单实现PHP转换ROOT身份 从而执行ROOT命令我的上个系统可以实现 但是工作需要 现在换了RHEL5 就不行了提示错误为:standard in must be a tty是不是因为安装过程中缺少什么东西导致上述问题的出现?看见有人设置php.ini里 关于tty不需要密码 从而解决 但是 我需要和SHELL多次进行数据交互请问应该是哪里的问题呢?GOOGLE的要吐血了也没找到满意的答案 请达人指导请问:二如果实现了上述功能 即不再出现standard in must be a tty错误 可以正常输入passwd转换身份 那么能不能实现@fputs($fp,$rootpasswd); 的连续调用 以传递给shell连续的信息?如果不能 应该采用别的哪种方法 使PHP端可以和SHELL进行多次连续的数据交互?
解决方案 »
- 在线急求高手们解答小问题 谢谢
- php 登陆问题 数据库用的是phpmyadmin
- 关于读取.txt文件中的数据
- 怎么把 字符串转为 8进制?
- 请问如何在php.ini里打开对session的支持
- 谁给个发Email的代码!急等!
- 为什么php不认mysql_connect(),用IE打开后报这样的错 Fatal error: Call to undefined function: mysql_connect() in /var/www/html/list
- include文件,类or函数的相对路径是实例化页面还是文件页面?
- 有熟悉ecshop的高手吗?请教个验证登录的问题。。。。。。。
- 奇怪的 PHP 语句,求解惑。
- 大家写过或者用过这样的算法吗?
- ?急关于windows.open无法在新的窗口弹出页面
2. 把这个C程序设置成root用户,root组,并且setuid,并且设置所有人可执行。
3. 把这个程序放入到执行php的uid可以访问但是其它uid用户无法访问的目录。当你执行这个C程序的时候,它是root权限的。
用pipe的方式,不方便,发行版可能修改程序,禁止非终端用户使用这个命令。
但是setuid方式,是不会被禁止的。此外,只有二进制程序可以setuid为root获得root权限,脚本不行
这样是可以 但是 可是管道麻烦 不如能解决standard in must be a tty 这个问题来的快谁知道怎么搞standard in must be a tty 这个问题呢?各种迷糊中~还是要感谢楼上热心 万不得已了 再写C的吧
这个得下载你那个linux版本相应的su的源码,一般在coreutils包中,
看看源码是否调用的getpass获取的密码,getpass是可以从stdin读的,
但是也有可能是修改过的su,禁止从tty以外的地方读取,为的是安全性我看了debian发行版的su源码,可以从管道读