ftp建立虚拟用户实现文件上传和下载

环境 centos7

1.开启vsftpd服务

2.检查vsftpd服务是否开启

3.添加虚拟用户口令文件

vi etc/vsftpd/vuser.txt

4.生成虚拟用户口令认证文件

如果没有db_load口令认证命令,则需要安装

yum -y install db4-utils

如果有,那么直接把文档转变为认证文件

db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db

5.编辑vsftpd的PAM认证文件

vi /etc/pam.d/vsftpd

auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser account required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser

#注释掉其他行,加入此两行即可

#注释掉其他行,可以禁止本地用户登录,因为本地用户登录时的验证依然依赖这个文件

6.建立本地映射用户并设置宿主目录权限

useradd -d /home/vftproot -s /sbin/nologin vuser

#此用户不需要登录,只是映射用户 #用户名必须和下一步配置文件中一致

然后查看该目录的权限

发现权限是700,也就是说只有所有者才能rwx权限,其他人都没有权限,所以需要修改该目录下的权限,否则其他用户无法访问该目录

7.修改配置文件

vi /etc/vsftpd/vsftpd.conf

加上以下配置

#开启虚拟用户

guest_enable=YES

#FTP虚拟用户对应系统用户

guest_username=vuser

#PAM认证文件(默认存在)

pam_service_name=vsftpd

8.

调整虚拟用户权限

vi /etc/vsftpd/vsftpd.conf

#关闭匿名用户登陆,更加安全(不影响虚拟用户登陆

) anonymous_enable=NO

#给虚拟用户设定权限,允许所有虚拟用户上传

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

9.重启vsftpd服务并测试
service vsftpd restart

在测试过程中,如果遇到了530失败,则可能是pam验证文件路径错误,可以用find命令查找pam_userdb.so验证文件,然后从新修改vsftpd文件,改为正确的路径

而遇到远征主机关闭连接,则可能是防火墙的问题,需要运行一下命令

关闭防火墙 iptables -F

关闭SELinux setenforce 0(用sestatus查看如果发现selinux还是enable状态的话,则需要修改etc/selinux/config 中的enforcing 模式改为disabled, 然后重启)

如果遇到这种情况的话,是因为如果你开启了chroot_local_user=YES这个选项把用户限制在了主目录(用户不能跳出主目录),从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了。

果然,因为我们是该目录的所有者,拥有7权限,所以只要我们使用chown命令把所有者改成root就能登录了

 

因为我们在该目录下没有写权限,所以是只能下载文件而不能上传文件的

解决方法:在根目录下创建一个755所属自己的目录,在该目录下进行上传文件和下载

成功上传!

10.为每个虚拟用户建立自己的配置文件,单独定义权限

之前定义了两个虚拟用户,一个是test1,一个是test2,现在来单独配置一下test1的独立配置

(1)修改配置文件

vi /etc/vsftpd/vsftpd.conf  

#指定保存虚拟用户配置文件的目录  

user_config_dir=/etc/vsftpd/vusers_dir

(2)手工建立目录

mkdir /etc/vsftpd/vusers_dir

(3)为每个虚拟用户建立配置文件

vi /etc/vsftpd/vusers_dir/test1(虚拟用户名),加入一下权限

 #允许此用户上传

 anon_upload_enable=YES

 anon_mkdir_write_enable=YES

 anon_other_write_enable=YES  

#给虚拟用户指定独立的上传目录

 local_root=/tmp/test1

然后登陆测试

独立配置之后,使用test1登陆就会来到配置的目录下(/tmp/test1/)

因为和上面的那些操作几乎是一样的,这里就不演示了,如果不能登陆成功,记得检查根目录是否具有写权限,然后改掉写权限就可以了,最重要的一点就是配置不要错了,配置文件不能存在空格,否则也会报错!

原文地址:https://www.cnblogs.com/zhp-king/p/6766286.html