linux FTP服务(文件传输协议)
FTP会话
用户接口UI 提供了一个用户接口并使用客户端协议解释器的服务
客户端协议解释器CPI
服务端协议解释器SPI
客户端数据传输协议CDTP
服务端数据传输协议SDTP
1,检查系统是否已经安装了FTP 服务
rpm -qa | grep vsftpd
rpm -q vsftpd
vsftpd -v
2,ftp服务安装
yum -y install vsftpd
3.驱动ftpd服务
systemctl start vsftpd
service vsftpd start
4,查看ftp服务状态
systemctl statu vsftpd
5,默认情况下匿名用户主目录位置cd /var/ftp/pub
创建匿名用户的主目录 mkdir /var/ftproot
创建本地用户的主目录 mkdir -p /data/local_ftp
打开配置 vim /etc/vsftpd/vsftpd.conf
在文件末尾添加:
anon_root=/var/ftproot/
local_root=/data/local_ftp
6.selinux设置
查询与FTP服务相关的配置
getsebool -a |grep ftp
重启后永久生效
setsebool -P ftpd_full_access on
授权用户访问FTP服务时允许vsftpd将该用户引导到家目录
setsebool -P tftp_home_dir on
配置匿名用户
1. 匿名用户访问FTP服务配置选项
ftp服务配置文件/etc/vsftpd/vsftpd.conf中关于匿名用户的配置内容如下:
anonymous_enable=YES|NO 是否允许匿名访问FTP服务
anon_umask=022 匿名用户上传文件的umask值
anon_upload_enable=YES|NO 是否允许匿名用户上传文件
anon_mkdir_write_enable=YES|NO是否允许匿名用户创建目录
anon_other_write_enable=YES|NO是否允许匿名用户修改或删除目录
2. 禁止匿名用户访问FTP服务配置
vsftpd默认允许只读方式(可以下载)方式登录。
将ftp服务配置文件/etc/vsftpd/vsftpd.conf中项
anonymous_enable=YES修改为anonymous_enable=NO,保存配置文件。
使用下面命令重新启动ftp服务
[root@localhost ~]#systemctl restart vsftpd
3. 测试禁用匿名用户访问FTP服务
[user2@localhost ~]$ ftp ftp.scitc.com Connected to ftp.scitc.com (192.168.1.10). 220 (vsFTPd 3.0.2) Name (ftp.scitc.com:user2): anonymous 331 Please specify the password. Password: 530 Login incorrect. Login failed. #匿名用户无法登录FTP服务
7配置本地用户
chroot_local_user=(YES|NO) #是否将本地用户锁定在家目录中
chroot_list_enable=(YES|NO) #是否锁定使用在家目录中
chroot_list_file #设置锁定用户的列表文件,一行一个用户名。
4.配置本地用户只能访问特定目录
创建本地访问FTP服务用户及家目录
[root@localhost ftp]# useradd -d /var/user2 -s /sbin/nologin user2
[root@localhost ftp]# useradd -d /var/user3 -s /sbin/nologin user3
修改/etc/vsftpd.conf
chroot_list_enable=YES #去掉本行注释符号
chroot_list_file=/etc/vsftpd/chroot_list
4.配置本地用户只能访问特定目录(续)
在文件/etc/vsftpd/chroot_list中添加user2,user3每个占一行,并为user2,user3设置密码
[root@localhost ftp]# passwd user2
[root@localhost ftp]# passwd user3
配置SELinux
[root@localhost ftp]# setsebool -P tftp_home_dir on
配置文件中/etc/vsftpd/vsftpd.conf最后增加一条
allow_writeable_chroot=YES
5.重启vsftp服务使配置生效
重启vsftp服务 客户端测试ftp服务 [user2@localhost ~]$ ftp ftp.scitc.com
8 配置虚拟用户
(1)创建虚拟用户/密码数据文件
[root@localhost ~]#cd /etc/vsftpd
[root@localhost vsftpd]#vi vuser.list
# 单行为用户名,双行为密码
user4
user4_@1
user5
user5_!@
#使用db_load命令用hash算法生成FTP用户数据文件vuser.db
[root@localhost vsftpd]# db_load -T -t hash -f vuser.list vuser.db
[root@localhost vsftpd]# file vuser.db
vuser.db: Berkeley DB (Hash, version 9, native byte-order)
#为虚用户数据库文件赋权
[root@localhost vsftpd]# chmod 600 vuser.db
#删除原始用户名及密码
[root@localhost vsftpd]# rm vuser.list
(2)创建FTP根目录及虚拟用户映射的系统用户
#创建v_user用户,设置该用户为不许登录系统、设置该用户家目录
[root@localhost ftp]# mkdir vftp
[root@localhost ftp]# useradd -d /var/vftp -s /sbin/nologin v_user
#查看v_user家目录权限
[root@localhost ftp]# ls -ld /var/vftp/
drwx------. 3 v_user v_user 78 Apr 27 23:53 /var/vftp/
#为了使其他用户能够访问该目录,为文件夹赋权
[root@localhost ftp]# chmod -Rf 755 /var/vftp
(3)建立支持虚拟用户的PAM认证文件
#db指向vuser.db,去掉后缀。
[root@localhost ftp]# vim /etc/pam.d/vsftpd.vu
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser
(4)配置/etc/vsftpd.conf支持虚拟用户访问
annonymous_enable=No
local_enable=YES
guest_enable=YES #开启虚拟用户模式
guset_username=v_user #指定虚拟用户账户名
pam_service_name=vsftpd.vu #指定pam文件
allow_writeable_chroot=YES
(5)为虚拟用户指定不同权限
[root@localhost ftp]# vi /etc/vsftpd/vsftpd.conf user_config_dir=/etc/vsftpd/vusers_dir
[root@localhost ftp]# mkdir /etc/vsftpd/vusers_dir [root@localhost ftp]# cd /etc/vsftpd/vusers_dir [root@localhost vusers_dir]# touch user4 [root@localhost vusers_dir]# touch user5
[root@localhost vusers_dir]#vi user5
#指定user5能够完全管理FTP文件 anon_upload_enable=YES
anon_mkdir_write_enable=YES anon_other_write_enable=YES
9安装客户端软件
yum install ftp