ftp服务器搭建以及虚拟用户配置实现不同用户不同权限

1.搭建ftp服务器

1.1 安装准备

#关闭防火墙
systemctl stop firewalld
#关闭selinux
setenforce 0

1.2 安装启动

#安装vsftpd服务
yum install vsftpd -y
#安装ftp客户端
yum install ftp
#查看以安装ftp服务
[root@bubble01 ~]# rpm -qa|grep ftp
ftp-0.17-67.el7.x86_64
vsftpd-3.0.2-28.el7.x86_64
#启动服务
systemctl restart vsftpd
#查看服务
ps -ef|grep vsftpd

1.3 匿名用户登录

#默认开启匿名用户登录,可以使用anonymous或者ftp用户,密码为空,默认登录进去目录为/var/ftp;
##	anonymoys用户登录
[root@bubble01 ~]# ftp 192.168.153.141
ftp 192.168.153.141
Connected to 192.168.153.141 (192.168.153.141).
220 (vsFTPd 3.0.2)
Name (192.168.153.141:root): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/"
ftp> ls
227 Entering Passive Mode (192,168,153,141,188,110).
150 Here comes the directory listing.
drwxr-xr-x    2 0        0               6 Oct 13 16:10 pub
226 Directory send OK.

##	ftp用户登录
[root@bubble01 ~]# ftp 192.168.153.141
Connected to 192.168.153.141 (192.168.153.141).
220 (vsFTPd 3.0.2)
Name (192.168.153.141:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/"
ftp> ls
227 Entering Passive Mode (192,168,153,141,208,238).
150 Here comes the directory listing.
drwxr-xr-x    2 0        0               6 Oct 13 16:10 pub
226 Directory send OK.

1.4 匿名用户上传下载

#默认匿名用户登录可以可以下载,不能上传,需要开启相应的权限,
##开启上传权限
anon_upload_enable=YES
##开启创建文件权限
anon_mkdir_write_enable=YES
##开启重命名,删除权限
anon_other_write_enable=YES
anon_umask=022

#给/var/ftp/pub目录赋权
chmod o+w /var/ftp/pub

#此时可以在/var/ftp/pub目录上传下载删除重命名

1.5 本地用户访问

1.5.1 新建本地用户

本地用户访问需要ftp服务器上存在该用户,默认登录到其家目录,可以切换到根目录,风险较大

#创建本地用户lottery
useradd lottery -s /bin/bash
echo "lottery"|passwd --stdin lottery
#本地用户登录
[root@bubble01 ~]# ftp 192.168.153.141
Connected to 192.168.153.141 (192.168.153.141).
220 (vsFTPd 3.0.2)
Name (192.168.153.141:root): lottery
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/home/lottery"
ftp> cd /
250 Directory successfully changed.
ftp> pwd
257 "/"
1.5.2 限制系统用户越狱
chroot_local_user=YES
chroot_list_enable=NO
#如果将某个用户限制在其家目录,必须开启如下权限或者取消其家目录的写权限,否则会报如下错误
#500 OOPS: vsftpd: refusing to run with writable root inside chroot()
allow_writeable_chroot=YES	

# chroot_local_user: 是否将所有用户限制在主目录,YES为启用,NO禁用.(该项默认值是NO)
# chroot_list_enable: 是否启动限制用户(特例)的名单 YES为启用,NO禁用(包括注释掉也为禁用)

1.6 限制本地用户或者匿名用户登录

#不允许匿名用户登录
anonymous_enable=NO
#允许匿名用户登录
anonymous_enable=YES
#不允许本地用户登录
local_enable=NO
#允许本地用户登录
local_enable=YES

2.虚拟用户配置

2.1 创建虚拟用户映射的本地用户

#创建系统用户,用于虚拟用户映射
useradd -s /sbin/nologin -d /var/tmp/virftp virftp
#给家目录赋予500权限
chmod 500 /var/tmp/virftp
#创建虚拟用户目录(足球队,篮球队)
mkdir /var/tmp/virftp/football
mkdir /var/tmp/virftp/basketball
#给虚拟用户目录赋予700权限,属组赋给映射的本地用户
chmod 700 /var/tmp/virftp/football
chmod 700 /var/tmp/virftp/basketball
chown -R virftp. /var/tmp/virftp/football
chown -R virftp. /var/tmp/virftp/basketball

2.2 配置文件开启虚拟用户功能

#编辑vsftpd.conf
#开启虚拟用户登录功能
guest_enable=YES
#将虚拟用户映射为本地用户virftp
guest_username=virftp
#虚拟用户是否使用本地用户权限,YES:是;NO:否
virtual_use_local_privs=NO
#虚拟用户配置文件
user_config_dir=/etc/vsftpd/vconf.d/

#重启vsftpd服务
systemctl restart vsftpd

2.3 建立虚拟用户验证数据库

#创建虚拟用户密码文件,奇数行用户,偶数行密码
[root@bubble01 vsftpd]# cat /etc/vsftpd/vuser
ft01
111111
ft02
222222
bt01
111111
bt02
222222
#使用db_load工具加密用户密码文件,并赋予文件600权限(600权限是规范,不是必须)            
[root@bubble01 vsftpd]# db_load -T -t hash -f /etc/vsftpd/vuser /etc/vsftpd/vuser.db
[root@bubble01 vsftpd]# chmod 600 /etc/vsftpd/vuser /etc/vsftpd/vuser.db

2.4 开启pam认证

#修改/etc/pam.d/vsftpd文件,行首处添加:
auth	sufficient	/lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
account	sufficient	/lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
#添加完如下:
[root@bubble01 vsftpd]# cat /etc/pam.d/vsftpd 
auth	sufficient	/lib64/security/pam_userdb.so db=/etc/vsftpd/viruser
account	sufficient	/lib64/security/pam_userdb.so db=/etc/vsftpd/viruser
#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
auth       required	pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth       required	pam_shells.so
auth       include	password-auth
account    include	password-auth
session    required     pam_loginuid.so
session    include	password-auth

2.5 设置不同用户不同权限

#创建权限配置文件存放目录
mkdir /etc/vsftpd/vconf.d

#创建权限配置文件,文件名同用户名
touch /etc/vsftpd/vconf.d/ft01
touch /etc/vsftpd/vconf.d/ft02
touch /etc/vsftpd/vconf.d/bt01
touch /etc/vsftpd/vconf.d/bt02

#权限模板1(可以上传下载删除重命名)
##指定家目录
local_root=/var/tmp/virftp/xxx
##允许新建文件或目录权限
anon_umask=077
##开放下载权限
anon_world_readable_only=NO
##开放上传权限
anon_upload_enable=YES
##开放创建目录权限
anon_mkdir_write_enable=YES
##开放删除和重命名目录的权限
anon_other_write_enable=YES

#权限模板2(只能下载)
##指定家目录
local_root=/var/tmp/virftp/xxx
##开放下载权限
anon_world_readable_only=NO
#给ftp01赋予可以上传下载删除重命名权限
[root@bubble01 vsftpd]# cat vconf.d/ft01 
##指定家目录
local_root=/var/tmp/virftp/football
##允许新建文件或目录权限
anon_umask=077
##开放下载权限
anon_world_readable_only=NO
##开放上传权限
anon_upload_enable=YES
##开放创建目录权限
anon_mkdir_write_enable=YES
##开放删除和重命名目录的权限
anon_other_write_enable=YES
#给ftp02赋予只能下载权限
[root@bubble01 vsftpd]# cat vconf.d/ft02
##指定家目录
local_root=/var/tmp/virftp/football
##开放下载权限
anon_world_readable_only=NO

2.6 虚拟用户登录报错解决

#登录报错
[root@bubble01 vconf.d]# ftp 192.168.153.141
Connected to 192.168.153.141 (192.168.153.141).
220 (vsFTPd 3.0.2)
Name (192.168.153.141:root): ft01
331 Please specify the password.
Password:
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Login failed.
421 Service not available, remote server has closed connection
ftp> by
#vsftpd.conf配置文件添加allow_writeable_chroot=YES,重启服务解决

权限测试

ft01用户登录,可以上传、下载、重命名、创建目录、删除
ft02只能下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值