前期准备
虚拟机
vim /etc/sysconfig/selinux
修改
SELINUX=disable
reboot
server虚拟机的版本
[root@localhost ~]# hostnamectl
Static hostname: n/a
Transient hostname: localhost
Icon name: computer-vm
Chassis: vm
Machine ID: 946cb0e817ea4adb916183df8c4fc817
Boot ID: 58602a448b314991b98037e3a3330feb
Virtualization: kvm
Operating System: Red Hat Enterprise Linux Server 7.0 (Maipo)
CPE OS Name: cpe:/o:redhat:enterprise_linux:7.0:GA:server
Kernel: Linux 3.10.0-123.el7.x86_64
Architecture: x86_64
vim /etc/yum.repos.d/yum.repo
[rhel7.0]
name=rhel7.0
baseurl=http://172.25.254.22/rhel7.0
gpgcheck=0
1.ftp的启用
yum install vsftpd -y
systemctl start vsftpd
systemctl enable vsftpd
firewall-cmd --permanent --add-service=ftp #在防火墙开启时,启用ftp服务(永久性)
firewall-cmd --reload
效果:在网址中输入ftp://172.25.254.122
2.ftp的基本信息
访问数据端口:21
数据传输端口:>1024随机端口
[root@localhost ~]# netstat -antlupe | grep vsftpd
tcp6 0 0 :::21 :::* LISTEN 0 47610 3199/vsftpd
默认发布目录:/var/ftp
访问方式
lftp 172.25.254.122 ##匿名登陆 --> /var/ftp
lftp 172.25.254.122 -u student ##用户登陆 --> /home/student
配置文件:
/etc/vsftpd/vsftpd.conf
[root@localhost ~]# rpm -qc vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf
3.ftp的安全部署
anonymous_enable=YES|NO #匿名用户是否可以登陆
local_enable=YES|NO #本地用户是否可以登陆
write_enable=YES|NO #本地用户十分可写
每一次修改配置文件,都需要重新启用
systemctl restart vsftpd
默认本地用户可写:
常见错误:
530 认证失败
550 服务本身不支持
500 用户权限过大
553 用户权限过小
4.匿名用户
匿名用户家目录 /var/ftp/pub
1.匿名用户可上传
chmod 775 /var/ftp/pub
chgrp ftp /var/ftp/pub
vim /etc/vsftpd/vsftpd.conf
29 anon_upload_enable=YES
systemctl restart vsftpd
172.25.254.122虚拟机:
[root@localhost ~]# ll -d /var/ftp/pub
drwxrwxr-x 2 root ftp 6 Aug 3 2015 /var/ftp/pub
172.25.254.22真机:
[kiosk@foundation22 Desktop]$ lftp 172.25.254.122
lftp 172.25.254.122:~> cd /pub
cd ok, cwd=/pub
lftp 172.25.254.122:/pub> ls
lftp 172.25.254.122:/pub> put /etc/passwd #匿名用户可写入文件
2323 bytes transferred
lftp 172.25.254.122:/pub> ls
-rw------- 1 14 50 2323 Aug 03 01:12 passwd
lftp 172.25.254.122:/pub> exit
2.匿名用户可下载
添加
anon_world_readable_only=NO
lftp 172.25.254.122:/pub> ls
-rw------- 1 14 50 980 Aug 03 01:39 group
-rw------- 1 14 50 2323 Aug 03 01:12 passwd
lftp 172.25.254.122:/pub> get passwd
2323 bytes transferred
3.匿名用户建立目录
取消注释
non_mkdir_write_enable=YES
lftp 172.25.254.122:/pub> mkdir test
mkdir ok, `test' created
lftp 172.25.254.122:/pub> ls
-rw------- 1 14 50 980 Aug 03 01:39 group
-rw------- 1 14 50 2323 Aug 03 01:12 passwd
drwx------ 2 14 50 6 Aug 03 01:41 test
4.匿名用户是否可以删除和重命名
添加
anon_other_write_enable=YES
lftp 172.25.254.122:/pub> ls
-rw------- 1 14 50 980 Aug 03 01:39 group
-rw------- 1 14 50 2323 Aug 03 01:12 passwd
drwx------ 2 14 50 6 Aug 03 01:41 test
lftp 172.25.254.122:/pub> mv passwd west
rename successful
lftp 172.25.254.122:/pub> rm -r test/
rm ok, `test/' removed
lftp 172.25.254.122:/pub> ls
-rw------- 1 14 50 980 Aug 03 01:39 group
-rw------- 1 14 50 2323 Aug 03 01:12 west
5.匿名用户使用的用户身份修改
默认为ftp
修改
chown_uploads=YES
chown_username=student
6.最大上传速率
anon_max_rate=1024000 #以字节结束,1M
[root@foundation22 html]# dd if=/dev/zero of=/etc/star bs=1M count=10
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.00550747 s, 1.9 GB/s
7.最大链接数
max_clients=1
8.匿名用户的家目录
anon_root=/sheen
虚拟机
[root@localhost ~]# mkdir /sheen
[root@localhost ~]# touch /sheen/file
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
[root@localhost ~]# systemctl restart vsftpd
真机
[kiosk@foundation22 Desktop]$ lftp 172.25.254.122
lftp 172.25.254.122:~> ls
-rw-r--r-- 1 0 0 0 Aug 03 02:31 file
5.本地用户
1.本地用户家目录修改
local_root=/directory
2.本地用户上传文件权限
local_umask=xxx
3.限制本地用户锁定在自己家目录中
chroot_local_user=YES
shell:chmod u-w /home/*
4.用户黑名单
touch /etc/vsftpd/chroot_list
vim /etc/vsftpd/chroot_list
-->student
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
5.用户白名单
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
6.限制本地用户登陆
vim /etc/vsftpd/user_list #用户临时黑名单
vim /etc/vsftpd/ftpusers #永久黑名单
7.用户白名单设定
userlist_enable=YES
userlist_deny=NO
vim /etc/vsftpd/user_list #参数设定,此文件变成白名单,在此文件的用户才可以登陆
6.ftp虚拟用户的设定
1.创建虚拟帐号身份
vim /etc/vsftpd/sheenfile #文件名称任意
sheen1
123
star
123
db_load -T -t hash -f /etc/vsftpd/sheenfile /etc/vsftpd/sheenfile.db #加密
vim /etc/pam.d/sheen #认证文件,名称任意
account required pam_userdb.so db=/etc/vsftpd/sheenfile
auth required pam_userdb.so db=/etc/vsftpd/sheenfile
vim /etc/vsftpd/vsftpd.conf
131 pam_service_name=sheen
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES #认证功能开启
guest_username=ftp #以ftp身份登陆
真机
[kiosk@foundation22 Desktop]$ lftp 172.25.254.122 -u sheen1
Password:
lftp sheen1@172.25.254.122:~> ls
drwxrwxr-x 2 0 50 43 Aug 03 02:18 pub
lftp sheen1@172.25.254.122:/> exit
[kiosk@foundation22 Desktop]$ lftp 172.25.254.122 -u star
Password:
lftp star@172.25.254.122:~> ls
drwxrwxr-x 2 0 50 43 Aug 03 02:18 pub
lftp star@172.25.254.122:/> exit
2.虚拟帐号独立家目录设定
vim /etc/vsftpd/vsftpd.conf
local_root=/ftphome/$USER
user_sub_token=$USER
mkdir /ftphome/sheen1/sheen1dir -p #这里第二个目录要和匿名用户身份一致
mkdir /ftphome/star/stardir -p
echo $USER #SHELL里输出用户
[kiosk@foundation22 Desktop]$ echo $USER
kiosk
真机
[kiosk@foundation22 Desktop]$ lftp 172.25.254.122 -u star
Password:
lftp star@172.25.254.122:~> ls
drwxr-xr-x 2 0 0 6 Aug 03 05:41 stardir
lftp star@172.25.254.122:/> exit
[kiosk@foundation22 Desktop]$ lftp 172.25.254.122 -u sheen1
Password:
lftp sheen1@172.25.254.122:~> ls
drwxr-xr-x 2 0 0 6 Aug 03 05:41 sheen1dir
3.虚拟帐号配置独立
chgrp ftp /ftphome/ -R
chmod 775 /ftphome/sheen1/sheen1dir/
chmod 775 /ftphome/star/stardir/
vim /etc/vsftpd/vsftpd.conf
最后一行添加,把匿名用户的权限注释掉
user_config_dir=/etc/vsftpd/confdir
mkdir /etc/vsftpd/confdir -p
vim /etc/vsftpd/confdir/sheen1 #虚拟用户的权限文件
anon_upload_enable=YES
anon_world_readable_only=NO
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
systemctl restart vsftpd
真机:
[kiosk@foundation22 Desktop]$ lftp 172.25.254.122 -u sheen1
Password:
lftp sheen1@172.25.254.122:~> ls
drwxrwxr-x 2 0 50 19 Aug 03 06:34 sheen1dir
lftp sheen1@172.25.254.122:/> cd sheen1dir/
lftp sheen1@172.25.254.122:/sheen1dir> put /etc/passwd
put: Access failed: 553 Could not create file. (passwd)
lftp sheen1@172.25.254.122:/sheen1dir> put /etc/group
980 bytes transferred
lftp sheen1@172.25.254.122:/sheen1dir> ls
-rw------- 1 1000 50 980 Aug 03 06:43 group
-rw------- 1 1000 50 2323 Aug 03 06:34 passwd
lftp sheen1@172.25.254.122:/sheen1dir> rm -rf passwd
rm ok, `passwd' removed
lftp sheen1@172.25.254.122:/sheen1dir> put /etc/passwd
2323 bytes transferred
lftp sheen1@172.25.254.122:/sheen1dir> ls
-rw------- 1 1000 50 980 Aug 03 06:43 group
-rw------- 1 1000 50 2323 Aug 03 06:43 passwd
lftp sheen1@172.25.254.122:/sheen1dir> mv group w
rename successful
lftp sheen1@172.25.254.122:/sheen1dir> ls
-rw------- 1 1000 50 2323 Aug 03 06:43 passwd
-rw------- 1 1000 50 980 Aug 03 06:43 w
lftp sheen1@172.25.254.122:/sheen1dir> exit
[kiosk@foundation22 Desktop]$ lftp 172.25.254.122 -u star
Password:
lftp star@172.25.254.122:~> ls
drwxrwxr-x 2 0 50 6 Aug 03 05:41 stardir
lftp star@172.25.254.122:/> cd /stardir/
lftp star@172.25.254.122:/stardir> ls
lftp star@172.25.254.122:/stardir> put /etc/passwd
put: Access failed: 550 Permission denied. (passwd)
lftp star@172.25.254.122:/stardir> ls
lftp star@172.25.254.122:/stardir> exit
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。