FTP是File Transfer Protocol文件传输协议的英文名称,用于在internet上控制文件的双向传输,同时它也是一个应用程序。
ftp:// ##文件传输协议
lftpd客户端相当于阿帕奇 vsftpd服务端相当于浏览器
在rhel7中:vsftpd
默认发布目录:/var/ftp
协议接口:21/tcp
服务配置文件: /etc/vsftpd/vsftpd.conf
500 ##文件系统权限过大
530 ##用户认证失败
550 ##服务不允许做此功能
553 ##本地文件系统权限过小
tp(文件传输协议)是Internet上常用的最老的网络协议之一,它的系统提供了通过网络与远程服务器进行传输的简单方法。ftp服务器包的名称为vsftpd,它代表Very Secure File Transfer Protocol Damon,服务器名称也叫做vsftpd。
默认配置文件让anonymous用户(匿名用户)只能下载位于chroot目录中的内容。
/var/ftp/这意味着远程ftp客户端能以anonymous用户或ftp身份连接到服务器(无需密码),并从ftp服务器上的/var/ftp/目录下载文件(其本地ftp用户可以读取这些文件)
关闭内核级的加强形火墙
vim /etc/sysconfig/selinux ##关闭selinux
7 SELINUX=disabled ##更改第七行为disabled
reboot ##重启
getenforce ##查看selinux状态
yum install lftp -y
yum install vsftpd -y
systemctl start vsftpd ##打开vsftp服务
systemctl enable vsftpd ##允许开机自动启动
systemctl start firewalld ##打开防火墙
firewall-cmd --permanent --add-service=ftp ##允许ftp通过火墙
systemctl restart firewalld ##重启火墙
firewalld-config ##打开图形更改防火墙设置
firewall-cmd --list-all ##查看防火墙状态
1.匿名用户的设定
1)匿名用户登陆
vim /etc/vsftpd/vsftpd.conf ##配置文件
12 anonymous_enable=YES ##匿名用户是否可以登陆
19 write_enable=YES ##ftp是否对登陆用户可写
vim /etc/vsftpd/vsftpd.conf
19 write_enable=YES ##ftp对用户可写
29 anon_upload_enable=YES ##匿名用户上传
systemctl restart vsftpd ##重启服务
chgrp ftp /var/ftp/pub ##更改该文件的组为ftp
chmod 775 /var/ftp/pub ##允许该文件被ftp组可读可写
anon_root=/direcotry ##匿名用户家目录修改
anon_mask=022 ##匿名用户新增文件时系统保留的权限为022
anon_mkdir_write_enable=YES ##匿名用户建立目录
anon_other_write_enable=YES
anon_world_readable_only=YES|NO ##匿名用户下载,设定参数为NO表示
匿名用户可以下载
49chown_uploads=YES ##所有匿名上传的用户文件的所属用户将会被改成chown_username
50chown_username=student ##匿名用户使用的用户身份修改
anon_max_rate=102400 ##最大上传速率
dd if=/dev/zero of=bigfile bs=1M count=300 ##截取300M文件
max_clients=1 ##只允许一个用户登录该ftp服务器
测试
2.本地用户设定
设定方法及步骤和匿名用户相同,在此不做过多的测试
1)本地用户的登录
local_enable=YES
2)本地用户家目录修改
local_root=/directory
write_enable=YES
3)本地用户上传文件权限
local_umask=022
4)限制本地用户浏览/目录
chroot_local_user=YES ##所有用户被锁定到自己的家目录中
用户不能有写的权限否则会报错500
chmod u-w /home/*
5)本地用户黑名单的建立
101chroot_local_user=NO ##NO表示下面的路径为黑名单
102chroot_list_enable=YES ##表示开启黑白名单功能
104chroot_list_file=/etc/vsftpd/chroot_list ##黑名单路径
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
/etc/vsftpd/ftpusers ##永久黑名单
/etc/vsftpd/user_list ##临时黑名单
vim /etc/vsftpd/vsftpd.conf
userlist_deny=NO ##临时黑名单变为白名单
1.创建虚拟用户身份
1)建立虚拟用户名单
cd /etc/vsftpd/
vim userfile
ftpuser1
123
ftpuser2
123
ftpuser3
123
db_load -T -t hash -f /etc/vsftpd/userfile /etc/vsftpd/userfile.db
vim /etc/pam.d/hello
account required pam_userdb.so db=/etc/vsftpd/userfile
帐号 认证方式 认证插件 db文件
auth required pam_userdb.so db=/etc/vsftpd/userfile
认证 认证方式 认证插件 db文件
vim vsftpd.conf
pam_service_name=hello ##认证方式(改变认证方式后之前的用户无法登录,可将其之前的认证文件加入新的文件中即可)
guest_enable=YES ##打开虚拟用户功能
guest_username=ftp ##给虚拟用户一个身份
systemctl restart vsftpd
用虚拟用户登陆测试
2.虚拟用户指定家目录
1)先建立家目录内容
mkdir /var/ftpuserdir/ftpuser{1..3} -p
mkdir /var/ftpuserdir/ftpuser{1..3}/pub
mkdir /var/ftpuserdir/ftpuser1/haha11file
mkdir /var/ftpuserdir/ftpuser2/haha2file
mkdir /var/ftpuserdir/ftpuser3/haha3file
local_root=/var/ftpuserdir/$ USER ##登陆后查看自己的家目录
user_sub_token=$ USER ##认证shell内的$
(echo $USER---->查看用户)
3)重启ftp服务,建立成功
测试
3.虚拟帐户配置独立的功能
以上传为例
在主配置文件中注释掉相应的参数
1)给/pub相应的权限
ls -lr /var/ftpuserdir/ftpuser{1..3}
chmod 775 /var/ftpuserdir/ftpuser{1..3}/pub*
chgrp ftp /var/ftpuserdir/ftpuser{1..3}/pub*
vim /etc/vsftpd/vsftpd.conf ##设置虚拟用户独立配置路径
user_config_dir=/etc/vsftpd/user_conf(此文件需要新建)
mkdir -p /etc/vsftpd/user_conf
anon_upload_enable=YES