linux中搭建FTP服务

FTP服务器
文件传输协议(File Transfer Protocol)是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。专门用来传输文件的协议
工作原理:FTP是一种在互联网中进行文件传输的协议,基于客户端/服务器模式,默认使用20、21号端口,其中端口20(数据端口)用于进行数据传输,端口21(命令端口)用于接受客户端发出的相关FTP命令与参数
在这里插入图片描述
FTP服务器允许用户以三种认证模式登录到FTP服务器上
匿名开放模式:是一种最不安全的认证模式,任何人都可以无需密码验证而直接登录到FTP服务器。
本地用户模式:是通过Linux系统本地的账户密码信息进行认证的模式,相较于匿名开放模式更安全,配置起来也很简单。
虚拟用户模式:是这三种模式中最安全的一种认证模式,它需要为FTP服务单独建立用户数据库文件,虚拟出用来进行口令验证的账户信息,而这些账户信息在服务器系统中实际上是不存在的
vsftp服务的安装和配置
关闭防火墙和SElinux
systemctl stop firewalld
setenforce 0
getenforce

安装vsftp服务端、客户端
yum install vsftp ftp -y

本地用户模式配置
备份主配置文件
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak
vi /etc/vsftpd/vsftpd.conf

anonymous_enable=NO	//禁止匿名用户登录
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

在/etc/vsftp/下修改ftpusers,user_list文件将root用户删除
ftpusers和user_list是用户登录列表
查看ftp有关的状态 打开ftp_full_access服务
getsebool -a | grep ftp
setsebool -P ftpd_full_access=on

 [root@wangq ~]# getsebool -a | grep ftp        
    ftpd_anon_write --> off
    ftpd_connect_all_unreserved --> off
    ftpd_connect_db --> off
    ftpd_full_access --> on
    ftpd_use_cifs --> off
    ftpd_use_fusefs --> off
    ftpd_use_nfs --> off
    ftpd_use_passive_mode --> off
    httpd_can_connect_ftp --> off
    httpd_enable_ftp_server --> off
    tftp_anon_write --> off
    tftp_home_dir --> off

创建新用户 useradd tom
设置密码 echo ‘123456’ | passwd --stdin tom
在客户端登录ftp

[root@wangq1 ~]# ftp 192.168.0.155
Connected to 192.168.0.155 (192.168.0.155).
220 (vsFTPd 3.0.2)
Name (192.168.0.155:root): tom
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/home/tom"
ftp> 

配置虚拟用户模式
1 .进入/etc/vsftpd目录,创建列表用于ftp用户认证的数据文件
在服务器端 cd /vsftpd/
vi vuser.list
//单行行号为账号,双行行号为密码

    team1
    123456
    team2
    123456

2.将列表转换成数据库,然后转换成文件,赋予权限
使用db_load命令用HASH算法生成FTP用户数据库文件vuser.db: db_load -T -t hash -f vuser.list vuser.db
查看文件:file vuser.db
FTP用户数据库内容很敏感,所以权限给小一些:chmod 600 vuser.db

3.创建用户virtual并设置为不允许登陆系统并定义该用户的家目录:useradd -d /var/ftproot -s /sbin/nologin virtual
4.建立支持虚拟用户的PAM文件
vim /etc/pam.d/vsftpd.vu

   auth       required     pam_userdb.so db=/etc/vsftpd/vuser
   account    required     pam_userdb.so db=/etc/vsftpd/vuse

5.在vsftpd.conf文件中添加配置
vim /etc/vsftpd/vsftpd.conf

   anonymous_enable=NO
   local_enable=YES
   guest_enable=YES
    guest_username=virtual
    pam_service_name=vsftpd.vu
    allow_writeable_chroot=YES

6.为虚拟用户设置不同的权限
现在 team1和team2,他们的权限都是相同的——默认不能上传、创建、修改文件
现在如果想让team1管理FTP内的文件,就要FTP支持独立用户权限的配置文件
指定用户独立的权限配置文件存放的目录
vim /etc/vsftpd/vsftpd.conf (user_config_dir=/etc/vsftpd/vusers_dir)
创建用户独立的权限配置文件存放的目录:mkdir /etc/vsftpd/vusers_dir/
切换进入到该目录中:cd /etc/vsftpd/vusers_dir/
创建空白的team2的配置文件:touch team2
指定用户team1的具体权限
vi team1

anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES  

修改完之后重启服务
测试

[root@wangq ~]# ftp 192.168.0.131
Connected to 192.168.0.131 (192.168.0.131).
220 (vsFTPd 3.0.2)
Name (192.168.0.131:root): team1
331 Please specify the password.
Password:
500 OOPS: bad bool value in config file for: anon_other_write_enable
Login failed.
421 Service not available, remote server has closed connection
ftp> exit

[root@wangq ~]# ftp 192.168.0.131
Connected to 192.168.0.131 (192.168.0.131).
220 (vsFTPd 3.0.2)
Name (192.168.0.131:root): team2
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> touch 12
?Invalid command
ftp> mkdir wq
257 "/wq" created
ftp>   

匿名用户模式配置
开放匿名用户的上传、下载文件的权限,以及让匿名用户创建、删除、更名文件的权限
修改配置文件
vi /etc/vsftpd/vsftpd.conf

anonymous_enable=YES		//	允许匿名用户登录
 anon_upload_enable=YES		
anon_mkdir_write_enable=YES	
anon_other_write_enable=YES

重启服务
在客户端测试

[root@wangq ~]# ftp 192.168.0.131
Connected to 192.168.0.131 (192.168.0.131).
220 (vsFTPd 3.0.2)
Name (192.168.0.131:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd pub
250 Directory successfully changed.
ftp> mkdir dir1
257 "/pub/dir1" created
ftp> rename dir1 dir2
350 Ready for RNTO.
250 Rename successful.
ftp> rmdir dir2
250 Remove directory operation successful.
ftp> 

如果无法创建目录,则要给一定的权限
chmod -Rf ftp /var/ftp/pub

猜你喜欢

转载自blog.csdn.net/wq962464/article/details/84557259