通过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制作静态网站的模板框架(四)
Oct 09 PHP
利用php来自动调用不同服务器上的flash
Oct 09 PHP
PHP实现用户认证及管理完全源码
Mar 11 PHP
php中用数组的方法设置cookies
Apr 21 PHP
通过PHP的内置函数,通过DES算法对数据加密和解密
Jun 21 PHP
php发送post请求函数分享
Mar 06 PHP
php实现点击可刷新验证码
Nov 07 PHP
PHP常用函数总结(180多个)
Dec 25 PHP
老生常谈PHP面向对象之命令模式(必看篇)
May 24 PHP
Phpstorm+Xdebug断点调试PHP的方法
May 14 PHP
浅谈PHP中的Trait使用方法
Mar 22 PHP
浅谈PHP5.6 与 PHP7.0 区别
Oct 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
setcookie中Cannot modify header information-headers already sent by错误的解决方法详解
2013/05/08 PHP
php使用递归函数实现数字累加的方法
2015/03/16 PHP
CI框架中redis缓存相关操作文件示例代码
2016/05/17 PHP
Laravel框架使用技巧之使用url()全局函数返回前一个页面的地址方法详解
2020/04/06 PHP
javascript div 弹出可拖动窗口
2009/02/26 Javascript
为jQuery增加join方法的实现代码
2010/11/28 Javascript
两个数组去重的JS代码
2013/12/04 Javascript
利用CSS3在Angular中实现动画
2016/01/15 Javascript
js实现二级导航功能
2017/03/03 Javascript
利用Jasmine对Angular进行单元测试的方法详解
2017/06/12 Javascript
使用Node.js实现ORM的一种思路详解(图文)
2017/10/24 Javascript
nodejs操作mongodb的增删改查功能实例
2017/11/09 NodeJs
vue2.0实现前端星星评分功能组件实例代码
2018/02/12 Javascript
createObjectURL方法实现本地图片预览
2019/09/30 Javascript
解决Vue使用bus总线时,第一次路由跳转时数据没成功传递问题
2020/07/28 Javascript
uni-app 自定义底部导航栏的实现
2020/12/11 Javascript
jQuery实现穿梭框效果
2021/01/19 jQuery
[01:19:23]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第二场
2018/04/06 DOTA
python 连接sqlite及简单操作
2017/06/30 Python
python列表删除和多重循环退出原理详解
2020/03/26 Python
基于SQLAlchemy实现操作MySQL并执行原生sql语句
2020/06/10 Python
解决PyCharm IDE环境下,执行unittest不生成测试报告的问题
2020/09/03 Python
CSS 3.0 结合video视频实现的创意开幕效果
2020/06/01 HTML / CSS
HTML5 Canvas的性能提高技巧经验分享
2013/07/02 HTML / CSS
Perry Ellis官网:美国男士品味服装
2016/12/09 全球购物
爱普生美国官网:Epson美国
2018/11/05 全球购物
Chain Reaction Cycles俄罗斯:世界上最大的在线自行车商店
2019/08/27 全球购物
英国No.1体育用品零售商:SportsDirect.com
2019/10/16 全球购物
Zatchels官网:英国剑桥包品牌
2021/01/12 全球购物
理货员的岗位职责
2013/11/23 职场文书
工作作风承诺书
2014/08/30 职场文书
幸福中国演讲稿
2014/09/12 职场文书
乡镇2014法制宣传日活动总结
2014/11/01 职场文书
2014年圣诞节寄语
2014/12/08 职场文书
中学政教处工作总结
2015/08/13 职场文书
2019个人工作态度自我评价
2019/04/24 职场文书