FTP文件服务器搭建

基础环境

mv /etc/yum.repos.d/CentOS-* /tmp/
curl -o /etc/yum.repos.d/centos.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum install -y vim net-tools wget
安装服务
[root@master ~]# yum install -y vsftpd
设置开机自动
[root@master ~]# systemctl enable vsftpd --now
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
永久地在防火墙中添加FTP服务
[root@master ~]# firewall-cmd --permanent --add-service=ftp
success
重新加载防火墙配置
[root@master ~]# firewall-cmd --reload
success
开启ftpd_full_access策略,允许FTP服务具有完全访问权限
[root@master ~]# setsebool -P ftpd_full_access=on

配置匿名用户登录

创建测试目录/opt/ftp,并创建测试文件test.txt
[root@master ~]# mkdir /opt/ftp
[root@master ~]# touch /opt/ftp/test.txt
[root@master ~]# ll /opt/ftp/
total 0
-rw-r--r--. 1 root root 0 Dec 28 04:44 test.txt
编辑修改配置文件/etc/vsftpd/vsftpd.conf
[root@master ~]# vim /etc/vsftpd/vsftpd.conf					 
anonymous_enable=YES					#允许匿名用户登录            
anon_root=/opt/ftp						#将匿名用户的根目录设为/opt/ftp ### 这行文件中没有需要手动添加
anon_upload_enable=YES				#允许匿名用户上传文件        
anon_mkdir_write_enable=YES		#允许匿名用户创建文件夹 

### 重启服务使配置生效
[root@master ~]# systemctl restart vsftpd

小提示:允许匿名用户登录等命令是默认开启的,一般为了更方便只需要配置匿名用户的根目录即可。

[root@master ~]# setenforce 0
[root@master ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: dhcpv6-client ftp ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

image-20231227205150101

image-20231227204917052

共享目录中创建文件夹test,结果报错了,报错界面如图7所示

image-20231227205419057

  • 出错原因是系统的本地权限没有设置。设置本地系统权限,可以将属主设置为ftp,或者对/opt/ftp目录赋予其他用户写的权限。
[root@master ~]# ll -d /opt/ftp/
drwxr-xr-x. 2 root root 22 Dec 28 04:44 /opt/ftp/

### 第一张方法:
# 将属主更改为匿名用户ftp
[root@master ~]# chown ftp /opt/ftp/
[root@master ~]# ll -d /opt/ftp/    
drwxr-xr-x. 2 ftp root 22 Dec 28 04:44 /opt/ftp/

### 第二中方法:
# 赋予其他用户写的权限
[root@master ~]# chmod o+w /opt/ftp/
[root@master ~]# ll -d /opt/ftp/         
drwxr-xrwx. 2 root root 22 Dec 28 04:56 /opt/ftp/

配置本地用户登录

配置本地账户user_test1登录FTP服务器,同时要求禁止匿名用户登录FTP服务器
### 第一种方法:
[root@master ~]# useradd user_test1
[root@master ~]# passwd user_test1
Changing password for user user_test1.
New password: 			### 此处的直接即可,因为是暗文看不到输入
BAD PASSWORD: The password is a palindrome
Retype new password: 
passwd: all authentication tokens updated successfully.

### 第二张方法:
[root@master ~]# useradd user_test1
[root@master ~]# echo 000000 | passwd --stdin user_test1
Changing password for user user_test1.
passwd: all authentication tokens updated successfully.
创建FTP账号user_test1并禁止本地登录,然后为其设置登录密码
[root@master ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO							#禁止匿名用户登录						 
local_enable=YES								#允许本地用户登录						 
local_root=/opt/ftp							#将本地用户的根目录设为/opt/ftp	### 此行需要自己手动添加			 
chroot_local_user=NO						#是否限制本地用户,这也是默认值,可以省略
chroot_list_enable=YES					#激活chroot功能							 
chroot_list_file=/etc/vsftpd/chroot_list	#设置锁定用户在根目录中的列表文件        
allow_writeable_chroot=YES			#只要启用chroot就一定加入这条:允许chroot限制,否则出现连接错误
创建/etc/vsftpd/chroot_list文件,添加测试账号
[root@master ~]# cat /etc/vsftpd/chroot_list 
user_test1
重启服务
[root@master ~]# systemctl restart vsftpd

image-20231227210557072

image-20231228101233706

配置虚拟用户登录

创建宿主用户 vuser,虚拟用户的主目录为/var/vuser_dir
[root@master ~]# useradd -m -d /var/vuser_dir -s /sbin/nologin vuser
配置 pam 认证
  • vsftpd 虚拟用户采用 pam 认证,认证数据库可通过 db_load 命令来生成,认证的配置文件由 vsftpd.conf 文件中的 pam_service_name=vsftpd 来指定,存放在 /etc/pam.d/vsftpd
1. 创建虚拟用户的账号和密码
  • /etc/vsftpd/中创建文本文件 vuserlog.txt,其中奇数行为账号,偶数行为密码,存入两个虚拟用户:
    • vuser1,密码为 123456
    • vuser2,密码同样为 123456
[root@master ~]# vim /etc/vsftpd/vuserlog.txt
vuser1
123456
vuser2
123456
2. 生成 pam 认证数据库
[root@master ~]# cd /etc/vsftpd/
[root@master vsftpd]# db_load -T -t hash -f vuserlog.txt vuserlog.db
  • /etc/vsftpd/中利用 vuserlog.txt 文件生成认证数据库 vuserlog.db。如果管理员要修改虚拟用户账号,则只需要修改 vuserlog.txt 文件,然后重新生成数据库即可
3. 修改 pam 认证配置
[root@master ~]# vim /etc/pam.d/vsftpd
#%PAM-1.0
auth       required     /lib64/security/pam_userdb.so db=/etc/vsftpd/vuserlog
account    required     /lib64/security/pam_userdb.so db=/etc/vsftpd/vuserlog
4. 修改 vsftpd.conf 文件
guest_enable=YES
#开启虚拟用户
guest_username=vuser
#指定虚拟用户的宿主
user_config_dir=/etc/vsftpd/vuser_conf
#指定虚拟用户配置文件的存放位置
allow_writeable_chroot=YES	### 此行在本地用户已配置
#当 chroot 开启时,允许写入权限
5. 配置虚拟用户

创建虚拟用户配置文件的存放目录

[root@master ~]# mkdir /etc/vsftpd/vuser_conf/

创建虚拟用户配置文件

  • 在虚拟用户配置目录中创建虚拟用户配置文件并编写用户配置,同时配置文件必须以虚拟用户名作为文件名,一个虚拟用户具有一份配置文件
[root@master ~]# vim /etc/vsftpd/vuser_conf/vuser1
local_root=/var/vuser_dir
#指定 vuser1 的主目录
write_enable=YES
#开启写入权限
anon_world_readable_only=NO
#开启下载权限
anon_upload_enable=YES
#开启上传权限
anon_mkdir_write_enable=YES
#开启上传权限
anon_other_write_enable=YES
#开启删除、重命名权限
6. 重启服务
[root@master ~]# systemctl restart vsftpd
7.测试

image-20231228112731110

文件夹为空

image-20231228112653911

创建两个文件测试

image-20231228112847900

image-20231228112923806

虚拟机测试

[root@master ~]# cd /var/vuser_dir/
[root@master vuser_dir]# touch vuser.txt

刷新浏览

image-20231228113029304

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值