16. 配置ftp的虚拟用户
vsftp中又三类用户:本地用户,虚拟用户和匿名用户
对于虚拟用户和匿名用户的读写控制是相同的,都是由下列用户控制变量控制的:
guest_username, ftp_username 分别指定两者映射本地用户,登陆后进入映射本地用户的主目录
公用的控制变量:
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
对于虚拟用户和匿名用户都不能切换到登陆目录以外的其他目录。
1)生成虚拟用户口令库文件
cat > logins.txt < < END
user1
pass1
user2
pass2
user3
pass3
END
增加了3个用户,用户名和密码写在一起。
2)使用db_load生成口令库
db_load -T -t hash -f logins.txt /etc/vsftpd-logins.db
3)修改口令文件的权限
chmod 600 /etc/vsftpd-logins.db
4) 编辑生成虚拟用户所需要的PAM配置文件
vim /etc/pam.d/vsftpd
增加两句:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd-logins
account required /lib/security/pam_userdb.so db=/etc/vsftpd-logins
5) 建立虚拟用户要访问目录并设置virtual用户访问权限
useradd -f /home/ftpsite virtual
chmod 700 /home/ftpsite
6) 生成主配置文件/etc/vsftpd.virtual.conf
增加:
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
anon_world_readable_only=NO 使得虚拟用户可以看到目录中内容
chroot_local_user=YES 对本地用户chroot
**
guest_enable=YES
guest_username=virtual 将虚拟用户映射为本地用户virtual
ftp_banner=This is ftp with virtual user
**pam_service_name=vsftpd 指定pam配置文件为vsftpd
7) killall vsftpd
/etc/local/sbin/vsftpd /etc/vsftpd.virtual.conf 重启ftp服务
8) vsftpd允许对不同的虚拟用户的权限进行不同的设置
(1)在/etc/vsftpd.virtual.conf中增加:
user_config_dir=/etc/vsftpd_user_conf
指定不同虚拟用户配置文件的存放路径
(2)mkdir /etc/vsftpd_user_conf
(3)分别创建用户user1和user2的配置文件
cd /etc/vsftpd_user_conf
cat > user1 < < END
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
END
用户user1允许列表,读权限开放,可以上传
cat > user2 < < END
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
END
用户user2允许列表,读权限开放,可以上传,可以建立目录,允许删除目录
(4) kill -HUP nsftpd.PID
重启vsftpd服务
当一个虚拟用户登陆ftp服务器时,vsftpd的守护进程首先查看主配置文件的权限设置,然后再用此用户单独的配置文件中的配置覆盖主配置文件中的重复配置。类似apach中http.conf和.htaccess的关系!
|