通过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 相关文章推荐
phpfans留言版用到的install.php
Jan 04 PHP
php网页后退不再出现过期
Mar 08 PHP
php在字符串中查找另一个字符串
Nov 19 PHP
php 页面执行时间计算代码
Dec 04 PHP
php 各种应用乱码问题的解决方法
May 09 PHP
PHP中error_reporting()函数的用法(修改PHP屏蔽错误)
Jul 01 PHP
PHP字符串函数系列之nl2br(),在字符串中的每个新行 (\n) 之前插入 HTML 换行符br
Nov 10 PHP
thinkphp的CURD和查询方式介绍
Dec 19 PHP
ThinkPHP之foreach标签使用概述
Jun 30 PHP
php自定义错误处理用法实例
Mar 20 PHP
什么是OneThink oneThink后台添加插件步骤
Apr 13 PHP
解决安装WampServer时提示缺少msvcr110.dll文件的问题
Jul 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
Zerg建筑一览
2020/03/14 星际争霸
php ob_flush,flush在ie中缓冲无效的解决方法
2010/05/09 PHP
PHP魔术方法的使用示例
2015/06/23 PHP
php实现QQ空间获取当前用户的用户名并生成图片
2015/07/25 PHP
php如何控制用户对图片的访问 PHP禁止图片盗链
2016/03/25 PHP
既简单又安全的PHP验证码 附调用方法
2016/06/02 PHP
Yii2使用表单上传文件的实例代码
2017/08/03 PHP
PHP getDocNamespaces()函数讲解
2019/02/03 PHP
PHP面向对象类型约束用法分析
2019/06/12 PHP
jquery多浏览器捕捉回车事件代码
2010/06/22 Javascript
javascript日期格式化示例分享
2014/03/05 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(二)
2016/05/17 Javascript
Vue SSR 组件加载问题
2018/05/02 Javascript
在angular 6中使用 less 的实例代码
2018/05/13 Javascript
详解为生产环境编译Angular2应用的方法
2018/12/10 Javascript
关于AngularJS中几种Providers的区别总结
2020/05/17 Javascript
vscode+gulp轻松开发小程序的完整步骤
2020/10/18 Javascript
利用vue3+ts实现管理后台(增删改查)
2020/10/30 Javascript
Python中的复制操作及copy模块中的浅拷贝与深拷贝方法
2016/07/02 Python
python TCP Socket的粘包和分包的处理详解
2018/02/09 Python
在Windows中设置Python环境变量的实例讲解
2018/04/28 Python
解决python matplotlib imshow无法显示的问题
2018/05/24 Python
Python程序包的构建和发布过程示例详解
2019/06/09 Python
python粘包问题及socket套接字编程详解
2019/06/29 Python
python 缺失值处理的方法(Imputation)
2019/07/02 Python
使用matlab 判断两个矩阵是否相等的实例
2020/05/11 Python
python字典key不能是可以是啥类型
2020/08/04 Python
Python通过format函数格式化显示值
2020/10/17 Python
柒牌官方商城:中国男装优秀品牌
2017/06/30 全球购物
自荐信怎么写呢?
2013/12/09 职场文书
会计电算化专业求职信
2014/06/10 职场文书
医学专业自荐信
2014/06/14 职场文书
公安机关正风肃纪剖析材料
2014/10/10 职场文书
计算机实训报告总结
2014/11/05 职场文书
2015年世界卫生日活动总结
2015/02/09 职场文书
2015秋季幼儿园开学寄语
2015/03/25 职场文书