一、vsftpd介绍
? ? ? ?vsftpd是very secure ftp daemon的缩写,它是一个完全免费、开源代码的ftp服务器软件。它有着其他ftp服务器软件不具有的特性,如它满足较高的安全性需求、支持虚拟用户、支持ipv6、传输速率限制等。
二、 vsftpd安装
? ? ? ?实验环境准备:
主机列表 | 系统版本 | ip地址 | 安装软件 |
---|---|---|---|
ftp客户端 | centos7.6 | 192.168.36.10 | ftp或lftp |
ftp服务器 | centos6.10 | 192.168.36.20 | vsftpd |
1、实验开始前,关闭两台设备的selinux和防火墙设置,防止其影响结果。
客户端关闭防火墙和selinux
[[email protected] ~]# setenforce 0
[[email protected] ~]# systemctl stop firewalld
服务器端关闭防火墙和selinux
[[email protected] ~]#setenforce 0
[[email protected] ~]#service iptables stop
[[email protected] ~]#iptables -F
[[email protected] ~]#iptables -vnL #确保iptables下没有任何规则。
2、ftp软件安装
客户端192.168.36.10安装:
[[email protected] ~]#yum install ftp lftp -y #ftp、lftp这两个都是ftp客户端工具
服务器192.168.36.20安装:
[[email protected] ~]#yum install vsftpd -y
[[email protected] ~]#service vsftpd restart
三、 vsftpd用户认证(三种登录方式)
匿名用户: ftp,anonymous,映射为Linux用户ftp。
系统用户: Linux系统用户,登录后默认在家目录。
虚拟用户:特定服务的专用用户,可设定登录的家目录。
1) 匿名用户的配置
[[email protected] ~]#vi /etc/vsftpd/vsftpd.conf
anonymous_enable=YES #默认允许匿名用户登录FTP。
anon_upload_enable=YES #启用匿名用户的上传权限。
anon_mkdir_write_enable=YES #启用匿名用户创建目录的权限。
anon_other_write_enable=YES #启用匿名用户删除权限。
anon_umask=022 #匿名用户新建文件时的umask值。
匿名账号启用以上权限后,从vsftpd的角度来说,就可以实现上传和下载功能了,但实际上还需要考虑文件系统的权限问题。
例1:
[[email protected] ~]# ftp 192.168.36.20[[email protected] ~]# ftp 192.168.36.20
Connected to 192.168.36.20 (192.168.36.20).
220 (vsFTPd 2.2.2)
Name (192.168.36.20:root): ftp #匿名账号ftp
331 Please specify the password.
Password: #此处直接回车,密码为空。
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd upload #upload为新建的目录,权限为777
250 Directory successfully changed.
ftp>
ftp> put f1 #实现上传功能。
local: f1 remote: f1
227 Entering Passive Mode (192,168,36,20,193,56).
150 Ok to send data.
226 Transfer complete.
19 bytes sent in 0.0362 secs (0.53 Kbytes/sec)
ftp> ls
227 Entering Passive Mode (192,168,36,20,151,172).
150 Here comes the directory listing.
-rw--w--w- 1 0 0 0 May 19 09:06 a1 #注意该文件的权限。
226 Directory send OK.
ftp> get a1 #下载a1文件失败,这是由于从ftp服务器下载文件,文件的属主、属组、其他此三者的权限都要具有读权限,才能下载。
local: a1 remote: a1
227 Entering Passive Mode (192,168,36,20,42,205).
550 Failed to open file.
ftp> get a1 #服务器端修改a1的权限为644,下载成功。
local: a1 remote: a1
227 Entering Passive Mode (192,168,36,20,52,167).
150 Opening BINARY mode data connection for a1 (0 bytes).
226 Transfer complete.
ftp>
2) 本地用户的配置
anonymous_enable=no #不允许匿名用户登入。
local_enable=YES/NO(YES) #控制是否允许本地用户登入,默认值为YES。
local_root=/home/username #当本地用户登入时,默认值为各用户的家目录。
write_enable=YES #是否允许登陆用户有写权限。
local_umask=022 #指定系统用户上传文件的默认权限。
chroot_local_user=YES #禁锢系统用户在家目录里面。
关闭匿名账号的登录,使用系统账号登录,且禁锢系统账号登录后在家目录里面。
例2:
[[email protected] ~]# ftp 192.168.36.20
Connected to 192.168.36.20 (192.168.36.20).
220 (vsFTPd 2.2.2)
Name (192.168.36.20:root): wang #使用系统账号wang进行登录
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/"
ftp> cd /var/ftp #系统账号被禁锢在自己的家目录里面,不能随意切换到其他目录。
550 Failed to change directory.
3) 虚拟用户的配置
所有虚拟用户会统一映射为一个指定的系统帐号:访问共享位置,即为此系统帐号
的家目录。
pam_service_name=vsftpd #虚拟用户使用PAM认证方式。
例3:
1. 生成文本格式的用户名和密码文件,文件内容奇数行是用户名称,双行是密码。
[[email protected] /etc/vsftpd]#cat vuser
alice
123asd
2. 生成用户数据库,修改文件权限。
[[email protected] /etc/vsftpd]#db_load -T -t hash -f vuser vuser.db
[[email protected] /etc/vsftpd]#file vuser.db
vuser.db: Berkeley DB (Hash, version 9, native byte-order)
[[email protected] /etc/vsftpd]#chmod 600 vuser.db
3. 创建pam配置文件。
[[email protected] /etc/pam.d]#vi vsftpd.db #该文件需要创建
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser
4. 创建虚拟账号对应的系统用户。
[[email protected] /]#useradd -d /var/ftproot -s /sbin/nologin vuser
[[email protected] /]#chmod a=rx /var/ftproot/
[[email protected] /]#ll -d /var/ftproot/
dr-xr-xr-x. 4 vuser vuser 4096 May 19 18:23 /var/ftproot/
5. 指定pam配置文件。
[[email protected] /]#vim /etc/vsftpd/vsftpd.conf
guest_enable=YES
guest_username=vuser
pam_service_name=vsftpd.db
6.重启vsftpd服务,在客户端上进行验证。
[[email protected] ~]# ftp 192.168.36.20
Connected to 192.168.36.20 (192.168.36.20).
220 (vsFTPd 2.2.2)
Name (192.168.36.20:root): alice #使用虚拟用户进行验证
331 Please specify the password.
Password:
230 Login successful. #使用虚拟账号成功登录。
Remote system type is UNIX.
Using binary mode to transfer files.
原文地址:https://blog.51cto.com/13932385/2396998
时间: 2024-10-14 22:49:06