CentOS7.2Mini部署vsftpd

  1. 实验最终目的:
    1) 实现匿名用户可浏览和下载
    2) 实现把登陆的用户禁锢在自己的家目录中
    3) 实现针对虚拟用户拥有上传、下载、删除等完全权限
  2. 实验步骤:
    一、启动服务
    启动服务: [root@localhost~]# /bin/systemctl start vsftpd.service
    注:不必全关掉selinux防火墙的全部应用:selinux
    [root@localhost ~]# getsebool -a |grep ftp
    ftp_home_dir –> off
    ftpd_anon_write –> off
    ftpd_connect_all_unreserved –> off
    ftpd_connect_db –> off
    ftpd_full_access –> off
    ftpd_use_cifs –> off
    ftpd_use_fusefs –> off
    ftpd_use_nfs –> off
    ftpd_use_passive_mode –> off
    httpd_can_connect_ftp –> off
    httpd_enable_ftp_server –> off
    sftpd_anon_write –> off
    sftpd_enable_homedirs –> off
    sftpd_full_access –> off
    sftpd_write_ssh_home –> off
    tftp_anon_write –> off
    tftp_home_dir –> off
    注:将下面两项开启
    ftp_home_dir –> off
    ftpd_connect_all_unreserved –> off
    #setsebool -P ftp_home_dir 1
    #setsebool -P ftpd_connect_all_unreserved 1

                              建立虚拟用户,使该用户拥有可以上传、下载、删除等权限
    

一、建立虚拟用户 :vi /etc/vsftpd/vftpuser.txt
添加虚拟用户名和密码。奇数行为用户名,偶数行为密码。
ftpadmin
12345678

二、生成虚拟用户口令认证文件 (把刚添加的vftpuser.txt虚拟用户口令转换成系统的口令认证文件)
db_load -T -t hash -f /etc/vsftpd/vftpuser.txt /etc/vsftpd/vu_list.db (注意:当再次添加新的用户时,这条命令需要再次打上)

三、编辑vsftpd的PAM认证 :vi /etc/pam.d/vsftpd
注释掉其他所有内容 并 录入下面两行 (/lib64中的64是指64位操作系统)
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vu_list
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vu_list

四、建立本地映射用户并设置宿主权限 (虚拟用户创建之后,要给虚拟用户映射到一个系统账号)
useradd -d /home/ftp -s /sbin/nologin vftpuser //新建一个虚拟用户的映射账号vftpuser,指定宿主目录为/home/ftp

1、创建虚拟用户根目录 :mkdir -p /home/ftp/pub

2、目录的权限应该是755,owner是root,group是vftpuser
chmod -R 755 /home/ftp
chmod -R 775/home/ftp/pub
chown -R root:vftpuser /home /ftp //这个目录的用户改成root,该目录的组改成 vftpuser

五、编辑 vsftpd.conf :vi /etc/vsftpd/vsftpd.conf
A)、将 anonymous_enable=YES 改为 anonymous_enable=NO (注意:若不希望匿名用户登
录该ftp则设置为NO,否则设置为YES)
B)、查看 pam_service_name=vsftpd 是否为 pam_service_name=vsftpd
C)、添加:user_config_dir=/etc/vsftpd/vsftpd_user //虚拟用户配置文件存放位置
D)、开启虚拟用户 :guest_enable=YES
E)、FTP虚拟用户对应的系统用户 :guest_username=vftpuser
F)、取消下面两行的注释 (用户被锁定在自己的home目录中,不能切换到自己目录以外的
其他目录)
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

这里写图片描述

六、新建chroot_list :touch /etc/vsftpd/chroot_list

七、虚拟用户权限配置
创建虚拟用户目录 :mkdir /etc/vsftpd/vsftpd_user
配置虚拟用户权限 :vi /etc/vsftpd/vsftpd_user/ftpadmin (与你前面新建的用户名要一致)
local_umask=022 //这样虚拟用户上传的文件就可以被匿名用户下载
anon_world_readable_only=no (匿名用户只读,不能下载)
write_enable=yes (可写入) [不能单独使用,相当于写开关]
anon_upload_enable=yes (可上传)
anon_other_write_enable=yes (可删除)
anon_mkdir_write_enable=yes (可创建目录)

八、重启一下vsftpd服务: [root@localhost~]# /bin/systemctl restart vsftpd.service

                             建立匿名用户,匿名用户只拥有可以下载权限

直接编辑 vsftpd.conf :vi /etc/vsftpd/vsftpd.conf
A)、查看anonymous_enable=YES 是否为anonymous_enable=YES
B)、查看 pam_service_name=vsftpd 是否为 pam_service_name=vsftpd
C)、添加anon_root=/home/ftp/pub(匿名用户默认看到的目录)

浏览+下载
write_enable=YES(可写入)
anon_world_readable_only=no(匿名用户只读)

最后注意:当vsftp虚拟用户上传一个文件时,要修改其文件权限,不然匿名用户不能下载该文件。要在配置文件中添加或者修改anon_umask 的值:anon_umask=022。本次虚拟用户的配置文件(/etc/vsftpd/vsftpd_user/ftpadmin)

说明umask:
ftpadmin上传文件和文件夹的权限,如果要能被匿名用户下载,需要定义为022。umask是在linux中常见的一个东西,它其实是一个掩码。当然,也有umask这样一个命令,它是对用户建立的文件的默认属性的定义。定义为:假设umask为022,则对于一个文件夹的话,它的默认属性为 777-022=755,这也就是我们平时建立文件夹的权限。而对于一般的文件的话,则是用 666-022=644。umask是unix操作系统的概念,umask决定目录和文件被创建时得到的初始权限:
1)、umask = 022 时,新建的目录 权限是755,文件的权限是 644
2)、umask = 077 时,新建的目录 权限是700,文件的权限时 600
vsftpd的local_umask和anon_umask借鉴了它。默认情况下,vsftp上传之后文件的权限是600,目录权限是700。修改上传之后文件的权限,有两种情况:
A、如果使用vsftp的是本地用户,则要修改配置文件中的 local_umask 的值。
B、如果使用vsftp的是虚拟用户,则要修改配置文件中的 anon_umask 的值。

说明:1)、设定系统维护记录FTP服务器上传和下载情况的日志文件;存储在/var/log/xferlog
2)、查看事故日志:tail -f /var/log/secure

                                 最终实现

1、虚拟用户拥有上传、下载、删除等完全权限
由于/home/ftp/pub的权限是775,虚拟用户能登录上,但是不能上传,删除等。所以需要在pub目录下再建一个777完全权限的目录,把文件放在这个目录下,这样就可以上传、下载、删除了.
# cd /home/ftp/pub
# mkdir anon #在pub目录下新建一个anon目录
# chmod 777 anon #修改目录权限为最大**
这里写图片描述

2、匿名用户拥有浏览和下载的权限
直接编辑 vsftpd.conf :vi /etc/vsftpd/vsftpd.conf
1、添加:anon_root=/home/ftp/pub(匿名用户默认看到的目录)
2、浏览+下载 ,添加:
write_enable=YES(可写入)
anon_world_readable_only=no(匿名用户只读)
这里写图片描述

猜你喜欢

转载自blog.csdn.net/nokia_hp/article/details/78721894