Linux FTP服务配置 一、部署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 地址