通过PHP修改Linux或Unix口令的方法分享


Posted in PHP onJanuary 30, 2012

需要的工具和安装:

你必须安装下面的工具和软件:

?修改口令的Shell脚本;

? Sudo访问权;

? Apache or Lighttpd web服务器;

? PHP服务端程序。

步骤1:安装可以修改用户口令的shell脚本

该脚本可以实际用于修改Linux用户的口令(已在Linux和FreeBSD测试)。

例子: shell脚本代码

#!/bin/sh # \ exec expect -f “$0″ ${1+”$@”} set password [lindex $argv 1] spawn passwd [lindex $argv 0] sleep 1 expect “assword:” send “$password\r” expect “assword:” send “$password\r” expect eof运行shell脚本(下载链接):

$ chpasswd username password下载该脚本,然后拷贝到你的web根目录或者web服务器的其它位置(用户可读):

$ cp chpasswd /var/www/或者,如果你使用Lighttpd web服务器:

$ cp chpasswd /home/lighttpd步骤2:通过sudo以root身份执行命令

Apache或Lighttpd web服务器进入后台运行后会马上使用非root权限。这样可以很好的防止口令修改,就像passwd命令需要root权限才能修改其它用户帐号的口令。

通常, Apache 2使用www-data用户, Lighttpd使用lighttpd用户(皆为普通用户,非root用户)。使用root用户登陆,然后执行下面的命令:

# visudo现在你的web服务器允许执行口令修改脚本(chpasswd)。如果你使用Apache web服务器,执行下面的命令:

www-data ALL=NOPASSWD: /var/www/chpasswd或者,如果你使用Lighttpd web服务器,执行下面的命令:

httpd ALL=NOPASSWD: /home/lighttpd/chpasswd保存和退出文件。

步骤3.创建一个基于PHP的接口

现在你需要写一个php脚本。这里有一个php脚本实例。你可以根据你的需要来修改。至少你需要正确设置好的shell脚本位置。打开php脚本和找到shellscript一行:

$shellscript = “sudo /home/lighttpd/chpasswd”;修改shellscript指向到正确的位置。PHP的源代码从这里下载:

步骤4:运行脚本

在你的web浏览器地址栏输入网地址,你将会看到用户名和口令提示:

如果口令修改成功,你会得到的确认提示:

由于一些原因,如果口令修改失败,你可以参考下面提示获得更多详细的错误信息:

步骤5:安全

◆永远不要通过http协议直接运行上面的脚本.而是使用https协议。

◆把脚本放入到受口令保护的目录。

◆永远不要信任用户的输入。上面的php脚本只是一个例子。在现实的生产环境中,你需要考虑采用更强大的用户输入确认。讨论PHP编程的安全超出了本文的范围。你可以参考一本好的PHP书籍或者使用你喜欢的搜索引擎搜索相关的网站。

PHP 相关文章推荐
PHP实现抓取Google IP并自动修改hosts文件
Feb 12 PHP
PHP实现多文件上传的方法
Jul 08 PHP
从刷票了解获得客户端IP的方法
Sep 21 PHP
PHP递归创建多级目录
Nov 05 PHP
PHP引用返回用法示例
May 28 PHP
php求数组全排列,元素所有组合的方法总结
Mar 14 PHP
PHP异常处理定义与使用方法分析
Jul 25 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
Jul 19 PHP
PHP实现找出链表中环的入口节点
Jan 16 PHP
PHP实现从上往下打印二叉树的方法
Jan 18 PHP
在TP5数据库中四个字段实现无限分类的示例
Oct 18 PHP
YII2框架使用控制台命令的方法分析
Mar 18 PHP
php代码收集表单内容并写入文件的代码
Jan 29 #PHP
php 无法加载mysql的module的时候的配置的解决方案引发的思考
Jan 27 #PHP
php木马webshell扫描器代码
Jan 25 #PHP
php addslashes及其他清除空格的方法是不安全的
Jan 25 #PHP
PHP中创建空文件的代码[file_put_contents vs touch]
Jan 20 #PHP
php中将数组存到文件里的实现代码
Jan 19 #PHP
PHP取进制余数函数代码
Jan 19 #PHP
You might like
PHP XML操作的各种方法解析(比较详细)
2010/06/17 PHP
php获取当前时间的毫秒数的方法
2014/01/26 PHP
php二维数组转成字符串示例
2014/02/17 PHP
Yii调试SQL的常用方法
2014/07/09 PHP
PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
2014/09/29 PHP
thinkphp 手机号和用户名同时登录
2017/01/20 PHP
微信公众号实现会员卡领取功能
2017/06/08 PHP
jquery 选择器部分整理
2009/10/28 Javascript
jQuery源码中的chunker 正则过滤符分析
2012/07/31 Javascript
node.js中的fs.fstat方法使用说明
2014/12/15 Javascript
jquery.fastLiveFilter.js实现输入自动过滤的方法
2015/08/11 Javascript
jQuery解析json数据实例分析
2015/11/24 Javascript
javascript实现随机显示星星特效
2016/01/28 Javascript
JavaScript性能优化之函数节流(throttle)与函数去抖(debounce)
2016/08/11 Javascript
前端构建工具之gulp的配置与搭建详解
2017/06/12 Javascript
vue中component组件的props使用详解
2017/09/04 Javascript
seajs下require书写约定实例分析
2018/05/16 Javascript
详解angular部署到iis出现404解决方案
2018/08/14 Javascript
在Vue中使用icon 字体图标的方法
2019/06/14 Javascript
vue - props 声明数组和对象操作
2020/07/30 Javascript
JavaScript仿京东轮播图效果
2021/02/25 Javascript
详解Python编程中对Monkey Patch猴子补丁开发方式的运用
2016/05/27 Python
Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法
2019/09/23 Python
浅谈Python3多线程之间的执行顺序问题
2020/05/02 Python
Pycharm安装第三方库失败解决方案
2020/11/17 Python
Html5+JS实现手机摇一摇功能
2015/04/24 HTML / CSS
canvas仿写贝塞尔曲线的示例代码
2017/12/29 HTML / CSS
幼儿园数学教学反思
2014/02/02 职场文书
法定代表人授权委托书范文
2014/08/02 职场文书
社区综治工作汇报
2014/10/27 职场文书
2014年旅游局法制宣传日活动总结
2014/11/01 职场文书
员工辞职信范文
2015/03/02 职场文书
驳回起诉民事裁定书
2015/05/19 职场文书
物资采购管理制度
2015/08/06 职场文书
室外天线与收音机天线杆接合方法
2022/04/05 无线电
Java实现带图形界面的聊天程序
2022/06/10 Java/Android