分类:
2010-12-30 12:40:51
cd /usr/ports/ftp/vsftpd
make install clean
2. vsftpd的配置文件与启动文件
(1)配置文件的位置 /usr/local/etc/vsftpd.conf
(2)启动文件的位置 /usr/local/libexec/vsftpd
3. vsftpd虚拟用户的配置
vi /usr/local/etc/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NOlisten=YES
secure_chroot_dir=/usr/local/share/vsftpd/empty
background=YESlisten_port=5123 #为了安全,这里修改ftp的端口号
use_localtime=YES
pam_service_name=vsftpd
user_config_dir=/usr/local/etc/vsftpd/
4. 创建虚拟用户目录与用户的配置文件
用哪个系统用户做为虚拟用户的用户,权限就是谁的,例如用www,作为虚拟用户映射的用户。权限就应该为www。通常该方法用于网站的代码的上传。
# mkdir /usr/local/etc/vsftpd
#cd /usr/local/etc/vsftpd
# vi abc
guest_enable=YES
guest_username=apache
local_root=/data/htdocs/www
anon_world_readable_only=no
anon_upload_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
anon_umask=022
用户apache为本地用户,意思是将虚拟用户映射为本地用户(这里可能有问题,apache用户默认的sh为nologin的,用ftp连接的时候发现直接就提示 "500 OOPS: cannot change directory:/nonexistent"),如果为其它用户的话,一定要确认用户有目录的访问权限。
其中上面的一些选项,可以在vsftpd.conf里进行全局配置的,这样再添加用户的时候就方便多了。这里有些配置是重复的.但不受影响的.
5. 安装vsftpd密码认证模块
cd /usr/ports/security/pam_pwdfile
make install clean
用于生成/usr/local/lib/pam_pwdfile.so文件
注:pam_pwdfile.so
6. 创建vsftpd认证模块
创建认证模块,记得清除默认配置文件里的auth和account内容,注释掉也可以。
# cp /etc/pam.d/ftpd /etc/pam.d/vsftpd
#vi /etc/pam.d/vsftpd
auth sufficient /usr/local/lib/pam_pwdfile.so pwdfile=/usr/local/etc/login
account sufficient pam_permit.so
7. 创建用户密码
可以用以下代码来实现用户密码的加密,用于ftp的用户验证。
# vi /usr/local/etc/add_ftp_user.pl
#! /usr/bin/perl -w
#filename: md5pwd.pl
use strict;
#
print "#example: user:passwd\n";
while () {
exit if ($_ =~/^\n/);
chomp;
(my $user, my $pass) = split /:/, $_, 2;
my $crypt = crypt $pass, '$1$' . gensalt(8);
print "$user:$crypt\n";
}
sub gensalt {
my $count = shift;
my @salt = ('.', '/', 0 .. 9, 'A' .. 'Z', 'a' .. 'z');
my $s;
$s .= $salt[rand @salt] for (1 .. $count);
return $s;
}
# chmod +x /usr/local/etc/add_ftp_user.pl
# /usr/local/etc/add_ftp_user.pl
#example: user:passwd
abc:abc
abc:$1$gLAEihTV$jQnPZDk4C8TZSrc.L7gLm/
说明:然后把上面的用户名与密码文件复制到下面的login文件中
# vi /usr/local/etc/login
abc:$1$gLAEihTV$jQnPZDk4C8TZSrc.L7gLm/
9. 启动服务
启动:
/usr/local/libexec/vsftpd
关闭:直接kill掉
#killall vsftpd
10. 测试vsftpd的登录情况
略,和下面的一样.
================================
11.添加新用户
下面我们来添加一个新用户
#/usr/local/etc/add_ftp_user.pl
#example:user:password
haohtml:com
haohtml:$1$b5cRPRVT$MODPUh9H0F1JWaioqbrXB.echo 'haohtml:$1$b5cRPRVT$MODPUh9H0F1JWaioqbrXB.' >> /usr/local/etc/login
添加配置文件:
vi /usr/local/etc/vsftpd/haohtml
将下面内容添加到文件里
local_root=/data/htdocs/haohtmlanon_world_readable_only=noanon_upload_enable=yesanon_mkdir_write_enable=yesanon_other_write_enable=yesanon_umask=022
重启vsfptd 生效
#/usr/local/libexec/vsftpd