查看“Vsftpd虚拟用户设置”的源代码
来自Ubuntu中文
←
Vsftpd虚拟用户设置
跳到导航
跳到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
本文作者:dbzhang800 授权许可:[http://www.creativecommons.cn/licenses/by-nc-sa/1.0/ 创作共享协议] 适用版本: 文章状态:完成 == 目标 == 首先我们假定你已经安装了vsftpd,并在/home/ftp目录下建立了以下3个子目录 * dbzh1 * dbzh2 * dbzh3 下面,我们要建3个虚拟用户,密码分别是用户名后加"00" * db1 * db2 * db3 '''使得''' * 用户db1 的主目录为 dbzh1 ,在该目录下只有只读权限 * 用户db2 的主目录为 dbzh2,在该目录下只有只读权限 * 用户db3 的主目录为 dbzh3 ,在该目录下拥有所有权限 == 创建虚拟用户数据库 == === 创建文本文件loguser.txt === 格式如下: <pre>user_id password</pre> 于是,我们/home/loguser.txt文件的内容为 <br> <pre>db1 db100 db2 db200 db3 db300</pre> === 生成数据库 === 如果你以前没装过libdb4.6-util 或者你不清楚装没装,需先执行下面的命令 <pre>sudo apt-get install db4.6-util</pre> 然后,我们执行 <pre>sudo db4.6_load -T -t hash -f /home/loguser.txt /etc/vsftpd_login.db</pre> <br>最后设置一下数据库文件的访问权限 <pre>sudo chmod 600 /etc/vsftpd_login.db</pre> == 配置PAM文件 == 新建/etc/pam.d/vsftpd.vu 内容如下: <pre>auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login account required /lib/security/pam_userdb.so db=/etc/vsftpd_login</pre> * 我们上一步建立的数据库 vsftpd_login 在此处被使用 * 我们建立的虚拟用户将采用PAM进行验证,这是通过/etc/vsftpd.conf文件中的 语句pam_service_name=vsftpd.vu来启用的,稍后你将发现。 == 为虚拟用户创建本地系统用户 == 新建一个系统用户virtual,用户家目录为/home/ftp, 用户登录终端设为/bin/false(即使之不能登录系统) <br> <pre>sudo useradd virtual -d /home/ftp -s /bin/false sudo chown virtual:virtual /home/ftp</pre> <h2> /etc/vsftpd.conf </h2> <p>根据需要创建/etc/vsftpd.conf,一般要确保含有以下设置: </p><p><br /> </p><p><br /> </p> <pre>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</pre> <p><br /> </p><p>现在为止,我们的3个用户都可以工作了,可是它们的根目录现在都是/home/ftp,权限也都一样。 那么怎么才能完成我们预定的目标呢? </p> == /etc/vsftpd_user_conf == 在上面的配置中,有这么一行 <pre>user_config_dir=/etc/vsftpd_user_conf</pre> 现在,我们要把各个用户的配置文件放到目录/etc/vsftpd_user_conf中 <br> <pre>sudo mkdir /etc/vsftpd_user_conf cd /etc/vsftpd_user_conf sudo touch db1 db2 db3</pre> db1文件中的内容如下 <pre>local_root=/home/ftp/dbzh1</pre> 同样,db2文件中的内容 <pre>local_root=/home/ftp/dbzh2</pre> 那么,db3的内容呢? 其实也很简单 <br> <pre>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/dbzh3</pre> 这里要注意不能有空格,不然登录的时候会提示出错。 我的这里面也有问题, == 能成? == 重启vsftpd我们就可以看到效果了^_^ <pre>/etc/init.d/vsftpd start|restart</pre> 500 OOPS: cannot change directory: linux打开ftp遇到的问题 500 OOPS: cannot change directory: google好多都是 执行这个就OK setsebool ftpd_disable_trans 1 service vsftpd restart 但是执行的时候遇到这个问题 Could not change active booleans: Invalid boolean 搜了好久终于解决 setsebool -P ftp_home_dir=1
返回
Vsftpd虚拟用户设置
。
导航菜单
页面操作
页面
讨论
阅读
查看源代码
历史
页面操作
页面
讨论
更多
工具
个人工具
登录
导航
首页
最近更改
随机页面
页面分类
帮助
搜索
编辑
编辑指南
沙盒
新闻动态
字词处理
工具
链入页面
相关更改
特殊页面
页面信息