Linux:ftp服务的部署
ftp服务
vslftp服务器
lftp浏览器
ftp服务的基本信息
软件安装包:vsftpd
默认发布目录:/var/ftp
协议接口:21/tcp
服务配置文件:/etc/vsftpd/vsftpd.conf
报错id的解析:500 ##文件系统权限过大
530 ##用户认证失败
550 ##服务本身功能未开放
553 ##本地文件系统权限过小
首先要完成以下步骤:
重置server虚拟机
设置ip
配置yum源
编写文件vim /etc/sysconfig/selinux ,将enforcing改为disable
需要reboot
重启之后查看:
做完以上步骤后,在server虚拟机中:
yum install vsftpd -y ##安装vsftpd
systemctl start vsftpd
systemctl enable vsftpd
ln -s '/usr/lib/systemd/system/vsftpd.service' '/etc/systemd/system/multi-user.target.wants/vsftpd.service' ##报错是因为火墙有限制,需要允许ftp
firewall-cmd --permanent --add-service=ftp ##火墙允许ftp
firewall-cmd --reload ##更新
firewall-cmd --list-all ##查看
public (default, active)
interfaces: eth0
sources:
services: dhcpv6-client ftp ssh ##已经火墙允许ftp
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
cd /var/ftp
ls
touch westosfile
ls
在真机中测试(也可以在虚拟机中安装lftp):
yum install lftp ##安装lftp
lftp 172.25.254.219 ##虚拟机ip
ls
一·匿名用户
1、匿名用户修改家目录
在服务端虚拟机:
mkdir /ftpdir/westosdir -p ##建立家目录
vim /etc/vsftpd/vsftpd.conf
编写内容:anon_root=/ftpdir
systemctl restart vsftpd
做完之后需要注释
在真机:
lftp 172.25.254.219
ls
2、匿名用户是否可以登陆:
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES|NO ##NO不可以登陆
当匿名用户为YES时:
可以登陆:
当匿名用户为NO时:
不可以登陆:
做完实验必须要改为YES,否则不能进行以下实验
3、匿名用户上传:
第一种方法:
vim /etc/vsftpd/vsftpd.conf
write_enable=YES
anon_upload_enable=YES
##匿名用户依赖于普通用户可写,需要同时打开服务
systemctl restart vsftpd
lftp 172.25.254.219
lftp 172.25.254.219:~> ls
drwxr-xr-x 2 0 0 6 Mar 07 2014 pub
-rw-r--r-- 1 0 0 0 May 08 10:35 westosfile
lftp 172.25.254.219:/> cd pub/
lftp 172.25.254.219:/pub> put /etc/passwd
put: Access failed: 553 Could not create file. (passwd)
##报错553,权限过小
chmod 777 /var/ftp/pub/ ##给权限为777,否则会报错,权限过小
ls -l /var/ftp/pub/
lftp 172.25.254.219
cd pub/
put /etc/passwd ##上传
当没有赋予权限时,不能上传:
打开匿名用户上传以及不同用户可写:
赋予权限后:
第二种方法:
chgrp ftp /var/ftp/pub/
chmod 775 /var/ftp/pub/
ls -ld /var/ftp/pub/
lftp 172.25.254.219
cd pub/
put /etc/group
4、匿名用户删除
vim /etc/vsftpd/vsftpd.conf
编写内容:anon_other_write_enable=YES ##匿名用户删除
lftp 172.25.254.219
cd pub/
rm group
编写内容:
5、匿名用户上传限速
cd /mnt/
dd if=/dev/zero of=/mnt/bigfile bs=1M count=2000 ##截取
vim /etc/vsftpd/vsftpd.conf
编写内容:anon_max_rate=102400 ##限速为100k
systemctl restart vsftpd
lftp 172.25.254.219
cd pub/
put /mnt/bigfile
当没有限速时的上传速率:
当限速时的上传速率:
编写内容:
6、匿名用户建立目录:
anon_mkdir_write_enable=YES ##打开匿名用户建立目录
lftp 172.25.254.219
cd pub/
mkdir test
ls
当没有打开建立目录时:
报错550:服务本身功能为开放
打开匿名用户建立目录:
7、匿名用户上传文件权限
vim /etc/vsftpd/vsftpd.conf
编写内容:anon_umask=022 ##匿名用户
lftp 172.25.254.219
cd pub/
put /etc/group
-rw-r--r-- 1 14 50 865 May 06 02:23 group ##权限为644
匿名用户没有给权限:
group权限为默认600
编写内容:
group权限为644
三·本地用户
1、本地用户:(需要建立一个本地用户)
useradd student ##建立一个普通用户 (用id student 查看是否有用户存在)
su - student
mkdir /home/student/pub ##切换到student用户下建立pub目录
local_enable=YES|NO ##打开本地用户是否可以登陆
write_enable=YES|NO ##打开ftp是否登陆用户可写
当登陆与可写都为YES时:
当登陆与可写都为NO时:
做完实验后都要还原,都是YES
2、本地用户上传文件权限:
**022:644 -rw-r–r–
077:600 -rw——-**
useradd westos
vim /etc/vsftpd/vsftpd.conf
打开并编写为077:local_umask=077 ##本地用户
systemctl restart vsftpd
lftp 172.25.254.219 -u westos
put /etc/group
ls
-rw------- 1 1001 1001 2048 May 06 02:05 passwd ##权限为600
不能建立同一个文件,否则会被覆盖
编写权限为077
3、限制本地用户浏览/目录
vim /etc/vsftpd/vsftpd.conf
打开:chroot_local_user=YES
systemctl restart vsftpd
chmod u-w /home/* ##所有用户被锁定到自己家目录中
lftp 172.25.254.219
cd /
ls ##看不到/目录
打开为YES,看不到/目录
看不到/目录:
当打开改为NO时,可以看到/目录
可以看到/目录:
4、本地用户黑名单
vim /etc/vsftpd/vsftpd.conf
打开:chroot_local_user=NO ##所有人可以浏览
hroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
systemctl restart vsftpd
vim /etc/vsftpd/chroot_list ##编写黑名单用户名
lftp 172.25.254.219 -u 黑名单用户名
cd /
ls ##看不到/目录
在主配置文件中打开以下三个:
当用户时黑名单时,不能看到/目录:
当用户是非黑名单用户时,可以看到/目录:
5、本地用户白名单
vim /etc/vsftpd/vsftpd.conf
chroot_local_user=YES
hroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
systemctl restart vsftpd
vim /etc/vsftpd/chroot_list ##编写白名单用户
lftp 172.25.254.219 -u 白名单用户名
cd /
ls ##除了白名单用户以外的用户看不到/目录
要把主配置文件的所有人浏览改为YES,意思是所有人不能浏览
编写白名单用户;
白名单可以查看/目录:
除了白名单以外的用户查看不到/目录:
做完以上实验后全都注释
6、本地用户登录限制
cd /etc/vsftpd
ls ##查看文件
chroot_list ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh
ftpusers ##永久黑名单,优先级更高
uesr_list ##临时黑名单
(1)用户临时黑名单设定:
vim /etc/vsftpd/vsftpd.conf
在最后编写内容:userlist_deny=NO ##所有用户都在黑名单里
vim /etc/vsftpd/user_list ##参数设定,此文件变成用户白名单,只在名单中出现的用户可以登陆
编写白名单用户
lftp 172.25.254.219 -u westos
cd /
ls ##可以看到/目录
user_list为临时黑名单
在 /etc/vsftpd/vsftpd.conf文件中编写:userlist_deny=NO
在 /etc/vsftpd/user_list文件中写入白名单用户:westos
用户为westos时,可以查看/目录
用户为非白名单用户,不能查看/目录
(2)用户永久黑名单设定:
vim /etc/vsftpd/vsftpd.conf
userlist_deny=NO ##注释掉
systemctl restart vsf tpd
vim /etc/vsftpd/ftpusers ##编写黑名单westos用户
lftp 172.25.254.219 -u student
cd /
ls ##可以查看/目录
在 /etc/vsftpd/vsftpd.conf文件中注释userlist_deny=NO
在/etc/vsftps/ftpuser 文件中写入黑名单用户
非黑名单用户登陆:
黑名单用户登陆:
当uesr_list为白名单时,若ftpuser、suesr_list都有同一个用户,则ftpusers永久黑名单优先级高,不能执行
so服务
ko内核
mo功能
三·ftp虚拟机用户的设定
(1)创建虚拟机帐号身份:
vim /etc/vsftpd/user ##添加虚拟用户密码(文件名称任意)
编写内容:user1 ##普通用户
123 ##密码
user2
123
user3
123
db_load -T -t hash -f /etc/vsftpd/user /etc/vsftpd/user.db ##加密
vim /etc/pam.d/westos ##编辑帐号密码文件(文件名称任意)
编写内容: account required pam_userdb.so db=/etc/vsftpd/user
auth required pam_userdb.so db=/etc/vsftpd/user
vim /etc/vsftpd/vsftpd.conf
pam_service_name=westos ##创建虚拟机帐号身份文件名
guest_enable=YES
systemctl restart vsftpd
account:帐号
required:必须通过否则认证被拒绝
pam_userdb.so:认证帐号
db=/etc/vsftpd/user:后缀不需要,用户名单
auth:密码
required:必须通过否则认证被拒绝
pam_userdb.so:认证密码
db=/etc/vsftpd/user:密码名单
在vim /etc/vsftpd/user 文件中编写普通用户以及密码
在vim /etc/pam.d/westos 文件中写入:
在 /etc/vsftpd/vsftpd.conf 文件中写入pam_service_name=westos和 guest_enable=YES
(2)虚拟帐号身份指定:
vim /etc/vsftpd/vsftpd.conf
guest_username=student ##已经有的用户名称
systemctl restart vsftpd
chmod u-w /home/student ##赋予权限
lftp 172.25.254.219 -u user1 ##查看user1用户
在/etc/vsftpd/vsftpd.conf 文件中
四·虚拟账户家目录独立设定
mkdir /vftpdir ##建立目录
touch /vftpdir/vftpfile
vim /etc/vsftpd/vsftpd.conf
编写内容:local_root=/vftpdir ##建立目录名称
systemctl restart vsftpd.service
cd /vftpdir/
ls
mkdir user{1..3} ##要和上一个实验的创建虚拟机帐号身份的文件名一致
ll
touch user1/user1file
touch user2/user2file ##建立文件
touch user3/user3file
ls
cd user1
ll
vim /etc/vsftpd/vsftpd.conf
编写内容:local_root=/vftpdir/$USER
user_sub_token=$USER
systemctl restart vsftpd.service
lftp 172.25.254.219 -u user2
ls
主配置文件中:
五·虚拟账户配置独立
mkdir user{1..3}/pub
vim /etc/vsftpd/vsftpd.conf
编写内容:user_config_dir=/etc/vsftpd/conf_dir
chgrp student user{1..3}/pub
chmod 775 user{1..3}/pub
cd vftpdir
mkdir user{1..3}
vim /etc/vsftpd/vsftpd.conf
注释:anon_other_write_enable=YES ##删除
anon_upload_enable=YES ##上传
anon_max_rate=102400 ##限速
anon_mkdir_write_enable=YES ##可写
mkdir /etc/vsftpd/conf_dir -p ##建立主配置文件中的目录
vim /etc/vsftpd/conf_dir/user2 ##给虚拟用户单独的上传权限
cat /etc/vsftpd/conf_dir/ftpuser2 ##ftpuser2可以上传
anon_upload_enable=YES
lftp 172.25.254.219 -u user2
cd pub/
put /etc/passwd ##可以上传
lftp 172.25.254.219 -u user1
cd pub/
put /etc/passwd ##不可以上传
在配置文件中写入:
在 /etc/vsftpd/conf_dir/user2文件中写入单独上传权限:
user2可以上传:
七·还原最初环境
rm -fr /etc/vsftpd/ ##删除建立的目录
yum install ftp ##重新安装ftp
上一篇: 浅谈_Java中的邮件发送
下一篇: 部署FTP服务器
推荐阅读