Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103557438
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: LINUX

2008-04-30 22:46:57

作者: libuse  出自:
半年前在给一个朋友调试邮件服务器时,发现并不需要用super,只用Linux系统的sudo就可办到,不敢独享,放到论坛上来,

假设运行apache的用户是nobody,密码是nobody2002

要在php中实现用户的增,删,改的操作

1> 有关的文件及路径:

/etc/sudoers

/usr/bin/sudo

/usr/sbin/useradd

/usr/sbin/userdel

/usr/sbin/usermod

2> 以root身份登录Linux系统,修改/etc/sudoers文件,可也仅可运行命令visudo就可以了, 增加如下一行

nobody ALL=(ALL) /usr/sbin/useradd,/usr/sbin/userdel,/usr/sbin/usermod

##注意不能用vi /etc/sudoers 的方式修改哟

3>

请参考如下程序:


$sudo_path="/usr/bin/sudo";

$cmd_add=$sudo_path." /usr/sbin/useradd";

$cmd_del=$sudo_path." /usr/sbin/userdel";

$cmd_mod=$sudo_path." /usr/sbin/usermod";

function sudo_cmd($todo_cmd)

{

$userpass="nobody2002";

$fp = @popen($todo_cmd, "w");

@fputs($fp, $userpass);

@pclose($fp);

}

// 例子:

$user="newuser";

$pass="12345";

$crypass=crypt($pass,"PK");

// 增加用户

$cmd=$cmd_add." -p $crypass $user";

sudo_cmd($cmd);

// 删除用户

$cmd=$cmd_del." $user";

sudo_cmd($cmd);

// 修改用户(密码,HOME目录,...,暂停,恢复使用等)

$cmd=$cmd_mod." -p $crypass $user";

sudo_cmd($cmd);

$cmd=$cmd_mod." -L $user";

sudo_cmd($cmd);

$cmd=$cmd_mod." -U $user";

sudo_cmd($cmd);

?>
阅读(566) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~