欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux:ftp服务的部署

程序员文章站 2022-05-18 21:26:23
...

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

Linux:ftp服务的部署
重启之后查看:
Linux:ftp服务的部署

做完以上步骤后,在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

Linux:ftp服务的部署
Linux:ftp服务的部署
在真机中测试(也可以在虚拟机中安装lftp):

yum  install  lftp        ##安装lftp
lftp  172.25.254.219        ##虚拟机ip
ls

Linux:ftp服务的部署

一·匿名用户

1、匿名用户修改家目录

在服务端虚拟机:
mkdir  /ftpdir/westosdir  -p   ##建立家目录
vim  /etc/vsftpd/vsftpd.conf
编写内容:anon_root=/ftpdir
systemctl restart vsftpd
做完之后需要注释
在真机:
lftp  172.25.254.219 
ls

Linux:ftp服务的部署

2、匿名用户是否可以登陆:

vim  /etc/vsftpd/vsftpd.conf
anonymous_enable=YES|NO        ##NO不可以登陆

当匿名用户为YES时:
Linux:ftp服务的部署
可以登陆:
Linux:ftp服务的部署
当匿名用户为NO时:
Linux:ftp服务的部署
不可以登陆:
Linux:ftp服务的部署
做完实验必须要改为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   ##上传

当没有赋予权限时,不能上传:
打开匿名用户上传以及不同用户可写:
Linux:ftp服务的部署
Linux:ftp服务的部署
Linux:ftp服务的部署
赋予权限后:

Linux:ftp服务的部署
第二种方法:

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

Linux:ftp服务的部署

4、匿名用户删除

vim  /etc/vsftpd/vsftpd.conf
编写内容:anon_other_write_enable=YES      ##匿名用户删除
lftp  172.25.254.219 
cd  pub/
rm group

编写内容:
Linux:ftp服务的部署
Linux:ftp服务的部署

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

当没有限速时的上传速率:
Linux:ftp服务的部署
当限速时的上传速率:
编写内容:
Linux:ftp服务的部署
Linux:ftp服务的部署

6、匿名用户建立目录:

anon_mkdir_write_enable=YES     ##打开匿名用户建立目录
lftp  172.25.254.219 
cd  pub/
mkdir test
ls

当没有打开建立目录时:
报错550:服务本身功能为开放
Linux:ftp服务的部署

打开匿名用户建立目录:
Linux:ftp服务的部署
Linux:ftp服务的部署

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

匿名用户没有给权限:
Linux:ftp服务的部署
group权限为默认600

编写内容:
Linux:ftp服务的部署
Linux:ftp服务的部署
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时:
Linux:ftp服务的部署
Linux:ftp服务的部署

当登陆与可写都为NO时:
Linux:ftp服务的部署
Linux:ftp服务的部署
做完实验后都要还原,都是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
Linux:ftp服务的部署
Linux:ftp服务的部署

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,看不到/目录
Linux:ftp服务的部署
看不到/目录:
Linux:ftp服务的部署
当打开改为NO时,可以看到/目录
Linux:ftp服务的部署
可以看到/目录:
Linux:ftp服务的部署

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    ##看不到/目录

在主配置文件中打开以下三个:
Linux:ftp服务的部署

当用户时黑名单时,不能看到/目录:
Linux:ftp服务的部署
Linux:ftp服务的部署

当用户是非黑名单用户时,可以看到/目录:
Linux:ftp服务的部署

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,意思是所有人不能浏览
Linux:ftp服务的部署

编写白名单用户;
Linux:ftp服务的部署

白名单可以查看/目录:
Linux:ftp服务的部署

除了白名单以外的用户查看不到/目录:
Linux:ftp服务的部署
做完以上实验后全都注释

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
Linux:ftp服务的部署

在 /etc/vsftpd/user_list文件中写入白名单用户:westos
Linux:ftp服务的部署

用户为westos时,可以查看/目录
Linux:ftp服务的部署

用户为非白名单用户,不能查看/目录
Linux:ftp服务的部署

(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
Linux:ftp服务的部署

在/etc/vsftps/ftpuser 文件中写入黑名单用户
Linux:ftp服务的部署

非黑名单用户登陆:
Linux:ftp服务的部署

黑名单用户登陆:
Linux:ftp服务的部署

当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 文件中编写普通用户以及密码
Linux:ftp服务的部署

在vim /etc/pam.d/westos 文件中写入:
Linux:ftp服务的部署
在 /etc/vsftpd/vsftpd.conf 文件中写入pam_service_name=westos和 guest_enable=YES
Linux:ftp服务的部署

(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 文件中
Linux:ftp服务的部署
Linux:ftp服务的部署

四·虚拟账户家目录独立设定

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  

主配置文件中:
Linux:ftp服务的部署
Linux:ftp服务的部署
Linux:ftp服务的部署

五·虚拟账户配置独立

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   ##不可以上传

在配置文件中写入:
Linux:ftp服务的部署
在 /etc/vsftpd/conf_dir/user2文件中写入单独上传权限:
Linux:ftp服务的部署
Linux:ftp服务的部署
user2可以上传:
Linux:ftp服务的部署

七·还原最初环境

rm  -fr  /etc/vsftpd/     ##删除建立的目录
yum  install  ftp         ##重新安装ftp

Linux:ftp服务的部署
Linux:ftp服务的部署