通过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与MySQL交互使用详解
Oct 09 PHP
逐步提升php框架的性能
Jan 10 PHP
PHP新手用的Insert和Update语句构造类
Mar 31 PHP
php调用C代码的实现方法
Mar 11 PHP
ThinkPHP结合AjaxFileUploader实现无刷新文件上传的方法
Oct 29 PHP
PHP往XML中添加节点的方法
Mar 12 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
Dec 22 PHP
PHP依赖注入(DI)和控制反转(IoC)详解
Jun 12 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
Jul 21 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
Oct 11 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
Dec 01 PHP
如何利用PHP实现上传图片功能详解
Sep 24 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生成静态页面分析 模板+缓存+写文件
2009/08/17 PHP
PHP中改变图片的尺寸大小的代码
2011/07/17 PHP
PHP对MongoDB[NoSQL]数据库的操作
2013/03/01 PHP
搭建PhpStorm+PhpStudy开发环境的超详细教程
2020/09/17 PHP
JavaScript与DOM组合动态创建表格实例
2012/12/23 Javascript
js操作label给label赋值及取label的值示例
2013/11/07 Javascript
jquery弹出层类代码分享
2013/12/27 Javascript
在JS中解析HTML字符串示例代码
2014/04/16 Javascript
nodejs教程之异步I/O
2014/11/21 NodeJs
使用JQuery在线制作ppt并在线演示源码特效
2015/09/08 Javascript
js实现简单的计算器功能
2017/01/16 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(上)
2017/04/21 Javascript
jQuery插件FusionCharts绘制的2D双柱状图效果示例【附demo源码】
2017/05/13 jQuery
javascript回调函数的概念理解与用法分析
2017/05/27 Javascript
react-native组件中NavigatorIOS和ListView结合使用的方法
2017/09/30 Javascript
使用vue + less 实现简单换肤功能的示例
2018/02/21 Javascript
Node.js readline 逐行读取、写入文件内容的示例
2018/03/01 Javascript
微信小程序实现运动步数排行功能(可删除)
2018/07/05 Javascript
详解基于原生JS验证表单组件xy-form
2019/08/20 Javascript
layui实现图片虚拟路径上传,预览和删除的例子
2019/09/25 Javascript
Python中动态获取对象的属性和方法的教程
2015/04/09 Python
利用python爬取散文网的文章实例教程
2017/06/18 Python
浅谈Python黑帽子取代netcat
2018/02/10 Python
Python中包的用法及安装
2020/02/11 Python
python爬取youtube视频的示例代码
2021/03/03 Python
Java里面StringBuilder和StringBuffer有什么区别
2016/06/06 面试题
客服工作职责
2013/12/11 职场文书
信息总监管理职责范本
2014/03/08 职场文书
新文化运动的口号
2014/06/21 职场文书
大学生自我推荐信范文
2015/03/24 职场文书
离婚案件上诉状
2015/05/23 职场文书
社区干部培训心得体会
2016/01/06 职场文书
装修安全责任协议书
2016/03/22 职场文书
如何使用Python实现一个简易的ORM模型
2021/05/12 Python
Mysql效率优化定位较低sql的两种方式
2021/05/26 MySQL
python开发的自动化运维工具ansible详解
2021/08/07 Python