作用:FTP(文件传输协议)是internet 上仍常使用的最老的网络协议之一,它为系统提供了通过网络与远程服务器进行传输的简单方法在redhat entreprise linux 6 中。FTP 服务器包括的名称为 vsftp , 它代表 very secure file trandferprotocol damon 服务器名称也叫做 vsftpd
默认配置文件让 anonymous 用户只能下载位于chroot 目录中的内容。 /var/ftp/ 这意味着远程ftp客户能以用户anonymous 或者ftp 身份连接到服务器 (无需密码),并从ftp服务器上的/var/ftp/ 目录中下载文件(其本地 ftp 用户可以读取这些文件)
环境配置
[rhel7]
name=rhel7
baseurl=http://172.25.254.250/rhel7.0/x86_64/dvd yum 源
gpgcheck=0 ##不检测
enabled=1 ##可以使yum链接生效
vim /etc/sysconfig/selinux
SELINUX=disabled ##改成disabled,
安装步骤
yum search ftp ##查看是否有ftp软件包
yum install vsftpd.x86_64 -y ##yum安装ftp
systemctl start vsftpd ##打开vsftpd
systemctl enable vsftpd ##设置开机能自动使用
firewall-cmd --list-all ##列出防火墙使用
firewall-config ##出现防火墙设置图界面
systemctl status firewalld ##防火墙状态必须打开
安装 lftp
查看安装结果
###4用户登陆
vim /etc/vsftpd/vsftpd.conf
匿名用户
anonymous_enable=YES | NO #匿名用户是否可以登陆
local_enable=YES | NO #本地用户是否可以登陆
write_enable=YES | NO #ftp 是否对登陆用户可写
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO ##匿名用户不能登陆
vim /etc/vsftpd/vsftpd.conf
local_enable=YES | NO
write_enable=YES | NO #ftp 是否对登陆用户可写
[root@zhang ~]# vim /etc/vsftpd/vsftpd.conf
[root@zhang ~]# systemctl restart vsftpd.service
[root@zhang ~]# lftp 172.25.254.200 -u student
Password:
lftp [email protected]:~> ls
lftp [email protected]:~> put /etc/group 上传
991 bytes transferred
lftp [email protected]:~> ls 查看上传成功
-rw-r--r-- 1 1000 1000 991 May 02 12:16 group
lftp [email protected]:~> rm group
[root@zhang ~]# vim /etc/vsftpd/vsftpd.conf 配置文件编写
[root@zhang ~]# systemctl restart vsftpd.service 重启服务
[root@zhang ~]# lftp 172.25.254.200 -u student 用户登陆
Password:
lftp [email protected]:~> ls
lftp [email protected]:~> put /etc/group
put: Access failed: 550 Permission denied. (group) #上传失败
lftp [email protected]:~>
ftp 服务的基本的信息
软件包: vsftp
默认发布目录: /var/ftp/
协议接口 : 21 / tcp
服务配置文件: /etc/vsftpd/vsftpd.cof
报错id解析 :
500 #文件系统权限过大
530 #用户认证失败
550 #服务本身功能未开放
553 #本地文件系统权限过小
匿名用户上传
write_enabl=YES
anon_upload_enable=YES
chgrp ftp /var/ftp/pub ##更改目录所属组
chmod 775 /var/ftp/pub ##更改目录权限
put ##上传
anon_root=/目录地址 #匿名用户家目录修改
若是进行该项设置,匿名用户家目录默认在/var/ftp
[root@zhang ~]# ls /mnt
[root@zhang ~]# vim /etc/vsftpd/vsftpd.conf
[root@zhang ~]# systemctl restart vsftpd.service
[root@zhang ~]# touch /mnt/file
[root@zhang ~]# ls /mnt/
file
[root@zhang ~]# lftp 172.25.524.200
lftp: 172.25.524.200: Name or service not known
[root@zhang ~]# lftp 172.25.254.200
lftp 172.25.254.200:~> ls ## 匿名用登陆后的位置为修改过的/mnt
-rw-r--r-- 1 0 0 0 May 02 12:44 file
lftp 172.25.254.200:/>
匿名用户上传文件的umask值修改:(文件减111)
anon_umask=xxx
匿名用户建立目录:
首先需要本地用户可写查看后ftp本身就属于本地用户
write_enable=YES
anon_mkdir_write_enable=YES
ystemctl restart vsftpd
[root@zhang ~]# lftp 172.25.254.200
lftp 172.25.254.200:~> cd pub/
lftp 172.25.254.200:/pub> mkdir temp
mkdir ok, `temp' created
lftp 172.25.254.200:/pub> ls #创建目录成功
drwx------ 2 14 50 6 May 02 13:15 temp
lftp 172.25.254.200:/pub> exit
[root@zhang ~]# cat /etc/passwd|grep ftp
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
匿名用户下载
anon_world_readable_only=YES|NO ##no表示匿名用户下载
匿名用户删除目录:
anon_other_write_enable=YES|NO # yes
[root@zhang ~]# lftp 172.25.254.200
lftp 172.25.254.200:~> cd pub/
lftp 172.25.254.200:/pub> ls
drwx------ 2 14 50 6 May 02 13:15 temp
lftp 172.25.254.200:/pub> rm -fr temp/ #删除成功
lftp 172.25.254.200:/pub>
anon_other_write_enable=YES|NO
anon_max_rate=102400(速率为102kb/s,单位为B)
anon_other_write_enable=YES|NO
chown_uploads=YES
Chown_username=student
chown_upload_mode=0644 #匿名用户上传权限
本地用户设定
local_enable=YES|NO ##本地用户是否可以登陆
write_enable=YES|NO ##本地用户写权限限制
本地用户家目录修改
local_root=/var/ftp/user
本地用户上传文件的umask值修改
local_umask=xxx
修改本地用户家目录后文件的上传:
chown -Rf user /var/ftp/user
chgrp ftp /car/ftp/user
chmod 775 /var/ftp/user
限制本地用户浏览目录
chroot_local_user=YES ##所有用户被锁定到自己的家目录中
chmod u-w /home/*
但是如果需要上传文件,则可能会出现553报错,建议减去用户权限后做完实验即可恢复。)
本地用户访问根目录黑白单建立:
chroot_local_user=NO ##此时所有用户都可以访问/目录,名单内的只能访问自己的家目录
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
chroot_list_enable=YES #开启限制访问/ 目录用户列表
chroot_list_file=/etc/vsftpd/chroot_list #指定用户列表
在/etc/vsftpd/chroot_list名单的用户可以访问/ 目录
从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。
要修复这个错误,可以用命令chmod a-w /home/user去除用户主目录的写权限,注意把目录替换成你自己的。或者你可以在vsftpd的配置文件中增加下列两项中的一项:
[root@zhang ~]# lftp 172.25.254.200 -u westos 你名用户不列表内无法到 / 目录
Password:
lftp [email protected]:~> ls
lftp [email protected]:/> cd /
lftp [email protected]:/>
本地访问根目录黑名单建立:
chroot_local_user=no ##此时所有用户都只能访问自己的家目录,名单内的可以访问/目录
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
限制本地用户登陆黑名单:
vim /etc/vsftpd/ftpusers ##用户黑名单
vim /etc/vsftpd/user_list ##用户临时黑名单
userlist_enable=YES #开启用户登陆名单功能
userlist_deny=NO #取消名单默认为黑名单
/etc/vsftpd/user_list ##设定可以登陆ftp的用户
只有在该名单中的用户才可以登陆。
创建虚拟帐号身份
vim /etc/vsftpd/westosfile ##文件名称任意
编写内容如下:(注意不能有空格)
db_load -T -t hash -f /etc/vsftpd/westosfile /etc/vsftpd/westosfile.db ##生成
将新建的用户账户密码文件加密
vim /etc/pam.d/westos ##文件名称任意 (#编写验证核对的文件 ,验证账户密码若验证不通过拒绝。
文件内容:)
编写如下:
account required pam_userdb.so db=/etc/vsftpd/westosfile
auth required pam_userdb.so db=/etc/vsftpd/westosfile
vim /etc/vsftpd/vsftpd.conf #修改配置文件
pam_service_name=totokey ##指定被验证的文件
#当虚拟用户的功能开启时,本地用户无法进行登陆
guest_enable=YES ##设定虚拟用户登陆
guest_username=ftp #给定虚拟用户的登陆身份,如果不指定,默认为ftp,也可以指定为其他本地用户,但是其他本地用户虽然可
1】先创建目录作为虚拟用户的家目录,并在家家目录中创建特定文件以便于进行区分。
vim /etc/vsftpd/vsftpd.conf # 对配置文件进行修改
local_root=/var/westos/$USER #设定虚拟用户家目录与用户名称一致
user_sub_token=$USER # 但是由于$USER是脚本用法,所以该指令用来告诉ftp,$USER的用法与脚本中的$USER一样
systemctl restart vsftpd.service #重启服务即可
3个虚拟用户分别进入不同的家目录
6、设置虚拟用户的独立配置文件
vim /etc/vsftpd/vsftpd.conf #修改配置文件
user_config_dir=/etc/vsftpd/userconf #在其中写入,创建一个虚拟用户的配置目录,在该目录中创建出与用户名称一致的文件,该文件就是用户的专属的配置文件。
[root@zhang westoshome]# vim /etc/vsftpd/vsftpd.conf #创建用户配置目录
[root@zhang westoshome]# systemctl restart vsftpd
[root@zhang westoshome]# mkdir /etc/vsftpd/westosconf
[root@zhang westoshome]# touch westos1 #在目录中创建用户westos1 的配置文件
[root@zhang westoshome]#
应注意要把主配置文件关于匿名用户的设置全部注释,否则默认读取原来的配置文件。在用户的独立配置文件toto1中添加关于匿名用户配置语句,重启服务,以toto1的身份登陆可以使用独立配置文件中设置的权限,但是其他暂未设置独立权限的用户无法使用,说明独立配置文件设置成功。