ftp服务简介
FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。服务器中存有大量的共享软件和免费资源,要想从服务器中把文件传送到客户机上或者把客户机上的资源传送至服务器,就必须在两台机器中进行文件传送,此时双方必须要共同遵守一定的规则。FTP就是用来在客户机和服务器之间实现文件传输的标准协议。它使用客户/服务器模式,客户程序把客户的请求告诉服务器,并将服务器发回的结果显示出来。而服务器端执行真正的工作,比如存储、发送文件等。
ftp的安装与环境配置
1.配置yum源。
2.安装vsftpd和lftp服务。
yum install vsftpd -y
yum install lftp.x86_64 -y
systemctl start vsftpd
systemctl stop firewalld
systemctl enable vsftpd
setenforce 0(重启后生效)
3.验证ftp服务是否安装成功。
lftp 本机ip ##能登陆并ls文件列表,表示安装成功
安装成功后,ftp服务的默认发布目录位于/var/ftp,配置文件位于/etc/vsftpd。
4./etc/vsftpd/vsftpd.conf配置文件释义
**对匿名用户相关权限的设置**
#<匿名用户登陆限制>
anonymous_enable=YES|NO
#<匿名用户上传>
vim /etc/vsftpd/vsftpd.conf
write_enable=YES
anon_upload_enable=YES
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub
#<匿名用户家目录修改>
anon_root=/direcotry
#<匿名用户上传文件默认权限修改>
anon_umask=xxx
#<匿名用户建立目录>
anon_mkdir_write_enable=YES|NO
#<匿名用户下载>
anon_world_readable_only=YES|NO ##NO表示匿名用户可以下载
#<匿名用户删除>
anon_other_write_enable=YES|NO
#<匿名用户使用的用户身份修改>
chown_uploads=YES
chown_username=student
#<最大上传速率>
anon_max_rate=102400
#<最大链接数>
max_clients=2
**对本地用户相关权限设置**
#<本地用户登陆限制>
local_enable=YES|NO
#<本地用户写权限限制>
write_enable=YES|NO
#<本地用户家目录修改>
local_root=/directory
#<本地用户上传文件权限>
local_umask=xxx
#<限制本地用户浏览/目录>
所有用户被锁定到自己的家目录中
chroot_local_user=YES
chmod u-w /home/*
用户黑名单建立(在此名单中的用户均被锁定到自己的家目录中)
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
用户白名单建立
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
#<限制本地用户登陆>
vim /etc/vsftpd/ftpusers ##用户黑名单
vim /etc/vsftpd/user_list ##用户临时黑名单
用户白名单设定
userlist_deny=NO
/etc/vsftpd/user_list ##参数设定,此文件变成用户白名单,只在名单中出现的用户可以登陆ftp
ftp虚拟用户的建立
1.创建虚拟帐号。
vim /etc/vsftpd/loginusers ##此文件名称任意
user1
redhat1
user2
redhat2
user3
redhat3
2.为该文件进行哈希加密。
##在与loginusers文件同一目录下生成加密文件
db_load -T -t hash -f /etc/vsftpd/loginusers loginusers.db
3.创建/etc/pam.d/ckvsftpd文件。
vim /etc/pam.d/ckvsftpd ##此文件名称任意
account required pam_userdb.so db=/etc/vsftpd/loginusers
auth required pam_userdb.so db=/etc/vsftpd/loginusers
4.编辑/etc/vsftpd/vsftpd.conf配置文件,使以下行生效。
pam_service_name=ckvsftpd
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
guest_username=ftp
local_root=/vuserdir/$USER
user_sub_token=$USER
5.指定虚拟账户的身份
[root@server ~]# echo $USER
root
[root@server ~]# su - student
Last login: Sat Aug 5 13:32:23 EDT 2017 on pts/1
[student@server ~]$ echo $USER
student
6.在/vuserdir目录下分别创建如下目录和文件,登陆ftp服务器,检验虚拟用户是否创建成功。
[root@server vsftpd]# mkdir /vuserdir/user{1..3} -p
[root@server vsftpd]# touch /vuserdir/user1/user1file
[root@server vsftpd]# touch /vuserdir/user2/user2file
[root@server vsftpd]# touch /vuserdir/user3/user3file
[root@server vsftpd]# mkdir /vuserdir/user{1..3}/pub
[root@server vsftpd]# chmod 777 /vuserdir/user{1..3}/pub