问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何配置Vsftpd的虚拟用户

发布网友 发布时间:2022-04-29 19:47

我来回答

2个回答

懂视网 时间:2022-04-30 00:08

# yum -y install mysql-server mysql-devel


2、安装pam_mysql-0.7RC1

# tar xf pam_mysql-0.7RC1.tar.gz 

# cd pam_mysql-0.7RC1

# ./configure --with-mysql=/usr --with-openssl

# make

# make install


# 启动mysql

# service mysqld start


3、创建数据库、表及虚拟用户

mysqladmin -uroot password ‘redhat‘

mysql -uroot -p

mysql> create database vsftpd;

mysql> use vsftpd;

mysql> create table users( id smallint auto_increment not null , name char(20) binary not null, password char(48) binary not null, primary key(id));

mysql> desc users;

mysql> insert into users (name,password) value (‘tom‘,password(‘redhat‘)),(‘jerry‘,password(‘redhat‘));

mysql> grant select on vsftpd.* to vsftpd@localhost identified by ‘vsftpd‘;

mysql> grant select on vsftpd.* to vsftpd@127.0.0.1 identified by ‘vsftpd‘;

mysql> select * from users;

mysql> flush privileges;


4、安装vsftpd

# yum install vsftpd lftp ftp


5、配置pam认证所需文件

# vim /etc/pam.d/vsftpd.mysql

auth required /lib/security/pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

account required /lib/security/pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

# 注:pam_mysql-0.7RC1源码目录下的README有介绍crypt的几种机制


6、建立虚拟用户映射的系统用户及对应的目录

# useradd -s /sbin/nologin -d /data/ftproot vuser

# chmod go+rx /data/ftproot/


7、配置vsftpd

# vim /etc/vsftpd/vsftpd.conf

anonymous_enable=YES

local_enable=YES

write_enable=YES

anon_upload_enable=NO

anon_mkdir_write_enable=NO

chroot_local_user=YES


pam_service_name=vsftpd.mysql        # 确保该文件名正确


guest_enable=YES

guest_username=vuser


8、启动vsftpd

# service vsftpd start

# chkconfig vsftpd on


9、测试vsftpd

# ftp localhost

Trying ::1...

ftp: connect to address ::1Connection refused

Trying 127.0.0.1...

Connected to localhost (127.0.0.1).

220 (vsFTPd 2.2.2)

Name (localhost:root): tom

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> pwd

ftp> lcd /tmp

ftp> get issue

ftp> put inittab

local: inittab remote: inittab

227 Entering Passive Mode (127,0,0,1,27,53).

550 Permission denied.

ftp> bye


10、配置虚拟用户具有不同的访问权限

    vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以定义其ftp服务访问权限,每个虚拟用户的配置文件名同虚拟用户的用户名。配置文件目录可以是任意未使用目录,只需要在vsftpd.conf指定其路径及名称即可。


# 配置vsftpd虚拟用户使用的配置文件目录

# vim /etc/vsftpd/vsftpd.conf

user_config_dir=/etc/vsftpd/vuser/


# 创建所需目录及配置文件

# mkdir /etc/vsftpd/vuser/

# cd /etc/vsftpd/vuser/

# touch tom jerry


# 配置对应虚拟用户权限

# vim tom

anon_upload_enable=NO


# vim jerry

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES


# 重启vsftpd

# service vsftpd restart


# 测试vsftpd

# ftp localhost

Trying ::1...

ftp: connect to address ::1Connection refused

Trying 127.0.0.1...

Connected to localhost (127.0.0.1).

220 (vsFTPd 2.2.2)

Name (localhost:root): jerry

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> put inittab 

local: inittab remote: inittab

227 Entering Passive Mode (127,0,0,1,73,116).

150 Ok to send data.

226 Transfer complete.

884 bytes sent in 2.2e-05 secs (40181.82 Kbytes/sec)

ftp> ls

227 Entering Passive Mode (127,0,0,1,71,165).

150 Here comes the directory listing.

-rw-------    1 500      500           884 May 22 13:00 inittab

-rw-r--r--    1 0        0              75 May 22 12:55 issue

226 Directory send OK.

ftp> bye



### 配置vsftpd支持openssl安全通信 ###

# 配置生成CA证书

# cd /etc/pki/CA

# (umask 077; openssl genrsa -out private/cakey.pem 2048)


# vim ../tls/openssl.cnf

countryName_default= CN

stateOrProvinceName_default= GuangDong

localityName_default= GuangZhou

0.organizationName_default= Test

organizationalUnitName_default= Tech

dir= /etc/pki/CA


# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3656


# mkdir certs crl newcerts

# touch index.txt

# echo 01 > serial


# mkdir -p /etc/vsftpd/ssl

# cd /etc/vsftpd/ssl/

# (umask 077;openssl genrsa -out vsftpd.key 2048)

# openssl req -new -key vsftpd.key -out vsftpd.csr


# openssl ca -in vsftpd.csr -out vsftpd.crt -days 3656


# 配置vsftpd支持ssl认证

# vim /etc/vsftpd/vsftpd.conf

ssl_enable=YES

ssl_tlsv1=YES

ssl_sslv2=NO

ssl_sslv3=YES

allow_anon_ssl=NO

force_local_data_ssl=YES

force_local_logins_ssl=YES

rsa_cert_file=/etc/vsftpd/ssl/vsftpd.crt

rsa_private_key_file=/etc/vsftpd/ssl/vsftpd.key


# 重启vsftpd

# service vsftpd restart


# 测试

# ftp localhost

Trying ::1...

ftp: connect to address ::1Connection refused

Trying 127.0.0.1...

Connected to localhost (127.0.0.1).

220 (vsFTPd 2.2.2)

Name (localhost:root): tom

530 Non-anonymous sessions must use encryption.

Login failed.


# 显示以上信息则表明OK,因Linux的ftp命令不支持ssl连接,固可用其它ftp客户端工具(例如filezilla)连接测试,并使用tcpdump工具抓包查看。

vsftpd+pam+mysql实现虚拟用户访问控制

标签:vsftp ftp lftp

热心网友 时间:2022-04-29 21:16

  1、建立虚拟用户口令库文件;
  # cat yy.txt
  注意:奇数行为用户,偶数行为密码;
  2、生成vsftpd的认证文件;
  # db_load -T -t hash -f yy.txt /etc/vsftpd/user.db //生成vsftpd的认证文件
  # file /etc/vsftpd/user.db
  /etc/vsftpd/yy.db: Berkeley DB (Hash, version 8, native byte-order)
  # chmod 600 /etc/vsftpd/user.db //设置yy.db文件权限只对root用户可读写;
  # ll /etc/vsftpd/user.db
  -rw------- 1 root root 12288 Jul 1 19:57 /etc/vsftpd/yy.db
  3、建立虚拟用户所需的PAM配置文件;内容如下:
  # cat /etc/pam.d/user.vu
  auth required /lib/security/pam_userdb.so db=/etc/vsftpd/user
  account required /lib/security/pam_userdb.so db=/etc/vsftpd/user
  4、建立虚拟用户及要访问的目录并设置相应的权限
  # useradd -d /home/ftp ftptest //建立用户名为ftptest,对应的宿主目录为ftp
  # chmod 700 /home/ftp //设置权限是700
  5、修改vsftpd.conf配置文件,添加虚拟用户的配置项,内容如下:
  guest_enable=YES
  guest_username=ftptest
  pam_service_name=user.vu
  6、重新启动vsftpd服务
  #service vsftp restart
  7、测试vsftpd中的虚拟用户账号
  #touch /home/ftp/a.txt
  #chown ftptest.ftptest /home/ftp/a.txt //建立一个文件供下载测试用
  C:\Documents and Settings\admin>ftp 192.168.2.101
  Connected to 192.168.2.101.
  220 (vsFTPd 2.0.1)
  User (192.168.2.101:(none)): ky //输虚拟FTP用户名
  331 Please specify the password.
  Password: //输FTP的密码
  230 Login successful. //成功
  ftp> get a.txt //下载a.txt文件
  200 PORT command successful. Consider using PASV.
  150 Opening BINARY mode data connection for a.txt (0 bytes)。
  226 File send OK. //成功下载
  ftp>
  8、为不同的虚拟用户给权限
  1)修改vsftpd.conf配置文件,在里面添加以下内容:
  user_config_dir=/etc/vsftpd_user_conf //设置在/etc/vsftpd_user_conf这个目录下保存虚拟用户的配置文件,
  2)建立用户配置文件目录
  # mkdir /etc/vsftpd_user_conf
  3)为虚拟用户建立单独的配置文件
  # cat /etc/vsftpd_user_conf/ky //虚拟用户ky的配置文件
  anon_world_readable_only=NO //具有浏览和下载的权限
  # cat /etc/vsftpd_user_conf/xx //虚拟用户xx的配置文件
  anon_world_readable_only=NO //具有浏览和下载的权限
  anon_upload_enable=YES //具有上传的权限
  anon_mkdir_write_enable=YES //有建立和删除目录权限
  anon_other_write_enable=YES //有文件改名和删除文件权限
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
南师足贴的功效和用法是什么 五指运湿膏能减肥吗 清颜六白膏真的管用吗 一个手机号建了两个微信号第一个微信号密码忘了怎么找回 ug最好用的版本是什么 带“沙鸥”的诗句大全(87句) 归计狎沙鸥的意思是什么 指期乘禁马,无暇狎沙鸥。 “无机终日狎沙鸥”的出处是哪里 “无暇狎沙鸥”的出处是哪里 笔记本电脑显卡怎么看型号以及参数呢? 如何选购笔记本电脑的显卡??? 我家电压力锅内胆糊啦,请问如何清理?重新加热粥时粥就糊啦,锅底就糊啦 笔记本电脑显卡型号怎么看 九阳电压力锅不粘锅内胆单卖吗 想买个笔记本电脑,选的电脑显卡要什么型号的好 九阳电压力锅50ys27内胆掉漆了怎么办 想买个电脑,求推荐,显卡应该选啥的笔记本? 粉色相思梅和什么颜色的多头玫瑰配好看? 九阳电压力锅胡底 九阳电饭锅锅底脱皮了怎么办? 图片和文字怎么组合成一张图片 笔记本电脑里的显卡怎样看型号?怎样分辨哪种型号的显卡好? 我们选择笔记本电脑显卡怎么选更好的? 笔记本电脑显卡型号选择 有什么好办法能让自己解压 如何让自己放松,解压 - 信息提示 怎么在QQ空间添加本地音乐的URL 在手机QQ上添加聊城本地好友为什么找不到,找到的全是外市的。请问怎么才能解决这个问题 我是代课多年,一直没有教师资格证。也没人叫我去办理教师资格证。因为我一直是代课,代课金很低,但工... 折叠车 变速车是外变好还是内变好? 谈谈内三速和外变速的区别 大行自行车变速器从速度的角度说外置的好还是内置的好? 自行车变速器内变速和外变速什么意思 本人想买辆变速自行车,在城市上下班用,内变速好还是外变速好。什么牌子好些。价格不超过500 请教:自行车塔轮变速和内变速哪个好。 变速自行车和不变速自行车,哪样好 linux邮件服务,如何建立虚拟用户访问ftp? 我们早已过了耳听爱情的年纪,求下一句,求对称。 这句话是什么意思?早已过了耳听爱情的年龄,也不再相信那些铮铮誓言,什么都抵不过饥饿时的一碗热饭,寒 爱情不是说说而已 我们已经过了耳听爱情的年纪 嘴上说的在好不如干一件实事 向女生表白后,已经说,我们都过了耳听爱情的年纪。我在该怎么回他? 为什么说早已过了耳听爱情的年纪? 手机支付宝记账如何与电脑同步 天天基金怎么和支付宝同步 支付宝的记账本是同步网络还是存在手机上的啊 【急】求助:ubuntu中vsftp服务如何设置虚拟账户登录 右眼一直跳周公解梦 女人右眼皮跳周公解梦