如何在FreeBSD上用PHP实现在线添加FTP用户

| 收藏本文 下载本文 作者:少年范特西

这次小编给大家整理了如何在FreeBSD上用PHP实现在线添加FTP用户(共含3篇),供大家阅读参考。同时,但愿您也能像本文投稿人“少年范特西”一样,积极向本站投稿分享好文章。

如何在FreeBSD上用PHP实现在线添加FTP用户

篇1:如何在FreeBSD上用PHP实现在线添加FTP用户

近日领导要我策划一个网页设计大赛和Flash创作大赛,要求必须实现在线报名和上传作品,通过FreeBSD+Apache+PHP+Mysql+FTP我实现了该要求。

实现在线报名和上传作品的思路是利用网页表单收集用户填写的资料存储到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了,代码如下:

{ $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{?>

申请FTP账号

申请FTP账号

账号名称:

密码:

把这个文件上传到服务器上运行,如图所示:

希望我的文章能给您带去一些帮助,有什么问题可以联系我QQ:41185138。

篇2:用PHP实现Ftp用户的在线管理

领导要我策划一个网页设计大赛和Flash创作大赛,要求必须实现在线报名和上传作品,通过FreeBSD+Apache+PHP+Mysql+FTP我实现了该要求。

实现在线报名和上传作品的思路是利用网页表单收集用户填写的资料存储到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 Cc ‘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了,代码如下:

以下是引用片段:

{ $rootpasswd=“adminpassword”; //定义管理员密码

$creatuser =“su --login root -c 'echo ”.$userpasswd.“ | pw useradd ”.$username.“ -s /bin/ftponly -g ftpuser Cs /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{?>

申请FTP账号

申请FTP账号

账号名称:

密码:

篇3:用高速DSP在频域上实现LFM信号的实时脉冲压缩论文

用高速DSP在频域上实现LFM信号的实时脉冲压缩论文

摘要:

时宽带宽(TB)积较小的线性调频(LFM)信号的脉冲压缩可用A100等器件构成的横向滤波器实现;对于TB积较大的LFM信号,在时域上对其进行脉冲压缩所需的计算量和硬件量太大。本文介绍用TMS320C6201 DSP在频域上实现大TB积LFM信号的实时脉冲压缩,内容包括海明加权、循环卷积、长数据分段迭加、软件流程图和硬件框图。实验结果表明,当雷达重要周期为300Hz时,对TB积为320的LFM信号进行脉冲压缩后最大副瓣电平为-42.3分贝。

关键词:LFM 脉冲压缩 信号处理器 实时信号处理 匹配滤波

为提高脉冲雷达或脉冲声纳的作用距离,通常有两个途径,其一是增加发射机峰值功率;其二是加大发射脉冲的宽度来提高平均发射功率。发射机的发射功率峰值受电源、功率放大器、功率传输通道(功率过大,波导等器件易打火)等限制;简单增加发射脉冲的宽度,相当于降低发射信号的带宽。为使相同时宽的脉冲增加带宽,可对发射脉冲内的载波进行线性调频;在接收端对线性调频的回波信号再进行脉冲压缩处理。经脉冲压缩后信号所具有的大的带宽能够提高测距精度和距离分辨力。宽脉冲内大的时宽能够提高测速精度和速度分辨力。因此脉冲压缩技术广泛用于雷达、声纳等系统,其中以线性调频信号的应用最为广泛。

1、线性调频信号的脉冲压缩。

线性调频(LFM)信号是一种瞬时频率随时间呈线性变化的信号。零中频线调频信号u(t)可表示为u(t)=exp(jπBt2/T) -T/2。式中,T为线性调频信号的时宽,B为带宽。

对线性调频信号的脉冲压缩处理,就是让信号通过一个与其相匹配的滤波器实现的。与u(t)匹配的滤波器的冲激响应为:h(t)=exp(-jπBt2/T) -T/2。

u(t)经匹配滤波器压缩后的输出g(t)为:g(t)=u(t) *h(t) T。

线性调频信号的突出优点是匹配滤波器对回波信号的多普勒频移不敏感,即使回波信号有较大的多普勒频移,原来的匹配滤波器仍能起到脉冲压缩的使用。这将大大简化信号处理系统。

经性调频信号经匹配滤波器后的输出脉冲g(t)具有sinc(t)函数型包络,其最大副瓣电平为主瓣电压的13.2dB。在多目标环境中,旁瓣会埋没附近较小目标的信号,引起目标丢失。为了提高分辨多目标的能力,可以采用加权技术。设时域加权函数为w(t),则加权输出为:g(t)=u(t)*[h(t) ・w(t) ] (4)。

引入加权函数实质上是对信号进行失配处理。以抑制旁瓣,其副作用是输出信号的包络主瓣降低、变宽。即旁瓣抑制是以信噪比损失及距离分辨力变坏作为代价的。加权函数可以选择海明加权函数、余弦平方加权函数等。海明加权函数为:w(t)=0.08+0.92・cos 2(πf/B) (5)。

在计算机中处理时,需要将信号离散化。当信号时宽很大时,在时域上计算卷积耗时较大。因此改为在频域上实现LFM信号的脉冲压缩。

G(n)=U(n) ・H(n) (6)

式中U(n)=FFT[u(n)] (7)

H(n)=FFT[h(n) ・w(n)] (8)

则:g(n)=IFFT[G(n)] (9)

在频域上LFM信号的脉冲压缩用循环卷积替代线性卷积进行计算。假设u(n)的长度为N1,h(n)的长度为N2,G(n)的长度为N。当N

2、LFM信号实时脉冲压缩的实现。

(1)TMS320C6201简介。

TMS320C6201(以下简称为C6201)是美国TI公司1997年推出的`定点DSP芯片。高速的数据处理能力和对外接口能力使其使用于雷达、声纳、通信、图像等实时处理系统。

C6201 DSP采用甚长指令字(VLIW)结构,单指令字长32Bit,8个指令组成一个指令包,总字长为256Bit。芯片内部设置了专门的指令分配模块,可以将每个256Bit的指令包同时分配到8个处理单元并由8个单元同时运行。最大处理能力可达2400MIPS。

C6201的存储器寻址空间为32Bit。外部存储器接口包括直接同步存储器接口,可与同步动态存储器(SDRAM)、同步突发静态存储器(SBSRAM)连接,主要用于大容量、高速存储;还包括直接异步存储器接口,可与静态存储器(SRAM)、只读存储器(EPROM)连接,主要用于小容量数据存储和程序存储;还有直接外部控制器接口,可与FIFO寄存器连接。

TI公司推出了世界上第一个效率可达70%――80%的汇编语言级C编译器。对于高速实时应用,采用C语言和C6000线性汇编语言混合编程的方法,能够把C语言的优点和汇编语言的高效率有机地结合在一起,代码效率达到90%以上。

(2)硬件构成。

雷达中频信号经抗混迭滤波后,将其频带限制在一定的范围内。再经A/D变换后便得到中频直接采样的数据。双口RAM用于存放中频直接采样的原始数据。

TMS320C6201用于完成LFM信号的实时脉冲压缩处理,包括FFT变换、中频信号正交化、移频、脉压、IFFT等工作。

SDRAM为高速动态存储器,用于存放LFM信号脉冲压缩处理过程中的中间数据。

处理后的数据及处理过程中的数据均可送至PC机作保存、显示等相关处理。

(3)工作流程。

在相参雷达、声纳和某些通信系统中,通常需要提取带限信号的同相分量(I)和正产分量(Q)。传统的方法是在同相支路和正交支路中把带限信号混频到基带(零中频),然后用与信号带宽相应的频率进行采样,以获得基带上的同相分量和正交分量。这种传统的正交采样方法存在的最大问题是I、Q两个支路总存在一定的增益不平衡和相位误差。

为了克服I、Q支路的幅相不平衡,本文采用中频直接采样的方法,即只用一个支路和一个A/D变换器。中频直接采样的数据通过适当的处理就可获得零中频上的正交信号数据。

FFT变换将中频直接采样的数据从时域变换到频域。

正交化的过程是从中频数据获得两路正交信号数据的过程,亦即从中频信号频谱获取正交信号频谱的过程。当采样频率fs、载频f0和信号带宽B之间满足f0=(2M-1) ・fs/4关系(一般M=1,fs>2B)时,中频信号频谱的正频率部分跟相应正交信号频谱是完全吻合的。

为了获得零中频上的正交信号频谱,必须将中频上的正交信号频谱沿频轴移动一个载频数量的大小,即移频。

用于脉冲压缩的匹配滤波器的时域值及基频谱在整个工作过程中是不变的。零中频正交信号的数据经脉冲压缩后,再做IFFT得到最终的脉冲压缩时域数据。

(4)软件计算及其优化。

在整个工作流程中,FFT及IFFT运算占用的比例很大,因此在LFM信号的实时脉冲压缩过程中,FFT程序的优化至关重要。

FFT运算采用基2时域抽取算法。在FFT的循环过程中,需要计算旋转算子。这是一个三角浮点运算,用C6201运算速度慢,很难达到实时处理的要求。所以在FFT运算之前把旋转算子计算好,放在数据存储器中加以调用。而且旋转算子的调用很有规律,寻址比较方便,所以不需花费很大的计算量。这样大大提高了FFT的运算速度。

N点FFT运算需要1/2(N・log2N)复数乘法。乘法花费指令周期较多,因此复数乘法的优化比较重要。在FFT程序中,主要采用了以下优化措施:

①采用short数据类型。

FFT中的数据类型为short,字长16位。模拟信号经A/D变换后长度为12位,与16位比较接近,这样能够很好的节省内存资源。由于TMS320C6201为定点型芯片,用它来计算整数类型的代数和运算,能够发挥其最大的运算优势。而且,C6000系列的指令集内只有16位乘法指令,这样采用16位字长,能够节省乘法运算的指令周期数。

②使用字访问short类型。

在复数乘法中,读、写内存比较频繁。读操作花费指令周期较多(需5个指令周期)。如果以short类型(字长16位)读、写内存,将要读内存6次,写内存4次。由于C6000指令集内的读写操作的数据可以是32位。所以可以采用int类型(字长32位)读、写内存,即每访问一次内存,操作数为两个Short数据。这样只需读内存3次,写内存2次,花费时间可以减少一半。

③使用内联函数。

C6000编译器提供了大量的内联函数。如16位乘法算:_mpy(),_mpyh(),_mpyh1(),_mpylh()等。内联函数可快速优化C代码,在程序中应尽量使用。

(5)长数据分段迭加。

当一个雷达重复周期内采样的数据长度很大而相应匹配滤波器的数据很短时,可采用长数据分段迭加来减小运算量。即将信号长数据分散成若干个小段(每小段数据长度都与匹配滤波器数据长度相当),对每小段数据分别作FFT处理后再相加。实验结果表明:当信号数据长度越大时,采用此种方法相对于通常补零FFT方法的优越性越大,可以满足LFM信号实时脉冲压缩的要求。

通用DSP技术的不断发展,给实时雷达信号处理系统的实现带来了极大的方便。本文阐述了LFM信号实时脉冲压缩为雷达实时信号处理的一个实例,对于雷达声或纳等设备的实时信号处理具有一定的参考价值。

教你在IE上查看QQ用户资料的方法

用岁月在莲上写诗的阅读理解

用岁月在莲上写诗阅读附答案

用岁月在莲上写诗练习题及答案

如何在FreeBSD上用PHP实现在线添加FTP用户(合集3篇)

欢迎下载DOC格式的如何在FreeBSD上用PHP实现在线添加FTP用户,但愿能给您带来参考作用!
推荐度: 推荐 推荐 推荐 推荐 推荐
点击下载文档 文档为doc格式

相关文章

热门推荐

HOT

猜你喜欢

NEW
点击下载本文文档