一、部署FTP服务
yum insatll vsftpd -y ##下载安装vsftpd
systemctl start vsftpd ##打开vsftpd
setenforce 0 ##关闭selinux
firewall-cmd --permanent --add-service=ftp #添加ftp到防火墙允许的服务里面
systemctl restart firewalld.service #重启防火墙
二、匿名用户
允许匿名用户读写:
chown ftp /var/ftp/pub/ #将此目录的属主改成ftp,匿名用户即可写入。
修改配置文件(/etc/vsftpd/vsftpd.conf):
anonymous_enable=YES #允许匿名登陆,不允许就改成NO
anon_upload_enable=YES #允许匿名用户上传
anon_mkdir_write_enable=YES #允许匿名用户创建文件夹
anon_umask=022 #匿名用户所上传文件的权限掩码
anon_root=/var/ftp #匿名用户的 FTP 根目录
anon_other_write_enable=YES #开放其他写入权
anon_max_rate=1000 #限制最大传输速率(字节/秒),等于0时为不限速
选项表:
选项名 | 选项描述 |
---|---|
anonymous_enable=YES/NO | 是否允许匿名登陆 |
anon_upload_enable=YES | 是否允许匿名用户上传 |
anon_mkdir_write_enable=YES | 是否允许匿名用户创建文件夹 |
anon_umask=022 | 匿名用户所上传文件的权限掩码 |
anon_root=/var/ftp | 匿名用户的 FTP 根目录 |
anon_other_write_enable=YES | 开放其他写入权 |
anon_max_rate=1000 | 限制最大传输速率(字节/秒),等于0时为不限速 |
三、本地用户
创建本地用户
useradd user1 #创建用户
passwd user1 #给用户设置密码
修改配置文件(/etc/vsftpd/vsftpd.conf):
local_enable=YES #是否允许本地用户登陆
local_root=/home/diy #自定义目录,如果不设置则是各用户的家目录
write_enable=YES #允许登陆用户有写权限
local_umask=022 #本地用户所上传文件的权限掩码
local_max_rate=1000 #限制最大传输速率(字节/秒),等于0时为不限速
chroot_local_user=YES #不允许用户切换目录
选项名 | 选项描述 |
---|---|
local_enable=YES | 是否允许本地用户登陆 |
local_root=/home/diy | 自定义目录,如果不设置则是各用户的家目录 |
write_enable=YES | 允许登陆用户有写权限 |
local_umask=022 | 本地用户所上传文件的权限掩码 |
local_max_rate=1000 | 限制最大传输速率(字节/秒),等于0时为不限速 |
chroot_local_user=YES | 不允许用户切换目录 |
四、虚拟用户
虚拟用户需要映射到系统用户,以系统用户为载体
建立虚拟账户账号和数据库文件
首先创建一个新文件,来存放虚拟账户的用户名和密码
vim /etc/vsftpd/users
写入以下内容
vmuser1
123123
vmuser2
123123
上一行为用户名,下一行是密码。
添加完毕后保存,输入以下内容,创建数据库文件。
db_load -T -t hash -f users users.db
得到users.db
设置文件权限为600,避免数据外泄。
chmod 600 /etc/vsftpd/users.*
为虚拟用户建立PAM认证文件
在/etc/pam.d目录下建立一个vsftpd.vu
写入以下内容
auth required pam_userdb.so db=/etc/vsftpd/users
account required pam_userdb.so db=/etc/vsftpd/users
添加虚拟用户的映射账号、创建FTP根目录
useradd -d /var/ftproot -s /sbin/nologin master
chmod 777 /var/ftproot/
最后修改配置为
anonymous_enable=NO#不允许匿名用户
local_enable=YES#允许本地登陆
guest_enable=YES#允许虚拟用户登陆
guest_username=master #虚拟用户映射本地用户
allow_writeable_chroot=YES #允许对禁锢的FTP根目录执行写入操作,而且不拒绝用户的登录请求
pam_service_name=vsftpd.vu #指定PAM文件
虚拟用户设置不同的权限
创建一个目录
/etc/vsftpd/vlist
然后配置里面加一段
user_config_dir=/etc/vsftpd/vlist
在此目录下创建vmuser1文件
为vmuser1用户配置权限
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
以此类推
选项名 | 选项描述 |
---|---|
anonymous_enable=NO | 不允许匿名用户 |
local_enable=YES | 允许本地登陆 |
guest_enable=YES | 允许虚拟用户登陆 |
guest_username=master | 虚拟用户映射本地用户 |
allow_writeable_chroot=YES | 允许对禁锢的FTP根目录执行写入操作,而且不拒绝用户的登录请求 |
pam_service_name=vsftpd.vu | 指定PAM文件 |
user_config_dir=/etc/vsftpd/vlist | 用户配置目录 |
其他
选项名 | 选项描述 |
---|---|
max_clients=0 | 限制并发客户端连接数,就是最多允许多少用户同时登录 |
max_per_ip=0 | 限制同一IP地址的并发连接数,就是一个IP最多同时下载几个文件 |
listen=YES | 是否以独立运行的方式监听服务 |
listen_port=21 | 设置监听 FTP 服务的端口号 |
listen_address=192.168.4.1 | 设置监听的 IP 地址 |