“Vsftpd虚拟用户设置”的版本间的差异
来自Ubuntu中文
小 (不增加该选项虚拟用户在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 | |
− | + | ||
− | secure_chroot_dir=/var/run/vsftpd | + | |
到现在为止,我们的3个用户都可以工作了,可是它们的根目录现在都是/home/ftp,权限也都一样。 那么怎么才能完成我们预定的目标呢? | 到现在为止,我们的3个用户都可以工作了,可是它们的根目录现在都是/home/ftp,权限也都一样。 那么怎么才能完成我们预定的目标呢? | ||
− | == /etc/vsftpd_user_conf== | + | == /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