通过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 相关文章推荐
PHP4 与 MySQL 数据库操作函数详解
Dec 06 PHP
PHP下对字符串的递增运算代码
Aug 21 PHP
php输入流php://input使用示例(php发送图片流到服务器)
Dec 25 PHP
PHP整数取余返回负数的相关解决方法
May 15 PHP
CI框架中$this->load->library()用法分析
May 18 PHP
PHP实现随机生成水印图片功能
Mar 22 PHP
PHP实现类似题库抽题效果
Aug 16 PHP
PHP使用观察者模式处理异常信息的方法详解
Sep 24 PHP
PHP中类与对象功能、用法实例解读
Mar 27 PHP
Laravel统一错误处理为JSON的方法介绍
Oct 18 PHP
PHP7新特性
Mar 09 PHP
PHP7 标准库修改
Mar 09 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程序员的技术瓶颈分析
2011/07/17 PHP
php实现监控varnish缓存服务器的状态
2014/12/30 PHP
Zend Framework教程之视图组件Zend_View用法详解
2016/03/05 PHP
可输入的下拉框
2006/06/19 Javascript
jQuery 性能优化指南 (1)
2009/05/21 Javascript
jquery 事件执行检测代码
2009/12/09 Javascript
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
2010/05/31 Javascript
用JQuery 判断某个属性是否存在hasAttr的解决方法
2013/04/26 Javascript
window.open()详解及浏览器兼容性问题示例探讨
2014/05/29 Javascript
JS实现仿新浪黄色经典滑动门效果代码
2015/09/27 Javascript
jQuery 1.9.1源码分析系列(十)事件系统之绑定事件
2015/11/19 Javascript
AngularJS ng-blur 指令详解及简单实例
2016/07/30 Javascript
通过原生JS实现为元素添加事件的方法
2016/11/23 Javascript
微信小程序后台解密用户数据实例详解
2017/06/28 Javascript
JS从非数组对象转数组的方法小结
2018/03/26 Javascript
vue路由拦截及页面跳转的设置方法
2018/05/24 Javascript
json字符串传到前台input的方法
2018/08/06 Javascript
解决百度Echarts图表坐标轴越界的方法
2018/10/17 Javascript
IE8中jQuery.load()加载页面不显示的原因
2018/11/15 jQuery
JavaScript 空间坐标的使用
2020/08/19 Javascript
[06:04]DOTA2国际邀请赛纪录片:Just For LGD
2013/08/11 DOTA
[06:45]DOTA2卡尔工作室 英雄介绍幻影长矛手篇
2013/07/12 DOTA
Python多维/嵌套字典数据无限遍历的实现
2016/11/04 Python
Python OpenCV中的resize()函数的使用
2019/06/20 Python
python实现自动化上线脚本的示例
2019/07/01 Python
django-初始配置(纯手写)详解
2019/07/30 Python
python 中的paramiko模块简介及安装过程
2020/02/29 Python
python模拟点击在ios中实现的实例讲解
2020/11/26 Python
新锐科技Java程序员面试题
2016/07/25 面试题
精彩广告词大全
2014/03/19 职场文书
广告学专业求职信
2014/06/19 职场文书
学校学习雷锋活动总结
2014/07/03 职场文书
工作作风承诺书
2014/08/30 职场文书
12.4全国法制宣传日活动方案
2014/11/02 职场文书
2014年党风廉政建设工作总结
2014/11/19 职场文书
sql server删除前1000行数据的方法实例
2021/08/30 SQL Server