三、VsFTPD与MySQL的组合
◆安装前准备工作
安装前需要注意的是,VsFTPD默认配置中需要“nobody”用户,确保Linux系统中有该用户。VsFTPD默认配置中需要“/usr/share/empty”目录,确保Linux系统中有此目录。
VsFTPD提供匿名FTP服务时,需要“ftp”用户和一个有效的匿名目录/var/ftp,使用下列命令建立用户、目录和目录的相关安全设置。匿名目录也可以改成自己喜欢的目录并使匿名用户具有读写权限。
#useradd -d /var/ftp ftp
#chown root.root /var/ftp
#chmod og-w/var/ftp
◆切换到vsftpd-2.2.1.tar.gz文件所在的目录执行以下步骤安装:
#tar zxvf vsftpd-2.2.1.tar.g
#cd vsftpd-2.2.1
#make
#make install
请将vsftpd-2.2.1目录中已编译好的二进制文件、手册等复制到相应目录 如果该目录中没有以下的文件):
#cp vsftpd /usr/local/sbin/vsftpd
#cp vsftpd.conf /etc
#cp RedHat/vsftpd.pam /etc/pam.d/ftp
以下两步是复制手册,可以不复制。
#cp vsftpd.conf.5 /usr/local/share/man/man5
#cp vsftpd.8 /usr/local/share/man/man8
◆以standalone模式运行VsFTPD
首先在/etc/vsftpd.conf添加以下内容:
Listen=YES
此参数行表示以独立方式启动vsftpd进程。此时匿名用户已经可以登录,如果想要提供系统用户登录,把下列二行的注释去掉,系统用户的目录就是建立账号时设定的目录:
Local_enable=YES
Write_enable=YES
◆启动VsFTPD
#cd /usr/local/sbin
#./vsftpd&
现在可以进行测试了。
◆支持MySQL的VsFTPD
首先需要建立一个虚拟用户对应的Linux系统账号,可以使用如下命令来完成:
#useradd -s /bin/false –d/storage ftpuser
#passwd ftpuser
#chown –R ftpuser.ftpgroup /storage
#chmod –R go-wrx /storage
#chmod –R u+wrx /storage
◆数据库表ftpusers,字段信息如下:
'userid' text NOT NULL #用户登录账号#
'passwd' text NOT NULL #用户登录密码#
需要注意的是,数据库中必需授权ftpuser用户可以读ftp数据库的ftpusers表,授权这一步一定要正确设置。
◆安装MySQL的PAM验证程序;
#tar zvxf pam_mysql-0.8RC1.tar.gz
#cd pam_mysql-0.8RC1
#./configure --with-mysql=/soft/program/mysql --with-pam-mods-dir=/soft/program/pam_mods
上述参数行用来指定pam_mysql.so文件存放的目录。
--with-openssl
使用此参数行后可以避免make时报有关md5.h的编译错误。
#make
#make install
◆修改/etc/vsftpd.conf打开或更改以下几项:
anonymous_enable=YES
local_enable=YES
guest_enable=YES
guest_username=ftpuser
打开这个参数后便允许虚拟用户上传文件、建立目录等操作。
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
ascll_upload_enable=YES
ascll_download_enable=YES
VsFTPD配置文件中还可以进行更多的设置,如磁盘配额、虚拟用户个人目录的建立、性能与负载控制、FTP被动模式断口设置、安全设置等,读者根据自己的需要进一步的完善。
◆编辑文件
修改/etc/pam.d/ftp中去掉其他的内容,添加以下的内容:
#auth
auth required/soft/program/pam_mods/pam_mysql.so
user=ftpuser passwd=6789host=localhost db=ftp
table=ftpusers usercolumn=userid passwdcolumn=passwd crypt=0
#account
Account required/soft/program/pam_mods/pam_mysql.so
User=ftpuser passwd=6789 host=localhost db=ftp table=ftpusers usercolumn=userid passwdcolumn=passwd crypt=0
涉及到的参数,只要对应前面数据库的设置就可以明白它们的含义。其中:crypt=0,口令以明文方式(不加密)保存在数据库中,crypt=1,口令使用Unix系统的DES加密方式加密后保存在数据库中;crypt=2,口令经过MySQL的password()函数加密后保存。FTP数据库中ftpusers表的授权用户ftpusers和密码必须正确设置。
◆开机自启动VsFTPD
请将vsftpd-2.2.1/xinetd.d/vsftpd文件制到/etc/xinetd.d/中(如果该目录中没有该文件)。此外,还需设置vsftpd.conf中listen和Tcp_Wrappers参数,将其都设置为NO,最后,用ntsysv命令,选中Vsftpd守护进程即可。
通过上面的知识,结合Apache、PHP等软件可以开发许多功能,如自动申请主页空间等,而且使用phpMyAdmin可以以Web方式管理MySQL,很容易的添加和删除用户,这样FTP用户管理就轻松多了。

  1. 用Linux构建高效FTP服务器
  2. 配置记录FTP传输情况的Linux FTP服务器
  3. FTP服务器中将Linux用户限制在自己目录下


相关内容