centos7搭建vsftpd,并使用虚拟用户登录

最近开发同学要求在生产环境搭建一个ftp并配置两个用户。一个供开发使用拥有读写权限,一个供外部系统使用只有只读权限。

由于参加工作后一直没搭建过ftp服务,工作中也是别人搭建好的服务供我使用。所以接到这个需求后我的想法是在系统中创建两个用户,通过配置目录权限来实现。后来发现这个方法不是很友好,权限控制始终无法达到预期的效果。
后来静下心来想到以前学习的时候看到过虚拟用户,所以决定用虚拟用户来实现。现记录过程如下:
用户权限:testa可读写,testb只读

useradd -m -d /data/testa/ -s  /sbin/nologin testa

由于机器在生产域,无法直接通过yum的方式安装,因此需要先做一个yum源。

1. 查看生产机器的系统版本

# cat /etc/centos-release
CentOS Linux release 7.4.1708 (Core)

2. 上传一个与生产系统版本一致的操作系统,并将系统挂载到/mnt目录下

# ls -l CentOS-7-x86_64-DVD-1708.iso
-rwxr-xr-x 1 root root 4521459712 Sep 10 14:29 CentOS-7-x86_64-DVD-1708.iso
# mount /root/CentOS-7-x86_64-DVD-1708.iso /mnt
mount: /dev/loop0 is write-protected, mounting read-only

3. 修改yun源,指向刚刚挂载的系统镜像

# cd /etc/yum.repos.d/
# cat abcd.repo
[abcd]
name=test
baseurl=file:///mnt
enabled=1
gpgcheck=0

4. 安装vsftpd

# yum install vsftpd -y

5. 修改配置文件,这里仅将配置文件的主要内容贴出来。其中/etc/vsftpd/vsftpd_login.txt文件中单数行记录用户名,偶数行记录密码

# grep -v ^# /etc/vsftpd/vsftpd.conf | grep -v ^$
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd.vu
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
guest_username=hnmg
user_config_dir=/etc/vsftpd/user.d
allow_writeable_chroot=YES
#
#
# cat /etc/vsftpd/vsftpd_login.txt
testa
abc123
testb
abc456

6. 将vsftpd_login.txt转换成数据文件

# db_load -T -t hash -f vsftpd_login.txt vsftpd_login.db

7. 编辑pam认证模块支持虚拟用户的登陆

# vi /etc/pam.d/vsftpd.vu
auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required pam_userdb.so db=/etc/vsftpd/vsftpd_login

8. 创建用户配置文件的配置目录,并创建用户配置文件

#  mkdir -p /etc/vsftpd/user.d
# cat /etc/vsftpd/user.d/testa
write_enable=YES
anonymous_enable=NO
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_umask=022
anon_umask=022
download_enable=Yes
local_root=/data/testa/testa
#
#
# cat /etc/vsftpd/user.d/testb
write_enable=YES
anonymous_enable=NO
anon_world_readable_only=NO
local_umask=022
anon_umask=022
download_enable=Yes
local_root=/data/testa/testa

9. 启动vsftpd验证上传、下载功能

# systemctl start vsftpd
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。