centos vsftp虚拟用户实现
来源:互联网 发布:淘宝什么推广效果好 编辑:程序博客网 时间:2024/06/06 09:33
ftp常用的登录方式有如下三种:
匿名登录:在登录FTP时使用默认的用户名,一般是ftp或anonymous,密码为空;
本地用户登录:使用系统用户登录,用户信息保存在/etc/passwd中;
虚拟用户登录:FTP虚拟用户是FTP服务器的专有用户,使用虚拟用户登录FTP,只能访问FTP服务器提供的资源,大大增强了系统的安全,本文将展示如何在centos 上实现基于文件验证和基于数据库验证的虚拟用户登录和授权。
实现基于文件验证的vsftpd虚拟用户
一、创建用户数据库文件 (奇数行为用户名,偶数行为密码 )
vim /etc/vsftpd/vusers.txt wang wangpass xiaoming xiaoming cd /etc/vsftpd/ db_load -T -t hash -f vusers.txt vusers.db #生成db 文件 chmod 600 vusers.db 出于安全考虑改权限,不让别人看用户名
二、创建系统用户和访问FTP 目录
useradd -d /var/ftproot -s /sbin/nologin vuser chmod +rx /var/ftproot/
centos7 还需要执行以下操作:
chmod -w /var/ftproot/ centos7有写权限是登录不成功的,这点要注意!
mkdir /var/ftproot/upload
setfacl -m u:vuser:rwx /var/ftproot/upload
三、指定pam配置文件
vim /etc/vsftpd/vsftpd.conf guest_enable=YES guest_username=vuser 之前创建的系统账号 pam_service_name=vsftpd.db
四、创建pam配置文件
vim /etc/pam.d/vsftpd.db auth required pam_userdb.so db=/etc/vsftpd/vusers (就是db_load -T -t hash -f vusers.txt vusers.db 生成的) account required pam_userdb.so db=/etc/vsftpd/vusers
五、SELinux设置:
禁用SELinux
六、虚拟用户建立独立的配置文件
mkdir /etc/vsftpd/vusers.d/ 创建配置文件存放的路径
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vusers.d/
cd /etc/vsftpd/vusers.d/ 进入此目录
允许wang用户可读写
vim wang 创建各用户自已的配置文件
anon_upload_enable=YES 允许上传
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
vim xiaoming 创建各用户自已的配置文件
local_root=/ftproot/xiaoming 登录目录改变至指定的目录
验证:
客户端通过 ftp xxx 或者利用ftp 软件,如winscp 等工具登录既可。
[root@centos7 ~]#ftp 192.168.10.30Connected to 192.168.10.30 (192.168.10.30).220 “welcome to mage ftp server"Name (192.168.10.30:root): wang331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> ls227 Entering Passive Mode (192,168,10,30,20,14).150 Here comes the directory listing.drwx------ 3 4015 4017 4096 Sep 27 21:16 1674008317-rw------- 1 4015 4017 41 Sep 27 21:38 f11.ftp-rw-r--r-- 1 0 0 14 Sep 27 19:47 wangwendang226 Directory send OK.ftp> get wangwendang 只能下载属性全部是r 的文件
实现基于MYSQL验证的vsftpd虚拟用户
说明:本实验在两台CentOS主机上实现,一台centos6 做为FTP服务器,一台centos 7做数据库服务器
一、安装所需要包和包组:
在数据库服务器上安装包:
• Centos7:在数据库服务器上安装
yum –y install mariadb-server mariadb
systemctl start mariadb.service
systemctl enable mariadb
• Centos6: 在FTP服务器上安装vsftpd和pam_mysql包
centos6 pam_mysql由epel6的源中提供 , centos 7 的pam_mysql 则需要手动编译。
yum install vsftpd pam_mysql
二、在数据库服务器上创建虚拟用户账号
1.建立存储虚拟用户数据库和连接的数据库
mysql> CREATE DATABASE vsftpdb; mysql> SHOW DATABASES; mysql> GRANT SELECT ON vsftpd.* TO vsftpd@'192.168.%.%' IDENTIFIED BY 'centos'; '授权vsftpd用户从192.168. 登录和查询'
2 创建数据库并创建表
mysql> USE vsftpdb; Mysql> SHOW TABLES; mysql> CREATE TABLE users ( id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, name CHAR(50) BINARY NOT NULL,password CHAR(48) BINARY NOT NULL ); mysql>DESC users;
3.添加虚拟用户
根据需要添加所需要的用户,为了安全应该使用PASSWORD函数加密其密码后存储
mysql> USE vsftpd; mysql> DESC users; mysql> INSERT INTO users(name,password)values('wang',password('wangpass')); mysql> INSERT INTO users(name,password)values('ma',password('mapass')); mysql> SELECT * FROM users; '查询表和表中的用户信息:'MariaDB [vsftpdb]> desc users;+----------+----------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+----------+----------+------+-----+---------+----------------+| id | int(11) | NO | PRI | NULL | auto_increment || name | char(50) | NO | | NULL | || password | char(48) | NO | | NULL | |+----------+----------+------+-----+---------+----------------+3 rows in set (0.17 sec)MariaDB [vsftpd]> show tables;+------------------+| Tables_in_vsftpd |+------------------+| users |+------------------+1 row in set (0.08 sec)MariaDB [vsftpd]> select * from users;+----+------+-------------------------------------------+| id | name | password |+----+------+-------------------------------------------+| 1 | wang | *6B8CCC83799A26CD19D7AD9AEEADBCD30D8A8664 || 2 | ma | *6B8CCC83799A26CD19D7AD9AEEADBCD30D8A8664 |+----+------+-------------------------------------------+
三、在FTP服务器上配置vsftpd服务
1.在FTP服务器上建立pam认证所需文件
vi /etc/pam.d/vsftpd.mysql 添加如下两行 填连接数据的用户名和密码
auth required pam_mysql.so user=vsftpd passwd=centos host=192.168.10.33 db=vsftpd table=users usercolumn=username passwdcolumn=password crypt=2account required pam_mysql.so user=vsftpd passwd=centos host=192.168.10.33 db=vsftpd table=users usercolumn=username passwdcolumn=password crypt=2注意:参考README文档,,centos 在 /usr/share/doc/pam_mysql-0.7/README 。user=vsftpd passwd=centos host=192.168.10.33 '表示登录数据库 192.168.10.33的用户名和密码'db=vsftpd table=users usercolumn=usernamepasswdcolumn=password'分别表示db 的名称 表的名称 用户名名称和密码的名称 ,要和数据库里面的信息对上,否则认证肯定不会成功,重要!'crypt是加密方式,0表示不加密,1表示crypt(3)加密,2表示使用mysql password()函数加密,3表示md5加密,4表示sha1加密
2.建立相应用户和修改vsftpd配置文件,使其适应mysql认证建立虚拟用户映射的系统用户及对应的目录
useradd -s /sbin/nologin -d /var/ftproot vuser 创建系统用户vuserchmod 555 /var/ftproot centos7 需除去ftp根目录的写权限 mkdir /var/ftproot/{upload,pub} setfacl –m u:vuser:rwx /var/ftproot/upload 确保/etc/vsftpd.conf中已经启用了以下选项 anonymous_enable=YES 添加下面两项 guest_enable=YES 添加虚拟用户的映射guest_username=vuser pam_service_name=vsftpd.mysql '上一步骤编辑pam_mysql 的文件名称'
四 在FTP服务器上配置虚拟用户具有不同的访问权限
vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以
定义其ftp服务访问权限,每个虚拟用户的配置文件名同虚拟用
户的用户名。配置文件目录可以是任意未使用目录,只需要在
vsftpd.conf指定其路径及名称即可
• 1、配置vsftpd为虚拟用户使用配置文件目录
vim /etc/vsftpd/vsftpd.conf
添加如下选项
user_config_dir=/etc/vsftpd/vusers_config
• 2、创建所需要目录,并为虚拟用户提供配置文件,但是虚拟用户配置文件要和用户名同名!
mkdir /etc/vsftpd/vusers_config/
cd /etc/vsftpd/vusers_config/
touch wang ma
• 3、配置虚拟用户的访问权限
虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关
指令进行的。如果需要让用户wang具有上传文件的权限,可以
修改/etc/vsftpd/vusers_config/wang文件,在里面添加如下
选项并设置为YES即可,只读则设为NO
注意:需确保对应的映射用户对于文件系统有写权限
[root@Centos6.9 vusers.d]#cat malocal_root=/ftproot/ma/anon_upload_enable=YESanon_mkdir_write_enable=YESanon_other_write_enable=YES[root@Centos6.9 vusers.d]#cat wanglocal_root=/ftproot/wang/anon_upload_enable=YESanon_mkdir_write_enable=YESanon_other_write_enable=YES
五、启动vsftpd服务并关闭selinux
service vsftpd start
systemctl enable vsftpd 设为开机启动
查看端口开启情况
netstat -tnlp |grep :21
六、测试:利用FTP客户端工具,以虚拟用户登录验证结果
本人用的是 winscp ,选择新建会话,分别用 wang 和ma 登录,会看到不同的文件
- centos vsftp虚拟用户实现
- CentOS vsftp虚拟用户
- centos上配置vsftp,虚拟用户访问
- centos 6.5下 vsftp 虚拟用户配置
- centos 6.5下 vsftp 虚拟用户配置
- centos 安装 vsftp 及虚拟用户配置
- centos 6.5下 vsftp 虚拟用户配置
- centos 6.5搭建vsftp虚拟用户
- Centos 安装vsftp 虚拟用户,单独访问目录
- VSFTP配置虚拟用户
- vsftp设置虚拟用户
- Vsftp支持虚拟用户
- vsftp配置虚拟用户
- VSFTP配置虚拟用户
- vsftp虚拟用户
- VSFTP配置虚拟用户
- vsftp 虚拟用户配置
- vsftp配置虚拟用户
- Oracle开发学习记录
- Linux 批量删除空文件夹
- hadoop出现的错误
- Java 里如何实现线程间通信
- [C#网络编程系列]专题一:网络协议简介
- centos vsftp虚拟用户实现
- vbs基础教程
- 大话Linux内核中锁机制之内存屏障、读写自旋锁及顺序锁
- RecycleVIew添加和删除,以及三种展现方式
- centos 7 安装latest python 2.7.14
- 为什么说jsp是servlet?JSP是如何转换成servlet的?
- org.hibernate.MappingException: Unknown entity:的解决办法
- Tableviewcell的registerNib与registerClass的差异
- iOS 11适配之跳转App Store评论