Vsftpd虚拟用户设置:修订间差异
小 不增加该选项虚拟用户在vsftpd 2.05上无法登陆 |
小无编辑摘要 |
||
第7行: | 第7行: | ||
文章状态:完成 | 文章状态:完成 | ||
==目标== | == 目标 == | ||
首先我们假定你已经安装了vsftpd,并在/home/ftp目录下建立了以下两个子目录 | 首先我们假定你已经安装了vsftpd,并在/home/ftp目录下建立了以下两个子目录 | ||
* dbzh1 | |||
*db1 | * dbzh2 | ||
*db2 | |||
*db3 | 下面,我们要建3个虚拟用户,密码分别是用户名後加"00" | ||
* db1 | |||
* db2 | |||
* db3 | |||
'''使得''' | '''使得''' | ||
*用户db1 的主目录为 dbzh1 ,在该目录下只有只读权限 | * 用户db1 的主目录为 dbzh1 ,在该目录下只有只读权限 | ||
*用户db2 的主目录为 dbzh2,在该目录下只有只读权限 | * 用户db2 的主目录为 dbzh2,在该目录下只有只读权限 | ||
*用户db3 的主目录为 dbzh1 ,在该目录下拥有所有权限 | * 用户db3 的主目录为 dbzh1 ,在该目录下拥有所有权限 | ||
==创建虚拟用户数据库 == | == 创建虚拟用户数据库 == | ||
=== 创建文本文件loguser.txt === | |||
格式如下: | 格式如下: | ||
user_id | user_id | ||
password | |||
于是,我们loguser.txt文件的内容为 | 于是,我们loguser.txt文件的内容为 | ||
db1 | db1 | ||
db100 | |||
db2 | |||
db200 | |||
db3 | |||
db300 | |||
=== 生成数据库 === | |||
如果你以前没装过libdb3-util 或者你不清楚装没装,需先执行下面的命令 | 如果你以前没装过libdb3-util 或者你不清楚装没装,需先执行下面的命令 | ||
sudo apt-get install libdb3-util | |||
然後,我们执行 | |||
sudo db3_load -T -t hash -f loguser.txt /etc/vsftpd_login.db | sudo db3_load -T -t hash -f loguser.txt /etc/vsftpd_login.db | ||
最後设置一下数据库文件的访问权限 | |||
sudo chmod 600 /etc/vsftpd_login.db | sudo chmod 600 /etc/vsftpd_login.db | ||
==配置PAM文件== | == 配置PAM文件 == | ||
新建/etc/pam.d/vsftpd.vu 内容如下: | 新建/etc/pam.d/vsftpd.vu 内容如下: | ||
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login | auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login | ||
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login | |||
*我们上一步建立的数据库 vsftpd_login 在此处被使用 | * 我们上一步建立的数据库 vsftpd_login 在此处被使用 | ||
*我们建立的虚拟用户将采用PAM进行验证,这是通过/etc/vsftpd.conf文件中的 语句pam_service_name=vsftpd. | * 我们建立的虚拟用户将采用PAM进行验证,这是通过/etc/vsftpd.conf文件中的 语句pam_service_name=vsftpd.vu来启用的,稍後你将发现。 | ||
==为虚拟用户创建本地系统用户== | == 为虚拟用户创建本地系统用户 == | ||
新建一个系统用户virtual,用户家目录为/home/ftp, 用户登录终端设为/bin/false(即使之不能登录系统) | 新建一个系统用户virtual,用户家目录为/home/ftp, 用户登录终端设为/bin/false(即使之不能登录系统) | ||
sudo useradd virtual -d /home/ftp -s /bin/false | sudo useradd virtual -d /home/ftp -s /bin/false | ||
sudo chown virtual.virtual /home/ftp | |||
== /etc/vsftpd.conf == | == /etc/vsftpd.conf == | ||
第69行: | 第80行: | ||
根据需要创建/etc/vsftpd.conf,一般要确保含有一下设置: | 根据需要创建/etc/vsftpd.conf,一般要确保含有一下设置: | ||
<br> | |||
listen=YES | listen=YES | ||
anonymous_enable=NO | anonymous_enable=NO | ||
dirmessage_enable=YES | dirmessage_enable=YES | ||
xferlog_enable=YES | xferlog_enable=YES | ||
xferlog_file=/var/log/vsftpd.log | xferlog_file=/var/log/vsftpd.log | ||
xferlog_std_format=YES | xferlog_std_format=YES | ||
chroot_local_user=YES | chroot_local_user=YES | ||
guest_enable=YES | guest_enable=YES | ||
guest_username=virtual | guest_username=virtual | ||
user_config_dir=/etc/vsftpd_user_conf | user_config_dir=/etc/vsftpd_user_conf | ||
pam_service_name=vsftpd.vu | pam_service_name=vsftpd.vu | ||
local_enable=YES | local_enable=YES | ||
secure_chroot_dir=/var/run/vsftpd | |||
到现在为止,我们的3个用户都可以工作了,可是它们的根目录现在都是/home/ftp,权限也都一样。 那么怎么才能完成我们预定的目标呢? | |||
== /etc/vsftpd_user_conf == | |||
在上面的配置中,有这么一行 | 在上面的配置中,有这么一行 | ||
user_config_dir=/etc/vsftpd_user_conf | user_config_dir=/etc/vsftpd_user_conf | ||
现在,我们要把各个用户的配置文件放到目录/etc/vsftpd_user_conf中 | 现在,我们要把各个用户的配置文件放到目录/etc/vsftpd_user_conf中 | ||
sudo mkdir /etc/vsftpd_user_conf | sudo mkdir /etc/vsftpd_user_conf | ||
cd /etc/vsftpd_user_conf | |||
sudo touch db1 db2 db3 | |||
db1文件中的内容如下 | db1文件中的内容如下 | ||
local_root=/home/ftp/dbzh1 | local_root=/home/ftp/dbzh1 | ||
同样,db2文件中的内容 | 同样,db2文件中的内容 | ||
local_root=/home/ftp/dbzh2 | local_root=/home/ftp/dbzh2 | ||
那么,db3的内容呢? 其实也很简单 | 那么,db3的内容呢? 其实也很简单 | ||
write_enable=YES | write_enable=YES | ||
anon_world_readable_only=NO | |||
anon_upload_enable=YES | |||
anon_mkdir_write_enable=YES | |||
anon_other_write_enable=YES | |||
local_root=/home/ftp/dbzh1 | |||
== 完成 == | == 完成 == | ||
重启vsftpd我们就可以看到效果了^_^ | 重启vsftpd我们就可以看到效果了^_^ | ||
/etc/init.d/vsftpd start|restart | /etc/init.d/vsftpd start|restart |
2008年1月3日 (四) 15:49的版本
本文作者:dbzhang800
授权许可:创作共享协议
适用版本:
文章状态:完成
目标
首先我们假定你已经安装了vsftpd,并在/home/ftp目录下建立了以下两个子目录
- dbzh1
- dbzh2
下面,我们要建3个虚拟用户,密码分别是用户名後加"00"
- db1
- db2
- db3
使得
- 用户db1 的主目录为 dbzh1 ,在该目录下只有只读权限
- 用户db2 的主目录为 dbzh2,在该目录下只有只读权限
- 用户db3 的主目录为 dbzh1 ,在该目录下拥有所有权限
创建虚拟用户数据库
创建文本文件loguser.txt
格式如下:
user_id
password
于是,我们loguser.txt文件的内容为
db1
db100 db2 db200 db3 db300
生成数据库
如果你以前没装过libdb3-util 或者你不清楚装没装,需先执行下面的命令
sudo apt-get install libdb3-util
然後,我们执行
sudo db3_load -T -t hash -f loguser.txt /etc/vsftpd_login.db
最後设置一下数据库文件的访问权限
sudo chmod 600 /etc/vsftpd_login.db
配置PAM文件
新建/etc/pam.d/vsftpd.vu 内容如下:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
- 我们上一步建立的数据库 vsftpd_login 在此处被使用
- 我们建立的虚拟用户将采用PAM进行验证,这是通过/etc/vsftpd.conf文件中的 语句pam_service_name=vsftpd.vu来启用的,稍後你将发现。
为虚拟用户创建本地系统用户
新建一个系统用户virtual,用户家目录为/home/ftp, 用户登录终端设为/bin/false(即使之不能登录系统)
sudo useradd virtual -d /home/ftp -s /bin/false
sudo chown virtual.virtual /home/ftp
/etc/vsftpd.conf
根据需要创建/etc/vsftpd.conf,一般要确保含有一下设置:
listen=YES anonymous_enable=NO dirmessage_enable=YES xferlog_enable=YES xferlog_file=/var/log/vsftpd.log xferlog_std_format=YES chroot_local_user=YES guest_enable=YES guest_username=virtual user_config_dir=/etc/vsftpd_user_conf pam_service_name=vsftpd.vu local_enable=YES secure_chroot_dir=/var/run/vsftpd
到现在为止,我们的3个用户都可以工作了,可是它们的根目录现在都是/home/ftp,权限也都一样。 那么怎么才能完成我们预定的目标呢?
/etc/vsftpd_user_conf
在上面的配置中,有这么一行
user_config_dir=/etc/vsftpd_user_conf
现在,我们要把各个用户的配置文件放到目录/etc/vsftpd_user_conf中
sudo mkdir /etc/vsftpd_user_conf cd /etc/vsftpd_user_conf
sudo touch db1 db2 db3
db1文件中的内容如下
local_root=/home/ftp/dbzh1
同样,db2文件中的内容
local_root=/home/ftp/dbzh2
那么,db3的内容呢? 其实也很简单
write_enable=YES
anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES local_root=/home/ftp/dbzh1
完成
重启vsftpd我们就可以看到效果了^_^
/etc/init.d/vsftpd start|restart