Rocky Linux 8/9 安装配置FTP服务器(VSFTP安装配置)

安装vsftpd


yum install vsftpd

设置开机自动启动


systemctl enable vsftpd.service  #设置开机启动

修改配置文件


配置文件yum之后一般在/etc/vsftpd/vsftpd.conf中,直接vi /etc/vsftpd/vsftpd.conf打开,下面是我修改后的配置:
anonymous_enable=NO  #关闭匿名
local_enable=YES #允许本地用户,我试过了关闭这里之后虚拟用户也登录不上了,没深研究
write_enable=YES #打开可写
local_umask=022 #权限反掩码,也就是755
dirmessage_enable=YES #列目录信息
xferlog_enable=YES #打开日志
connect_from_port_20=YES #数据传输
xferlog_file=/var/log/vsftpd.log #日志文件位置
xferlog_std_format=YES #标准日志格式
idle_session_timeout=600 #超时时间
data_connection_timeout=120 #文件传输超时时间
async_abor_enable=YES #异步传输
ascii_upload_enable=YES #支持ascii传输
ascii_download_enable=YES #支持ascii下载
ftpd_banner=Welcome to FTP service. #欢迎语
chroot_local_user=YES #锁定本地用户
chroot_list_enable=YES #锁定根目录
chroot_list_file=/etc/vsftpd/chroot_list #锁定目录的用户
listen=NO #不监听
pam_service_name=vsftpd #PAM文件,没有这个基本登录不了
userlist_enable=YES #访问控制列表
tcp_wrappers=YES
#for virtual user
guest_enable=YES #允许虚拟用户
guest_username=apache #虚拟用户宿主用户
virtual_use_local_privs=YES #虚拟用户使用本地用户权限
user_config_dir=/etc/vsftpd/vuser_config #单独虚拟用户配置目录
allow_writeable_chroot=YES   #允许写入目录
wq #保存

添加本地宿主用户,并创建FTP根目录


useradd virtual -d /ftp -s /sbin/nologin  #创建一个宿主用户并把家目录指向FTP根目录 apache用户不用创建,安装好Apache后系统就有该用户了,其它用户需要创建
mkdir /home/web/itsm
chown -R apache:apache /home/web/itsm

添加虚拟用户


cd /etc/vsftpd/
mkdir vuser_config  #创建vuser_config
cd /etc/vsftpd/vuser_config  # vuser_config 文件夹没有就创建一个
vi vuser
#在vuser里面输入用户和密码各占一行:
smartrobot
123@smartrobot
:wq保存
#建立用户数据库
db_load -T -t hash -f /etc/vsftpd/vuser_config/vuser /etc/vsftpd/vuser_config/vuser.db
修改PAM文件
vi /etc/pam.d/vsftpd
#内容如下:
auth sufficient pam_userdb.so db=/etc/vsftpd/vuser_config/vuser
account sufficient pam_userdb.so db=/etc/vsftpd/vuser_config/vuser

#%PAM-1.0
auth    sufficient      pam_userdb.so db=/etc/vsftpd/vuser_config/vuser #新添加
account   sufficient      pam_userdb.so db=/etc/vsftpd/vuser_config/vuser #新添加
session    optional     pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth       required     pam_shells.so
auth       include      password-auth
account    include      password-auth
session    required     pam_loginuid.so
session    include      password-auth
#重点就是我用红色标注的地方,之前就是在这个环节上死的,放在前面。
建立虚拟用户配置文件
cd /etc/vsftpd/vuser_config
vi itsm  #这里一定是user1,因为之前我建立的虚拟用户叫user1,这两个地方一定要一致。
#根据需求,输入以下信息:
local_root=/home/web/itsm #用户根目录
anonymous_enable=NO
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
max_per_ip=5
local_max_rate=1048576

wq #保存退出

建立根目录锁定文件(最容易忘记的一步)


vi /etc/vsftpd/chroot_list  #这个文件就是在配置文件里指定的文件
#我的内容如下:
apache /home/web/itsm   #这里的virtual是之前我们建立的用户,我们配置的是Apache 就写 apache  /ftp是根目录
wq    #保存退出

只允许虚拟用户登录


vi /etc/vsftpd/user_list
#在这里面加入刚创建的用户apache

配置完成,启动服务


systemctl start vsftpd.service  #启动服务器
systemctl enable vsftpd.service  #开机启动服务