配置 FTP 虚拟用户

来源:互联网 发布:js重置table 编辑:程序博客网 时间:2024/05/29 18:09
原理:   虚拟用户,顾名思义,并不是一个合法的Linux系统帐户,但是他可以用来登陆该系统上运行的FTP服务器.当用户在连接上FTP服务器后,会被要求输入用户名和密码.FTP服务器在拿到这个用户名和密码后,会调用相应的PAM认证模块对,和系统中的FTP认证文件进行相比较.如果该用户名和密码与FTP认证文件中的某条记录相符,就通过认证,然后该帐户就被映射成一个Linux下的本地帐户,然后根据使用该本地帐户对FTP资源进行访问.否则则断开该连接请求

1、安装
yum -y install vsftpd
yum -y install db4
2、创建虚拟用户文件
cd /etc/vsftpd
vim vlogin.txt      #基数行是账号,偶数行是密码,
wn
wn
weshow
weshow
3、生成pam验证用的文件
db_load -T -t hash -f /etc/vsftpd/vlogin.txt /etc/vsftpd/vlogin.db

4、修改pam对vsftpd的参数文件,使pam能找到vlogin.db
cd /etc/pam.d
vim vsftpd
屏蔽所有行,加上(如果是32位  lib64  改成  lib  )
auth  required /lib64/security/pam_userdb.so db=/etc/vsftpd/vlogin
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vlogin

ubuntu用户pam_userdb.so文件的路径可能不同

5、修改vsftpd主参数文件(不要有空格)
cd /etc/vsftpd
vim vsftpd.conf
在最后加上
pasv_max_port=51000 //有时候pasv连接会很慢,因为端口问题,这里限制端口
pasv_min_port=50000
pam_service_name=vsftpd     #调用/etc/pam.d/vsftpd
guest_enable=YES    # 开启虚拟用户
guest_username=virtual   # 虚拟用户映射的本地账户
user_config_dir=/etc/vsftpd/vlogin_user  # 虚拟用户配置目录
chroot_local_user=YES  #不能跳出指定根目录
#virtual_use_local_privs=YES  #是虚拟用户和主目录权限相同
#userlist_enable=YES  #user_list文件中的用户不能访问FTP

6、创建虚拟用户的宿主用户
useradd -d /home/ftpsite virtual
chmod 777 /home/ftpsite

如果是ubuntu用户
chmod 555 /home/ftpsite


 7、配置虚拟用户各自的权限文件(不要有空格)
mkdir  -p /etc/vsftpd/vlogin_user     (跟vsftpd.conf中的user_config_dir的值要一致)
cd /etc/vsftpd/vlogin_user
wn用户添加自己的权限,创建wn的权限文件,文件名和用户名要相同
vim wn
添加
anon_world_readable_only=YES//表示用户可以浏览FTP目录和下载文件
anon_upload_enable=YES//表示用户可以上传文件
anon_mkdir_write_enable=YES//表示用户有创建和删除目录的权限
anon_other_write_enable=YES//表示用户具有文件改名和删除文件的权限
anon_umask=022  //设置用户上传文件后的权限,如果是077,则不能上传文件夹,因为该文件夹不能写

要让用户只能上传不能删除
anon_other_write_enable=NO
或者用这一套配置
anon_umask=022
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
cmds_allowed=ABOR,APPE,CWD,CDUP,FEAT,LIST,MKD,MDTM,PASS,PASV,PWD,QUIT,RETR,REST,STOR,STRU,TYPE,USERm| 
7、增加用户fang
cd /etc/vsftpd
vim vlogin.txt 
在最后增加
fang
fang

vlogin.txt 更新了  对应的vlogin.db也要更新
db_load -T -t hash -f /etc/vsftpd/vlogin.txt /etc/vsftpd/vlogin.db


0 0