第九单元-部署ftp文件共享服务
一、FTP服务器部署
1.认识:FTP ( 文件传输协议 ) 是 INTERNET 上仍常用的最老的网络协议之一 , 它为系统提供了通过网络与远程服务器进行传输的简单方法
• 在 RED HAT ENTREPRISE LINUX 6 中。 FTP 服务器包的名称为VSFTPD , 它代表 Very Secure File TransferProtocol Damon 服务器名称也叫做vsftpd
• 默认配置文件让 ANONYMOUS 用户只能下载位于CHROOT 目录中的内容。 /var/ftp/ 这意味着远程 FTP客户端能以用户 anonymous 或 ftp 身份连接到服务器( 无需密码 ), 并从 ftp 服务器上的 /var/ftp/ 目录下载文件( 其本地 ftp 用户可以读取这些文件 )
2.安装服务软件vsftpd
提前务必设置yum源
yum install vsftpd -y
3.启动服务
systemctl start vsftpd
systemctl enable vsftpd
内核防火墙设置:
[root@localhost network-scripts]# getenforce ##查看内核防火墙状态
Enforcing
[root@localhost network-scripts]# setenforce 0 ##设置为警告模式
[root@localhost network-scripts]# getenforce ##查看状态确定在警告模式
Permissive
设置防火墙可以通过ftp服务的进行
[root@localhost yum.repos.d]# firewall-cmd --list-all ##列出防火墙可以允许进行的外界交互的服务
public (default, active)
interfaces: eth0
sources:
services: dhcpv6-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
[root@localhost yum.repos.d]# firewall-cmd --permanent --add-service=ftp ##增加服务ftp
success
[root@localhost yum.repos.d]# firewall-cmd --reload
success ##重新加载防火墙
[root@localhost yum.repos.d]# firewall-cmd --list-all ##再次列出服务,发现ftp服务建立成功
public (default, active)
interfaces: eth0
sources:
services: dhcpv6-client ftp ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
4.测试服务
lftp ip ##能登陆并且显示,表示安装成功
[kiosk@foundation98 Desktop]$ lftp 172.25.254.198
lftp 172.25.254.198:~> ls
drwxr-xr-x 2 0 0 6 Aug 03 2015 pub
lftp 172.25.254.198:/>
测试成功
二、FTP服务器配置/etc/vsftpd/vsftpd.conf【修改完务必重启vsftpd服务】
1.匿名用户设定#<匿名用户登陆限制>
nonymous_enable=YES|NO
示图:匿名用户登陆
#<匿名用户上传>
vim /etc/vsftpd/vsftpd.conf
write_enable=YES
anon_upload_enable=YES
示图:匿名用户上传文件内容
测试是否成功
[kiosk@foundation98 Desktop]$ lftp 172.25.254.198
lftp 172.25.254.198:~> ls
drwxr-xr-x 2 0 0 6 Aug 03 2015 pub
lftp 172.25.254.198:/> cd pub
lftp 172.25.254.198:/pub> put /etc/passwd
put: Access failed: 553 Could not create file. (passwd) ##553 文件系统禁止此项操作
lftp 172.25.254.198:/pub> ##上传失败
修改目录权限实现上传
[root@localhost ~]# chgrp ftp /var/ftp/pub
[root@localhost ~]# chmod 775 /var/ftp/pub
[root@localhost ~]# ls -l /var/ftp
total 0
drwxrwxr-x. 2 root ftp 6 Aug 3 2015 pub
示图:测试匿名用户上传结果
#<匿名用户上传文件默认权限修改>
anon_umask=xxx
示图:匿名用户上传文件默认权限文件内容
#<匿名用户使用的用户身份和权限修改>
chown_uploads=YES
chown_username=student
chown_upload_mode=xxx
示图:匿名用户使用用户身份上传文件
1750 bytes transferred
lftp 172.25.254.198:/pub> ls
-rw-rw-r-- 1 14 50 993 Apr 26 12:03 group ##第一次所设置的默认权限002上传得到的文件
-rw------- 1 14 50 2367 Apr 26 11:59 passwd ##未设置默认权限上传的文件,权限为系统自定义先前设置的
-rw-r--r-- 1 1001 50 1750 Apr 26 12:08 profile ##为本次设置的权限后上传的文件,uid为westos用户的uid
#<匿名用户家目录修改>
anon_root=/direcotry
匿名用户默认家目录为:/var/ftp/pub
示图:更改匿名用户家目录配置文件修改
[root@localhost etc]# touch /home/westos/westosfile ##在/home/westos建立文件用来标识在此目录下
[root@localhost etc]# cd /home
[root@localhost home]# ls
student westos
[root@localhost home]# cd westos
[root@localhost westos]# ls
westosfile
[root@localhost home]# chmod 755 westos ##修改westos目录权限针对其他人和组为可读可行
[root@localhost home]# systemctl restart vsftpd ##重启vsftpd服务
示图:更改匿名用户家目录登陆验证
#<匿名用户建立目录>
anon_mkdir_write_enable=YES|NO
未修改配置文件前测试:
lftp 172.25.254.198:/> mkdir test
mkdir: Access failed: 550 Permission denied. (test) ##550 用户禁止操作此项操作
lftp 172.25.254.198:/>
示图:匿名用户建立目录配置文件修改
#<匿名用户下载>
anon_world_readable_only=YES|NO ##设定参数值为NO表示匿名用户可以下载
未设置前测试结果:
lftp 172.25.254.198:/pub> get passwdd
get: Access failed: 550 Failed to open file. (passwdd)
lftp 172.25.254.198:/pub>
示图:匿名用户下载配置文件修改内容
示图:匿名用户下载测试
anon_other_write_enable=YES|NO
未设置前测试结果:
lftp 172.25.254.198:/pub> rm passwd
rm: Access failed: 550 Permission denied. (passwd)
lftp 172.25.254.198:/pub>
示图:匿名用户删除配置文件修改
#<最大上传速率>
anon_max_rate=102400 ##每秒100k速度
未设置前测试结果:
lftp 172.25.254.198:/> cd pub
lftp 172.25.254.198:/pub> ls
-rw-rw-r-- 1 14 50 993 Apr 26 12:03 group
-rw-r--r-- 1 1001 50 1750 Apr 26 12:08 profile
drwxrwxr-x 2 14 50 6 Apr 26 12:30 test
lftp 172.25.254.198:/pub> put /mnt/bigfile
524288000 bytes transferred in 16 seconds (30.62M/s) ##每秒30.62M的速度传送
示图:最大上传速率配置文件修改
示图:最大上传速率测试【速度很慢】
#<最大链接数>
max_clients=2 ##连接个数最多为两个,其他会被禁止
2.本地用户设定
#<本地用户登陆限制>
local_enable=YES|NO
#<本地用户写权限限制>
write_enable=YES|NO ##建立目录
#<本地用户家目录修改>
local_root=/directory ##默认为登陆的家用户为主目录
#<本地用户上传文件权限>
local_umask=xxx
示图:家用户配置文件修改
示图:家用户登陆测试
#<限制本地用户浏览/目录>
所有用户被锁定到自己的家目录中
chroot_local_user=YES
chmod u-w /home/*
示图:未修改之前登陆用户可以进入任何目录
示图:家目录活动范围配置文件修改
total 4
drwx------. 4 student student 84 Jul 10 2014 student
drwxr-xr-x. 5 westos ftp 4096 Apr 27 03:40 westos
[root@localhost vsftpd]# chmod u-w /home/*
示图:更改之后家目录活动范围测试
用户黑名单建立
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
示图:用户活动范围黑名单建立配置文件
示图:用户活动范围黑名单测试
可进入其他目录用户student
不可进入其他目录用户westos
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
示图:测试
可进入其他目录用户westos
其他不可进入其他目录
#<限制本地用户登陆>
vim /etc/vsftpd/ftpusers ##用户黑名单
vim /etc/vsftpd/user_list ##用户临时黑名单
示图:ftpusers文件修改
示图:user_list修改
可登陆用户student
永久黑名单用户wetsos
用户白名单设定
userlist_deny=NO
/etc/vsftpd/user_list ##参数设定,此文件变成用户白名单,只在名单中出现的用户可以登陆ftp
示图:vsftpd配置文件修改
其他用户wetsos,student全部不可登陆,除了白名单用户lee
3.ftp虚拟用户的设定
#创建虚拟帐号身份
vim /etc/vsftpd/loginusers ##文件名称任意
user1
123
user2
123
user3
123
db_load -T -t hash -f /etc/vsftpd/loginusers loginusers.db
vim /etc/pam.d/ftpuser ##文件名称任意
account required pam_userdb.so db=/etc/vsftpd/loginusers
auth required pam_userdb.so db=/etc/vsftpd/loginusers
vim /etc/vsftpd/vsftpd.conf
pam_service_name=ftpuser
guest_enable=YES
#虚拟帐号身份指定
guest_username=ftpuser
chmod u-w /home/ftpuser
/etc/vsftpd/vsftpd.conf中文件修改
129 listen_ipv6=YES
130
131 pam_service_name=ftpuser ##指定登陆用户来源文件为ftpuser
132 userlist_enable=YES
133 guest_enable=YES
134 guest_username=westos ##登陆的虚拟用户家目录在westos用户的家目录
135 #userlist_deny=NO
136 tcp_wrappers=YES
[root@localhost vsftpd]# vim loginusers ##建立虚拟用户文件,写入虚拟用户以及密码
[root@localhost vsftpd]# db_load -T -t hash -f /etc/vsftpd/loginusers loginusers.db ##加密虚拟用户文件
[root@localhost vsftpd]# cd /etc/pam.d
[root@localhost pam.d]# vim ftpuser
/etc/pam.d/ftpuser文件内容
account required pam_userdb.so db=/etc/vsftpd/loginusers ##required:用户需要被检查,用pam_userdb.so检查用户,
auth required pam_userdb.so db=/etc/vsftpd/loginusers
示图:虚拟用户登陆测试
#虚拟帐号家目录独立设定
vim /etc/vsftpd/vsftpd.conf
local_root=/ftpuserhome/$USER
user_sub_token=$USER
mkdir /ftpuserhome
chgrp ftpuser /ftpuserhome
chmod g+s /ftpuserhome
mkdir /ftpuserhome/user{1..3}
示图:虚拟用户家目录独立测试
#虚拟帐号配置独立
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/userconf
mkdir -p /etc/vsftpd/userconf
vim /etc /vsftpd/userconf/user1
在此文件中设定配置文件中的所有参数,此文件的优先级高
测试:
/etc /vsftpd/userconf/user1
anon_upload_enable=YES ##允许user1上传,务必提前修改要写入的目录组和权限
示图:user1
/etc /vsftpd/userconf/user2
nonymous_enable=NO ##不许user2登陆
示图:user2