1.FTP简介
网络文件共享服务主流的主要有三种,分别是ftp,nfs,samba
概念:上传,下载
监听端口:21 C/S架构
客户端工具
ftp,lftp,lftpget,wget,curl,filezilla,gftp(Linux GUI),商业软件(flashfxp,cuteftp)
服务端软件
wu-ftpd,proftpd(提供web接口),pureftp,vsftpd(Very Secure),ServU(windows平台的一种强大ftp服务)
环境,先关防火墙
[root@localhost ~]# systemctl status firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
1.vsftpd——安装vsftpd
[root@localhost ~]# yum -y install vsftpd`
vsftpd配置
/etc/pam.d/vsftpd //vsftpd用户认证配置文件
/etc/vsftpd/ //配置文件目录
/etc/vsftpd/vsftpd.conf //主配置文件
2.vsftpd——配置匿名用户ftp,只需要改主配置文件
[root@localhost ~]# yum -y install vsftpd
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 编辑
anonymous_enable=YES //原配置中有,但需要查看是否开启
anon_umask=022 //上传文件的默认遮掩码
anon_upload_enable=YES //允许匿名上传
anon_mkdir_write_enable=YES //允许写入,但不允许删除
anon_other_write_enable=YES //创建之外的权限,删除
[root@localhost ~]# systemctl start vsftpd //开启
[root@localhost ~]# ss -antl
默认路径介绍
/var/ftp/ 默认匿名用户登录的根目录
/etc/vsftpd/vsftpd.conf 主配置文件
/etc/pam.d/vsftpd 身份认证用的,这个文件指定一个无法登录的文件路径 /etc/vsftpd/ftpusers
/etc/vsftpd/user_list 这个文件有主配置文件userlist_enable和userlist_deny决定是否开启拒绝什么用户
/etc/vsftpd/chroot_list 这个文件默认是不存在的。手动建立,和主配置文件chroot_list_enable和chroot_list_file有关。
/usr/sbin/vsftpd 主要执行文件
sed -ri "s/^(anonymous_enable=).*/\1YES/g" /etc/vsftpd/vsftpd.conf
echo 'anon_umask=022' >> /etc/vsftpd/vsftpd.conf //通过ftp上传文件的默认遮罩码
echo 'anon_upload_enable=YES' >> /etc/vsftpd/vsftpd.conf //允许匿名上传
echo 'anon_mkdir_write_enable=YES' >> /etc/vsftpd/vsftpd.conf //允许写入,但不允许删除
echo 'anon_other_write_enable=YES' >>/etc/vsftpd/vsftpd.conf //创建之外的权限,删除
客户端登陆
lftp +ip
3.vsftpd——配置虚拟用户ftp
//安装依赖的程序:
[root@localhost ~]# cd /etc/yum.repos.d/ 进入yum源配置文件
[root@localhost yum.re``pos.d]# wget http://mirrors.163.com/.help/CentOS7-Base-163.repo //下载网易云的源到配置文件下
[root@localhost yum.repos.d]# yum clean all //清除yum缓存
已加载插件:fastestmirror, langpacks
[root@localhost yum.repos.d]# yum -y install epel-release //安装”epel-release”的软件包,这个软件包会自动配置yum的软件仓库
[root@localhost yum.repos.d]# yum -y install vsftpd //安装vsftpd服务
//创建文本格式的用户名,密码列表,列如要添加三个用户 user1,user2,user3,密码分别是123,123,123
对应前一行是用户,后一行是密码
[root@localhost ~]# echo 'user1' >> /etc/vsftpd/vu.list
[root@localhost ~]# echo '123' >> /etc/vsftpd/vu.list
[root@localhost ~]# echo 'user2' >> /etc/vsftpd/vu.list
[root@localhost ~]# echo '123' >> /etc/vsftpd/vu.list
[root@localhost ~]# echo 'user3' >> /etc/vsftpd/vu.list
[root@localhost ~]# echo '123' >> /etc/vsftpd/vu.list
//安装db4工具,
[root@localhost ~]# yum -y install db4* db4的所有
//将之前创建的文本格式用户名,密码文件使用db4工具转换成数据库文件
-T表示转换,-t表示加密方式使用hash算法加密
[root@localhost ~]# db_load -T -t hash -f /etc/vsftpd/vu.list /etc/vsftpd/vu.db
//提高虚拟用户账号文件的安全性,将文件权限设为600,以免数据外泄
[root@localhost ~]# chmod 600 /etc/vsftpd/vu.*
[root@localhost ~]# ll /etc/vsftpd/vu.*
-rw-------. 1 root root 12288 8月 8 11:40 /etc/vsftpd/vu.db
-rw-------. 1 root root 31 8月 8 11:29 /etc/vsftpd/vu.list
//添加虚拟用户的映射账号,创建ftp跟目录,列如要将使用的ftp根目录设置为/var/ftproot(指定家目录路径可另外指定,但是不能在root目录下),\
//映射账号的名称为vftp,可以执行以下操作 ( 如果不想让用户登录系统可以用 -s /sbin/nologin.此用户就不可以登录系统。)
[root@localhost ~]# useradd -d /var/ftproot -s /sbin/nologin vftp
[root@localhost ~]# chmod 755 /var/ftproot/ //赋予读写权限
[root@localhost ~]# ll -d /var/ftproot/
drwxr-xr-x. 3 vftp vftp 78 8月 8 15:29 /var/ftproot/
//为虚拟用户建立PAM认证
[root@localhost ~]# cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak //备份
[root@localhost ~]# vim /etc/pam.d/vsftpd //清空并,追加以下3行内容,vu是之前生成的输出文件,不能有#
%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/vu db前是固定式,后路径无需带后缀
account required pam_userdb.so db=/etc/vsftpd/vu
//修改vsftp配置文件,添加虚拟用户支持
[root@localhost ~]# mkdir /etc/vsftpd/vusers_dir //创建文件,并完成下方配置后就可以在目录中为每个虚拟用户分别建立配置文件了
[root@localhost ~]# echo 'guest_enable=YES' >> /etc/vsftpd/vsftpd.conf //启用匿名用户追加,(guest=客人)
[root@localhost ~]# echo 'guest_username=vftp' >> /etc/vsftpd/vsftpd.conf //匿名用户使用那个用户登陆,vftp(之前创建的虚拟用户的用户名)
//为不同的虚拟用户建立独立的配置文件
[root@localhost ~]# echo 'user_config_dir=/etc/vsftpd/vusers_dir' >> /etc/vsftpd/vsftpd.conf
//user_config_dir=/etc/vsftpd/vusers_dir 添加'用户配置目录'(vusers_dir默认没有,需要创建)
//允许被禁锢的用户家目录有写权限'allow_writeable_chroot=YES'
[root@localhost ~]# echo 'allow_writeable_chroot=YES' >> /etc/vsftpd/vsftpd.conf
[root@localhost ~]# ll /etc/vsftpd/
总用量 40
-rw-------. 1 root root 125 8月 3 2017 ftpusers
-rw-------. 1 root root 361 8月 3 2017 user_list
-rw-------. 1 root root 5113 8月 8 16:47 vsftpd.conf
-rw-r--r--. 1 root root 20 8月 8 16:05 vsftpd.confa
-rwxr--r--. 1 root root 338 8月 3 2017 vsftpd_conf_migrate.sh
-rw-------. 1 root root 12288 8月 8 11:40 vu.db
-rw-------. 1 root root 31 8月 8 11:29 vu.list
drwxr-xr-x. 2 root root 6 8月 8 16:37 vusers_dir
[root@localhost ~]# cat /etc/vsftpd/vu.list
user1
123
user2
123
user3
123
//设置user1用户可上传文件,创建目录
[root@localhost ~]# echo 'anon_umask=022' >> /etc/vsftpd/vusers_dir/user1 //通过ftp上传文件的默认遮罩码
[root@localhost ~]# echo 'anon_upload_enable=YES' >> /etc/vsftpd/vusers_dir/user1 //允许匿名上传
[root@localhost ~]# echo 'anon_mkdir_write_enable=YES' >> /etc/vsftpd/vusers_dir/user1 //允许写入,但不允许删除
echo 'anon_other_write_enable=YES' >> /etc/vsftpd/vusers_dir/user1 创建之外的权限,删除
//设置user2用户只有默认的下载权限,只需要创建一个名为jerry的空文件即可
[root@localhost ~]# touch /etc/vsftpd/vusers_dir/user2
//注意:虚拟用户是通过匿名访问的,所以必须开启匿名访问!
//启动服务
[root@localhost ~]# systemctl start vsftpd
[root@localhost ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 32 :::21 :::*
网络站点管理
第1步:
服务器端编辑配置文件: vim /etc/vsftpd/vsftpd.conf 追加:已经有的项目不添加
anonymous_enable=NO //是否允许匿名访问
local_enable=YES //是否允许本地登陆
write_enable=YES //是否允许写
local_umask=022 //本地用户上传遮掩吗
'
userlist_deny=YES //是否启用 '禁止登陆用户名单'
userlist_enable=YES //是否启用 '禁止登陆用户名单'
第2步:
/etc/vsftpd/ftpusers /etc/vsftpd/user_list 禁止列表
服务器端vsftpd服务为了让FTP服务更加的安全,默认禁止以root身份登入,那么创建个普通用户abc 并添加密码:
useradd abc
passwd abc
'
第3步:
服务器端设置SELinux: setsebool -P ftpd_full_access=on
[root@localhost ~]# systemctl start vsftpd //开启
[root@localhost ~]# ss -antl
第4步:
客户端登录ftp192.168.56.11 并验证 ,创建的文件位于abc账户家目录:/home/abc`