一、FTP的用户类型
1、匿名用户:用户名为ftp 或 anonymous,提供任意密码(包括空密码)都可以通过服务器验证。一般用于公共文件的下载,如提供一些免费的软件,学习资料下载的站点。
2、本地用户:直接使用本地系统用户账号进行验证
3、虚拟用户:统统以分独立的用户数据库文件进行登录验证,将FTP账号与Linux系统账户的关联性降至最低,为系统提供更好的安全性
二、实例搭建
1、搭建匿名用户访问的FTP服务
前期准备:
(1)安装FTP服务软件
yum -y install vsftpd vsftpd 为ftp服务的软件
ftp的共享目录 /var/ftp/pub
(2)更改共享目录pub的属主为ftp,系统默认就有ftp这个用户。
chown ftp /var/ftp/pub
(3)开放匿名用户的配置文件并启动vsftp服务,ftp的配置文件路径 /etc/vsftpd/vsftpd.conf
(4)cd /etc/vsftpd
(5)备份配置文件---》cp vsftpd.conf{,.bak}
(6)打开配置文件 vim vsftpd.conf
(7)配置FTP
2、开启ftp服务
/etc/init.d/vsftpd start
3、检查ftp端口,确认是否已开启
netstat -antup | grep vsftpd
4、关闭防火墙 service iptables stop 或 setenforce 0(关闭虚拟机的防火墙)
以上服务端配置完毕
4、客户端装ftp
yum -y install ftp
5、登录服务端的ftp
ftp 服务端ip地址
6、填写ftp,因为是匿名用户
7、填写密码 因为没有密码,所以直接回车即可
注1:你在哪个目录下进入的ftp就会在当前目录下操作上传或下载。
注2:进入后help查看ftp里面的使用命令。在ftp里get代表下载,你当前在哪个目录登陆ftp就下载到哪个目录,在ftp里put代表上传命令,也只能上传客户端当前目录里的文件,不能是绝对路径上传
2、搭建本地用户验证FTP服务
【2.1】创建本地用户
useradd 用户1 useradd 用户2
echo “密码”| passwd --stdin 用户1 &> /dev/null
echo “密码”| passwd --stdin 用户2 &> /dev/null
【2.2】备份ftp配置文件
因为做匿名用户的时候已经备份过了,所有我们把原文件改个名即可,主要区分下是本地用户要用的配置文件
mv vsftpd.conf vsftpd.conf.anon
cp vsftpd.conf.bak vsftpd.conf
【2.3】打开配置文件 vim vsftpd.conf
1、关闭匿名用户
2、 开启本地用户的家目录锁定,每个用户的共享文件在每个用户的家目录里面,也就是用户家目录下的用户目录
【2.4】重启ftp服务
/etc/init.d/vsftp reload
【2.5】本地用户测试
客户端操作: ftp ftp服务器ip
进入后输入本地用户名及密码
【2.6】ftpusers 与 user_list 用户列表的使用,他们在/etc/vsftpd下
【2.6.1】ftpusers文件:FTP服务器的黑名单,优先级高于user_list
【2.6.2】user_list文件:此用户列表默认情况下也是黑名单,即在此用户列表中的用户不可访问FTP服务器
但可以通过vsftpd.conf主配置文件的修改将此名单改为白名单,且仅此名单中的用户可以访问
注:直接将想加入的黑名单用户名直接写进文件即可
3、搭建虚拟用户验证的FTP
【3.1】备份ftp配置文件
mv vsftpd.conf vsftpd.conf.local
cp vsftpd.conf.bak vsftpd.conf
【3.2】创建虚拟账号文件
vim ./vusers.list 创建 写:zhangsan 123 lisi 123 wangwu 456
【3.3】使用db_load生成数据库加密文件,没有的话安装以下
db_load -T -t hash -f vusers.list vusers.db
参数说明:-T 允许非Berkeley的程序使用该数据库
-t 指定算法(hash:哈希,散列)
-f 指定源文件
注:生成的数据库文件必须为.db格式
【3.4】给vusers.db 600权限
chmod 600 vusers.db
【3.5】添加虚拟映射账号并指定家目录位置为/vat/ftproot/,为FTP根目录修改权限
useradd -d /var/ftproot/ -s /sbin/nologin virtual
mkdir -p /var/ftproot/
chmod 755 /var/ftproot/
【3.6】增加PAM认证
vim /etc/pam.d/vsftpd.vu
写:auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
【3.7】修改vsftpd.conf配置文件
vim vsftpd.conf
【3.8】重启服务
/etc/init.d/vsftpd reload
【3.9】客户端测试
用刚设置的虚拟账号登录ftp服务器
【3.10】实现每个虚拟用户不同根目录、不同权限的管控
【3.10.1】创建用户控制目录,并创建虚拟所对应的同名配置文件
进入vsftpd目录创建
1、mkdir ./vusers.dir
2、cd vusers.dir
3、touch zhangsan lisi wangwu
【3.11】修改虚拟用户的配置文件
vim wangwu
写:anon_upload_enable=YES 表示允许匿名上传
anon_mkdir_write_enable=YES 表示允许匿名创建目录
anon_other_write_enable=YES 表示允许匿名用户有写权限
anon_max_rate=1 设置上传下载速度为1字节
local_root=/var/wangwu 单独给虚拟用户设置自己的目录
【3.12】创建虚拟用户设置自己的目录
mkdir -p /var/wangwu
【3.13】更换虚拟账号文件的属主
chown virtual /var/wangwu
【3.14】修改ftp配置文件,告诉他对虚拟账号的设置
vim vsftpd.conf
告诉ftp虚拟账号的配置文件所在位置
【3.15】重启服务
/etc/init.d/vsftpd reload