通过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 相关文章推荐
生成sessionid和随机密码的例子
Oct 09 PHP
php mysql索引问题
Jun 07 PHP
php实现无限级分类实现代码(递归方法)
Jan 01 PHP
深入apache配置文件httpd.conf的部分参数说明
Jun 28 PHP
php中{}大括号是什么意思
Dec 01 PHP
PHP轻量级数据库操作类Medoo增加、删除、修改、查询例子
Jul 04 PHP
destoon实现底部添加你是第几位访问者的方法
Jul 15 PHP
ThinkPHP采用实现三级循环代码实例
Jul 18 PHP
thinkphp视图模型查询提示ERR: 1146:Table 'db.pr_order_view' doesn't exist的解决方法
Oct 30 PHP
php 魔术方法详解
Nov 11 PHP
PHP动态输出JavaScript代码实例
Feb 12 PHP
PHP不使用递归的无限级分类简单实例
Nov 05 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的引用计数机制
2013/06/14 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
2020/02/18 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
JS判断是否为数字,是否为整数,是否为浮点数的代码
2010/04/24 Javascript
jquery1.4.2 for Visual studio 2010 模板文件
2010/07/14 Javascript
关于js获取radio和select的属性并控制的代码
2011/05/12 Javascript
如何正确使用Nodejs 的 c++ module 链接到 OpenSSL
2014/08/03 NodeJs
jQuery实现返回顶部功能适合不支持js的浏览器
2014/08/19 Javascript
鼠标悬浮停留三秒后自动显示大图js代码
2014/09/09 Javascript
常用的JavaScript WEB操作方法分享
2015/02/28 Javascript
javascript中Date()函数在各浏览器中的显示效果
2015/06/18 Javascript
用jQuery实现优酷首页轮播图
2017/01/09 Javascript
微信小程序商城项目之侧栏分类效果(1)
2017/04/17 Javascript
详解微信小程序 相对定位和绝对定位
2017/05/11 Javascript
详解Node.js模板引擎Jade入门
2018/01/19 Javascript
js自定义input文件上传样式
2018/10/26 Javascript
微信公众平台 发送模板消息(Java接口开发)
2019/04/17 Javascript
mpvue微信小程序的接口请求fly全局拦截代码实例
2019/11/13 Javascript
[01:23]一分钟告诉你 DOTA2为什么叫信仰2
2014/06/20 DOTA
[46:20]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
[03:01]完美盛典趣味短片 DOTA2年度最佳&拉胯英雄
2019/12/07 DOTA
[01:01:23]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第一场 11.26
2020/11/30 DOTA
python计算牛顿迭代多项式实例分析
2015/05/07 Python
利用Python yagmail三行代码实现发送邮件
2018/05/11 Python
python检测主机的连通性并记录到文件的实例
2018/06/21 Python
python Popen 获取输出,等待运行完成示例
2019/12/30 Python
浅谈numpy中np.array()与np.asarray的区别以及.tolist
2020/06/03 Python
matplotlib bar()实现多组数据并列柱状图通用简便创建方法
2021/02/24 Python
Python 调用C++封装的进一步探索交流
2021/03/04 Python
丝芙兰美国官网:SEPHORA美国
2016/08/03 全球购物
NBA德国官方网上商店:NBA Store德国
2018/04/13 全球购物
Homestay中文官网:全球寄宿家庭
2018/10/18 全球购物
北京-环亚运商测试题.net程序员初步测试题
2013/05/28 面试题
应届毕业生求职信范文
2013/12/18 职场文书
Python使用BeautifulSoup4修改网页内容
2022/05/20 Python