1、查看环境
#rpm -qa|grep vsftp
得知系统默认没有安装vsftp
2.安装程序:
插入光盘1
#mount /dev/cdrom
#cd /media/cdrom/RedHat/RPMS
#rpm -ivh vsftpd-2.0.1-5.EL4.3.i386.rpm
3.查看安装位置:
#rpm -qpl vsftpd-2.0.1-5.EL4.3.i386.rpm
4.运行
官方文档推荐run standalone,那么就不用任何设置了,直接运行下面命令:
#/usr/sbin/vsftpd &
此时可以用匿名用户、本地用户以及ftp登陆了。
如果需要run via xinetd,参见/usr/share/doc/vsftpd-2.0.1/INSTALL的Step 5
5.配置
一般来说现在已经能够满足需求了,如需自定义配置,参见/etc/vsftpd/vsftpd.conf
如需配置虚拟用户等高级特性,参见/usr/share/doc/vsftp-2.0.1/EXAMPLE目录及子目录内各个README。
FAQ文档参见/usr/share/doc/vsftp-2.0.1/FAQ
虚拟用户配置
1、VSFTPD采用PAM方式验证虚拟用户。
由于虚拟用户的用户名/口令被单独保存,因此在验证时,VSFTPD需要用一个系统用户的身份来读取数据库文件或数据库服务器以完成验证,这就是VSFTPD的guest用户。这正如同匿名用户也需要有一个系统用户ftp一样。当然,我们也可以把guest用户看成是虚拟用户在系统中的代表。
下面在系统中添加vsftpdguest用户,作为VSFTPD的guest。
# useradd vsftpdguest
2、建立虚拟用户
建立数据库vsftpd,表user,字段name和passwd用于保存虚拟用户的用户名和口令,同时增加两个虚拟用户download和upload
#mysql -p
mysql>create database vsftpd;
mysql>use vsftpd;
mysql>create table user(name char(16) binary,passwd char(16) binary);
mysql>insert into user values ('download',password('download'));
mysql>insert into user values ('upload',password('upload'));
mysql>quit
3、授权vsftpdguest可以读vsftpd数据库的users表。
执行以下命令:
#mysql -u root mysql -p
mysql>grant select on vsftpd.user to identified by 'password';
mysql>quit
如果要验证刚才的操作是否成功可以执行下面命令:
#mysql -u vsftpdguest -ppassword vsftpd
mysql>select * from users;
4、设置MySQL的PAM验证
这里我们要用到一个利用mysql进行pam验证的开源项目()。首先从网站下载它的程序包pam_myql-0.5.tar.gz,复制到/root目录中。在编译安装之前,要确保mysql-devel的RPM包已经安装在你的机器上,如果没有请从RHL安装光盘中安装该包。然后,执行以下命令:
#tar xvzf pam_mysql-0.5.tar.gz
#cd pam_mysql
#make
#make install
make install这一步可能会出现错误,那只好手动将该目录下生成的pam_mysql.so复制到/lib/security目录下。
接下来,我们要设置vsftpd的PAM验证文件。打开/etc/pam.d/vsftp文件,在文件头加入以下内容:
auth sufficient pam_mysql.so user=vsftpdguest passwd=password host=localhost db=vsftpd table=user usercolumn=name passwdcolumn=passwd crypt=2
account sufficient pam_mysql.so user=vsftpdguest passwd=password host=localhost db=vsftpd table=user usercolumn=name passwdcolumn=passwd crypt=2
上面涉及到的参数,只要对应前面数据库的设置就可以明白它们的含义。这里需要说明的是crypt参数。crypt表示口令字段中口令的加密方式:crypt=0,口令以明文方式(不加密)保存在数据库中;crypt=1,口令使用UNIX系统的DES加密方式加密后保存在数据库中;crypt=2,口令经过MySQL的password()函数加密后保存。
其中sufficient表示如果验证通过则跳过后续验证,如果没有通过则继续验证,而使用required则必须通过所有验证。通过这种方式可以同时实现本地用户与虚拟用户,但是由于只要用了guest_enable=YES所有的ftp用户都映射到系统的这个vsftpdguest用户上,所以登录后的主目录都是这个用户的主目录,虽然可以为每个用户配置local_root来指定不同的主目录,但是这样的实现其实对于实际应用的意义不大。因此建议将整个文件改为
auth required pam_mysql.so user=vsftpdguest passwd=password host=localhost db=vsftpd table=user usercolumn=name passwdcolumn=passwd crypt=2
account required pam_mysql.so user=vsftpdguest passwd=password host=localhost db=vsftpd table=user usercolumn=name passwdcolumn=passwd crypt=2
这样必须通过pam验证,那么本地用户也就无法登陆了。
注:一开始使用crypt=2时总是login incorrect,改为0即正常。经查找资料,发现Redhat AS4 中自带的MySQL 4.1, 默认关闭了使用长密码的功能,只要将/etc/my.cnf中的 old_passwd=1 注释掉,重新启动mysqld即可。
#vi /etc/my.cnf
#service mysqld restart
5、虚拟用户的个人目录
现在无论是哪个虚拟用户,登录后所在的目录都是/home/vsftpdguest,即都是guest_username用户的主目录。下面介绍如何为每个虚拟用户建立主目录。首先,在主配置文件中加入以下选项:
#user_config_dir=/etc/vsftpd/virtual_user_conf
然后,生成/etc/vsftpd/virtual_user_conf目录,并在该目录下建立与特定虚拟用户同名的文件:
#mkdir /etc/vsftpd/virtual_user_conf
#cd /etc/vsftpd/virtual_user_conf
#vi download
以上的操作为虚拟用户download建立了个人配置文件/etc/vsftpd/virtual_user_conf/download。
接下来,在download的个人配置文件中将download的主目录修改为/home/vsftpdguest/download,配置选项为:
local_root=/home/vsftpdguest/download
然后,新建download目录,并将权限设为vsftpdguest:
# mkdir /home/vsftpdguest/download
# chown vsftpdguest.vsftpdguest /home/vsftpdguest/download
经过以上设置,download登录VSFTPD后即定向到自己主目录。
6、虚拟用户的高级设置
你可能需要针对每个虚拟用户设置特别的选项,如download用户只能下载不能上传,而upload用户则只能上传不能下载,现在只需在/etc/vsftpd/virtual_user_conf中针对每个用户在其配置文件中作出各自的配置即可。如我的download用户设置为:
local_root=/home/vsftpdguest/download
anon_upload_enable=NO
anon_mkdir_write_enable=NO
upload用户设置为:
local_root=/home/vsftpdguest/upload
download_enable=NO
至此一个ftp已经架设完毕,自己先用着,如需更高阶功能以后再配置:)
|
文件: |
vsftpd.rar |
大小: |
5KB |
下载: |
下载 | |
阅读(1861) | 评论(1) | 转发(0) |