通过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 相关文章推荐
MySQL数据源表结构图示
Jun 05 PHP
用PHP伪造referer突破网盘禁止外连的代码
Jun 15 PHP
PHP 数组实例说明
Aug 18 PHP
解析php通过cookies获取远程网页的指定代码
Jun 25 PHP
PHP常用的缓存技术汇总
May 05 PHP
php使用ob_flush不能每隔一秒输出原理分析
Jun 02 PHP
PHP文件上传问题汇总(文件大小检测、大文件上传处理)
Dec 24 PHP
thinkphp3.2点击刷新生成验证码
Feb 16 PHP
php抽象方法和抽象类实例分析
Dec 07 PHP
Centos 6.5下PHP 5.3安装ffmpeg扩展的步骤详解
Mar 02 PHP
PHP使用phpunit进行单元测试示例
Sep 23 PHP
PHP下载文件函数与用法示例
Sep 27 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抽象类 介绍
2012/06/13 PHP
php版微信公众号接口实现发红包的方法
2016/10/14 PHP
理解Javascript_02_理解undefined和null
2010/10/11 Javascript
javascript学习笔记(五) Array 数组类型介绍
2012/06/19 Javascript
抛弃Nginx使用nodejs做反向代理服务器
2014/07/17 NodeJs
jQuery绑定事件-多种实现方式总结
2016/05/09 Javascript
Angular 页面跳转时传参问题
2016/08/01 Javascript
JS实现六边形3D拖拽翻转效果的方法
2016/09/11 Javascript
JS不完全国际化&本地化手册 之 理论篇
2016/09/27 Javascript
Vue.js开发环境搭建
2016/11/10 Javascript
Javascript this 函数深入详解
2016/12/13 Javascript
jQuery实现弹窗居中效果类似alert()
2017/02/27 Javascript
ES6中字符串string常用的新增方法小结
2017/11/07 Javascript
zTree 树插件实现全国五级地区点击后加载的示例
2018/02/05 Javascript
jquery ui 实现 tab标签功能示例【测试可用】
2019/07/25 jQuery
基于JS实现快速读取TXT文件
2020/08/25 Javascript
解决iview table组件里的 固定列 表格不自适应的问题
2020/11/13 Javascript
编写Python CGI脚本的教程
2015/06/29 Python
Django中信号signals的简单使用方法
2019/07/04 Python
Python 使用指定的网卡发送HTTP请求的实例
2019/08/21 Python
利用python-docx模块写批量生日邀请函
2019/08/26 Python
keras .h5转移动端的.tflite文件实现方式
2020/05/25 Python
python开发一个解析protobuf文件的简单编译器
2020/11/17 Python
Html5跳转到APP指定页面的实现
2020/01/14 HTML / CSS
Charlotte Tilbury美国官网:英国美妆品牌
2017/10/13 全球购物
Regatta官网:英国最受欢迎的户外服装和鞋类品牌
2019/05/01 全球购物
Jacadi Paris英国官网:法国童装品牌
2019/08/09 全球购物
百度吧主申请感言
2014/01/12 职场文书
校运会入场式解说词
2014/02/10 职场文书
2014年乡镇安全生产工作总结
2014/12/02 职场文书
意外事故赔偿协议书
2016/03/22 职场文书
八年级作文之感悟亲情
2019/11/20 职场文书
如何在CSS中绘制曲线图形及展示动画
2021/05/24 HTML / CSS
redis实现的四种常见限流策略
2021/06/18 Redis
nginx刷新页面出现404解决方案(亲测有效)
2022/03/18 Servers
oracle数据库去除重复数据
2022/05/20 Oracle