文章目录
ftp服务
1.ftp的定义
shell:命令解析器
实验准备:
配置ip、yum源、(修改主机名字为ftpserver)、关selinux(/etc/sysconfig/selinux;disabled)
ftp:// ##文件传输协议
pam.d 认证
20 ##主动模式下的数据端口,用于传输数据
21 ##控制端口,命令端口,用于连接 ftp/pub 默认发布目录
2.ftp协议提供的软件
在rhel7中:vsftpd
3.部署ftp服务
yum install vsftpd -y ##下载vsftpd服务
systemctl start vsftpd ##打开
systemctl enable vsftpd ##开机自启动
firewall-cmd --permanent --add-service=ftp ##在火墙中添加服务
firewall-cmd --reload firewall-cmd --list-all
yum install lftp
lftp ##浏览器
/etv/vsftpd/vsftpd.conf ##文件配置文件
用户登录时处于用户的家目录下(eg:/home/xxx/)
550 #服务本身未开启
553 #文件权限不够
500 #文件系统权限过大
530 #用户认证失败
550也可能是selinux的问题
一看文件权限(家目录对应文件,eg:/var/ftp/pub),二看ftp权限(/etc/vsftp/vsftp.conf)
?查看有那些命令
eg: mirror #下载目录
3.1 匿名用户
登陆:
anonymous_enable=YES | NO
下载:
anon_world_readable_only=NO #NO表示匿名用户可以下载
上传:
write_enable=YES ##ftp是否对登陆用户可写
anon_upload_enable=YES
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub
建立目录:
anon_mkdir_write_enable=YES
删除:
anon_other_write_enable=YES
匿名用户家目录修改:
anon_root=/目录
匿名用户上传文件默认权限设置:
anon_umask=022
使用的用户身份修改:
chown_uploads=YES
chown_username=用户名
#chown_upload_mode=0644#
3.2 本地用户
登陆:
local_enable=YES
可写:
write_enable=YES
家目录修改:
local_root=/目录
上传文件默认权限设置 :
local_umask=022
3.3 限速
单位为字节
anon_max_rate=102400 ##(100k)
用dd截取一个大文件来测试:
dd if=/dev/zero of=/mnt/file1 bs=1M count=2000
3.4 限制连接个数
max_clients=数字
3.5 限制本地用户浏览根目录
chroot_local_user=YES
##注意此参数要去掉自己对家目录的写权限,chmod u-w /xxx/xxx
3.6 限制用户切换根目录的黑/白名单
黑名单:(不可以切换到/)
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
3.7 限制本地用户登录黑/白名单
黑名单:
/etc/vsftpd/ftpusers ##永久黑名单
在/etc/vsftpd/vsftpd.conf中添加
“userlist_deny=YES“
/etc/vsftpd/user_list ##可更改的黑名单
白名单:
在/etc/vsftpd/vsftpd.conf中添加
“userlist_deny=NO”
/etc/vsftpd/user_list
3.8 ftp的虚拟用户
1.创建虚拟身份,并将新建的文件加密
vim /etc/vsftpd/xxx
"user1 123 user2 123 user3 123"
db_load -T -t hash -f /etc/vsftpd/xxx /etc/vsftpd/xxx.db
2.设置pam认证
vim /etc/pam.d/westos ##文件任意名称
account required pam_userdb.so db=/etc/vsftpd/xxx
auth required pam_userdb.so db=/etc/vsftpd/xxx
vim /etc/vsftpd/vsftpd.conf
"pam_service_name=westos guest_enable=YES"
##到这一步时用户已经可以登录
3.虚拟帐号身份指定:
guest_username=用户名 ##将目录改为登陆用户的家目录
chmod u-w /home/用户名
4.虚拟帐号家目录独立设定:
vim /etc/vsftpd/vsftpd.conf
"local_root=/ftphome/$USER
user_sub_token=$USER"
mkdir /ftphome/user1/user1dir
mkdir /ftphome/user2/user2dir
5.虚拟帐号配置独立:
chgrp ftp /ftphome -R
chmod 775 /ftphome/user1/user1dir
chmod 775 /ftphome/user2/user2dir
vim /etc/vsftpd/vsftpd.conf
"user_config_dir=/etc/vsftpd/userconf"
vim /etc/vsftpd/userconf
"要添加的权限"
注意:在做这个实验时,关掉之前设置的写权限