1.ftp基本信息
- ftp协议提供的软件(在rhel7中):vsftp 非常安全的文件传输协议
- 软件安装包:vaftpd
- 匿名用户默认发布目录: /var/ftp
- 本地用户默认发布目录:/home/user 本地用户的家目录
- 协议接口:21/tcp接口
- 服务配置文件:/etc/vsftpd/vsftpd.conf
- lftp与vsftp不同;lftp是连接ftp的一个软件,类似于浏览器
- 服务操作报错id解析:
错误 | 解析 |
---|---|
500 | 文件权限过大 |
530 | 用户登录认证失败 |
550 | 服务本身功能未开启 |
553 | 本地文件权限过小 |
2.部署ftp服务
1)yum install vsftpd -y
在yum源配置好的环境下 ,下载vsftpd
systemctl start vsftpd
开启vsftpd服务
systemctl enable vsftpd
设置vsftpd服务开机自动启动
2)firewall-cmd --permanent --add-service=ftp
在防火墙中添加防ftp服务
firewall-cmd --reload
防火墙重新加载
firewall-cmd --list-all
查看防火墙信息
3)vim /etc/sysconfig/selinux
修改加强型防火墙状态
SELINUX=disabled
修改为无效disabled模式
reboot
修改selinux后需要重启系统才能生效
getenforce
查看selinux状态
3.ftp服务权限
(1)匿名用户权限
-
匿名用户的登录:anonymous_enable=YES|NO (YES:是 NO:否)
-
匿名用户登录身份的修改 :(效果: 上传文件后改变了文件所有者 )
chown_uploads=YES
chown_username=xxx
-
匿名用户的上传:write_enable=YES|NO
anon_upload_enable=YES|NOchgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub
-
匿名用户上传文件权限的修改:anon_umask=xxx
-
匿名用户删除与重命名文件:anon_other_write_enable=YES | NO
-
匿名用户建立目录:anon_mkdir_write_enable=YES|NO
-
匿名用户下载:anon_world_readable_only=NO|YES(NO:是 YES:否 )
下载命令 含义 mirror 目录的下载 get 文件的单个下载 get group 下载多个文件 get * 下载所有文件 mget * 下载所有目录 -
匿名用户家目录的修改:anon_root=/dir
(2)本地用户权限
-
本地用户的登录:local_enable=YES|NO
-
本地用户是否可写(在ftp服务下是否能建立删除文件或目录):write_enable=YES|NO
-
本地用户家目录的修改:local_root=/dir
-
本地用户上传文件权限:local_umask=xxx
-
本地用户浏览根目录的权限:chroot_local_user=YES|NO (YES:否 NO:是)
chmod u-w /home/*
(3)通用权限
- 最大上传速率: anon_max_rate=xxx 单位:字节
上传测试:dd if=/dev/zero of=mnt/bigfile bs=1M count=1500
- 服务最大连接用户个数:max_clients=x
(4)黑白名单
1)浏览根目录黑白名单
- 黑名单:
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
2)用户登录黑白名单 - 黑名单
永久黑名单 /etc/vsftpd/ftpusers
临时黑名单 /etc/vsftpd/user_list
- 白名单
userlist_deny=NO
/etc/vsftpd/user_list
(5)虚拟用户的设定及其权限
-
虚拟用户的设定
1)vim /etc/vaftpd/westfile
编辑虚拟用户帐号与密码 文件名任意user1
12345
user2
12345
user3
12345
2)db_load -T -t hash -f /etc/vsftpd/virtuser /etc/vsftpd/virtuser.db
因为该文件内容为明文,故需对对用户文件加密
3)vim /etc/pam.d/virtuser
编辑用户密码验证信息,文件名称任意account required pam_userdb.so db=/etc/vsftpd/virtuser 这里的文件需要和先前编辑用户帐号与密码的文件对应
auth required pam_uaerdb.so db=/etc/vsftpd/virtuser
4)vim /etc/vsftpd/vsftpd.conf
pam_service_name=virtuser 编辑vsftpd服务配置文件 此处文件需要与用户帐号密码验证信息对应
guest_enable=YES 开启虚拟用户登录权限
-
虚拟帐号身份指定
guest-username=XXX 虚拟用户默认登录到/var/ftp 目录下 若修改此参数 ,修改后登录到指定用户的家目录
chmod u-w /home/XXX
(如果不去掉user的w权限 将会报错500 )
-
虚拟帐号家目录的独立设定
(1)vim/etc/vsftpd/vsftpd.conf
local_root=/ftphome/$USER
$USER表示当前用户 该权限表示虚拟用户登录的身份 指定虚拟用户家目录在/ftphome下user_sub_token=$USER 让配置文件识别shell中的语法
(2)mkdir /ftphome/user1/user1dir -p
建立user1dir 的目的是稍后登录验证方便
chgrp ftp /ftphome -R
.
chmod 775 /ftphome/*
.
-
虚拟帐号配置独立
(1)
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/userconf 可以将虚拟用户的权限全部写入userconf文件中(该文件任意命名),虚拟用户在登录时,系统首先会访问该文件,再访问vsftpd.confpei配置文件
(2)mkdir /etc/vsftp/userconf
建立独立配置目录
vim /etc/vsftpd/userconf/user1
在虚拟用户user1的配置文件中编辑权限