实现在线报名和上传作品的思路是利用网页表单收集用户填写的资料存储到Mysql数据库内,同时以该用户的注册名创建一个FTP上传账号并创建该用户的相应目录。
Ftp服务器是系统默认带的,采用系统用户的用户名和密码,创建系统用户就等于创建FTP用户,FreeBSD是属于UNIX阵营的操作系统,它没有象Linux一样的useradd和groupadd等创建用户和组的命令,其取而代之的是pw命令加上相应参数来实现,在Freebsd上以管理员的身份创建一个用户的命令是
复制代码 代码如下:
echo | pw useradd [-g][groupname] [-s][shelldir][-h 0]
参数g指定用户组,参数s指定用户的shell。
如果是普通用户登陆的话还必须用到su命令,调用的方法是
复制代码 代码如下:
su root –c ‘echo | pw useradd [-g][groupname] [-s][shelldir][-h 0] '
执行之后系统会要求输入管理员密码,输入密码就可以以管理员的身份执行这个命令了。
实现这步操作的主要难点在于如何通过PHP来调用上面这些系统命令去创建一个用户,本例是使用PHP中的popen()函数来实现的,该函数执行指令打开文件,语法是int popen(string command, string mode),其打开的文件只能是单向的,只能读或只能写,对应的“string mode”为'r'或'w',“string command” 就是命令字符串,在对文件的操作上可使用 fgets()、fgetss()与fputs()函数,本例用fputs()函数往文件里面输入管理员密码。若是开档发生错误将返回 false 值,最后函数要记得调用pclose()关闭。
下面我们来规划一下FTP用户的组,事先我们先用pw groupadd ftpuser创建ftpuse组,让在线申请的用户为这个组的成员。为了安全起见,我们不应该给FTP用户Telnet权限,所以我们还要专门给他们创建一个shell,使得他们不能通过Telnet正常登陆系统,方法如下:先创建一个文件/bin/ftponly
复制代码 代码如下:
#!/bin/csh
/bin/cat << XX
You can ony use this username to login ftp server!
And you can not use it to telnet to this system! XX
sleep 10
该文件中XX之间就是显示给用telnet登陆的用户看的信息。信息显示10秒钟就自动退出了。最后不要忘记用chmod +x /bin/ftponly给这个文件可执行属性。
然后在/bin/shell文件中添加“/bin/ftponly”,在以后的命令里面我们就可以利用pw中-s参数把这个shell指定给FTP用户了。
最后还要注意一个问题,su命令仅仅是wheel管理组的用户成员才可以使用,当PHP调用su命令的时候也必须以wheel组成员的身份运行,否则系统拒绝运行,而PHP运行系统命令的身份就是Apache Web服务器运行的身份,初始的用户名和用户组都是nobody,所以先得建立一个wheel组的用户www供apache使用,接着更改Apache的配置文件httpd.conf中的user为www,group为wheel,重新启动Apache,就可以以新用户身份运行了。
下面可以创建PHP源文件checkin.php了,代码如下:
复制代码 代码如下:
<?if (($username!="") and ($userpasswd!=""))//判断是否有表单提交了信息
{ $rootpasswd="adminpassword"; //定义管理员密码
$creatuser ="su --login root -c 'echo ".$userpasswd." | pw useradd ".$username." -s /bin/ftponly -g ftpuser –s /bin/ftponly -h 0' "; //这是利用su和pw命令创建用户的用到的字符串
$fp=popen($creatuser,"w"); //调用popen()函数执行字符串中的命令,返回文句柄给$fp
fputs($fp,$rootpasswd); //写入管理员密码到文件$fp,相当于输入密码给系统
pclose($fp);//关闭文件
$creatdir="su --login root -c 'mkdir /home/".$username."'";//创建用户目录的命令字符串
$fp=popen($creatdir,"w");//执行命令创建用户目录
fputs($fp,$rootpasswd); //输入管理员密码
pclose($fp);
$creatdir="su --login root -c 'mkdir /home/".$username."/public_html'";
$fp=popen($creatdir,"w"); //执行命令创建用户网站根目录
fputs($fp,$rootpasswd); //输入管理员密码
pclose($fp);
$creatdir="su --login root -c 'chown ".$username." /home/".$username."'"; //改变用户目录的所有者为用户自己,初始为运行Apache的用户www。
$fp=popen($creatdir,"w"); //执行命令
fputs($fp,$rootpasswd); //输入管理员密码
pclose($fp);
$creatdir="su --login root -c 'chown ".$username." /home/".$username."/public_html'"; //改变网站根目录的归属
$fp=popen($creatdir,"w");
fputs($fp,$rootpasswd);
pclose($fp);
echo "恭喜".$username.",您的的FTP账号已经申请成功!请到FTP上登陆,请注意,您没有Telnet权限";}
else{?>
<html>
<head>
<title>申请FTP账号</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body bgcolor="#FFFFFF">
<div align="center">
<p>申请FTP账号</p>
<form method=POST action="<? echo $PHP_SELF; ?>">
<table width="36%" border="0">
<tr>
<td width="40%">
<div align="right">账号名称:</div>
</td>
<td width="60%">
<input type="text" name="username">
</td>
</tr>
<tr>
<td width="40%">
<div align="right">密码:</div>
</td>
<td width="60%">
<input type="password" name="userpasswd">
</td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="Submit" value="申请"></td>
</tr>
</table>
</form>
</div><?}?>
</body>
</html>
相关推荐:
AI免费生成文字,打造创作新时代
ChatGPT最近不好用了?了解这些背后的原因与解决方案,ai sketcher
SEO关键词是什么意思?全面解析SEO关键字的核心作用,华为ai音箱 百度ai音箱
优化综合:引领高效发展的智慧之道,电影营销的推广方式
SEO前的准备工作:如何让网站为搜索引擎优化做好充分准备,SEO_网站排名优化_网络推广
AI做文章:引领智能创作的未来
GPT版本全解:从基础到高级,如何选择最适合你的方案?,韩国ai人工智能
seo网站是什么找行者SEO,seo分析网站 ,ai图文梅花
用AI写科普文章:科技改变写作的未来
ChatGPT桌面应用安装了,不能用?解决方案全攻略,让你轻松畅享AI助手!,绫波丽ai智能
什么是亚马逊seo策略,亚马逊的seo推广是什么 ,天天学术ai写作优惠券
ZBlog:开启你的个人网站新时代,轻松搭建与管理,二手手机营销推广方案
SEO外链技巧:提升网站排名的秘密武器,ai视频生日祝福
实用AI工具:提升效率、优化生活的科技利器
SEO怎么设置:让你的网站快速登上搜索引擎首页的秘密,Ai压印分色
Chatget免费网站版无需登录,畅享无限对话体验!,工业 Ai 视觉检测
AI智能工具的无限可能:未来已来,你准备好了吗?
2025年整站SEO排名优化策略:让你的网站脱颖而出,id排版ai
ChatGPT您的应用遇到问题,无法正常启动?如何解决并重新体验智能助手的魅力!,男头ai关键词
ChatGPT异常了:人工智能的极限与突破,ai and ethics
seo线索收集是什么,seo线索收集是什么意思 ,ai生活ai童童
目前国内最好的AI人工智能软件:未来新篇章
seo深度优化插件是什么,深度优化手机软件 ,ai的缩写
pbootcms前端翻译插件-轻松实现网站多语言支持,拓展全球市场,st ai绘画
SEO韩国:为您开启国际市场的增长之门,seo文章标题有哪些
ChatGPT无法加载?检查网络并尝试重启,助您快速恢复畅通体验,burj ai
SEO模板:提升网站排名,助你快速抢占搜索引擎流量高地,选择seo职业缺点
ChatGPT不能访问,我的学术水平直线下降,泰州大数据ai艾灸价格
SEO搜外:全球搜索引擎优化的秘密武器,如何选择网站建设类型呢
ChatGPT崩溃!用户反馈网页端无法访问,修复急需,ai院子
怎么用AI生成文章免费版,高效创作从此开始!
SEO收费如何选择合适的SEO服务,提升网站排名并增加曝光度,做网站优化哪家实惠
二次创作的魅力与潜力:创意无限的数字时代,天长外贸网站建设
seo适合看什么书,自学seo书籍推荐 ,ai少女 刻晴
产品经理seo是什么,产品经理seo是什么意思 ,ai政府公文写作 软件
“新热度”:引领潮流的力量,如何趋势的脉搏,浙江通用网站建设特点
SEO优化需要花钱吗?从零起步,如何让SEO成为企业的“隐形财富”,字体如何往ai里面倒
SEO埋词技巧,如何提升网站排名?,贵州营销推广方法
ChatGPT登录503错误?轻松解决,快速恢复畅享智能体验!,ai怎么加植物材质效果
SEO那么重要,企业如何通过它脱颖而出?,自媒体推广营销的概念
seo资源是什么意思,seo资源怎么打开 ,梅州ai自动插件加工
打造高效创作体验,写文章AI软件重塑内容生产力
ChatGPT遇到问题?如何解决“您的应用遇到问题,无法正常启动”困境?,ai下载增强版
什么是秀米?全方位了解这款微信公众号排版神器,宁波全网营销型网站建设
SEO有话:如何用精准优化助力企业在线增长,食品微信营销推广
《SEO教材:打造网站流量的核心利器,教你轻松SEO优化技巧》,咖啡网站建设总结文案
seo矩阵运营中心是什么,seo矩阵运营中心是什么意思啊 ,北京ai特效
seo网站是什么东西,seo网站是什么东西啊 ,ai锯齿消失
ChatGPT模型进化历程:人工智能的智慧革命,ai 喷枪星空
seo稿件是什么意思,seo文章写作要求 ,ai写作未来展望和展望