查看“Vsftpd虚拟用户设置”的源代码
来自Ubuntu中文
←
Vsftpd虚拟用户设置
跳到导航
跳到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
== 目标 == 首先我们假定你已经安装了vsftpd,并在/home/vsftpd 目录下建立了以下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文件的内容为 <pre>cd /home 切换到/home目录 sudo touch /home/loguser.txt 创建账户和密码文件 sudo gedit /home/loguser.txt 然后将下面的账户文件字符粘帖入loguser.txt中,注意一行一行输入。 </pre> <pre>注意:奇数行为账户名,偶数行为密码。也就是1.3.5.等行为用户名,2.4.6行为密码; 最后一行需要回车(否则建立数据库文件时无法识别最后一行,导致报奇数行错误)。</pre> <br> <pre>db1 db100 db2 db200 db3 db300</pre> === 生成数据库 === 如果你以前没装过db4.8-util 或者你不清楚装没装,需先执行下面的命令 <pre>sudo apt-get install db4.8-util</pre> 然后,我们执行 <pre>sudo db4.8_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 pam_userdb.so db=/etc/vsftpd_login account required pam_userdb.so db=/etc/vsftpd_login</pre> * 我们上一步建立的数据库 vsftpd_login 在此处被使用 * 我们建立的虚拟用户将采用PAM进行验证,这是通过/etc/vsftpd.conf文件中的 语句pam_service_name=vsftpd.vu来启用的,稍后你将发现。 == 为虚拟用户创建本地系统用户 == 新建一个系统用户vsftpd,用户家目录为/home/vsftpd, 用户登录终端设为/bin/false(即使之不能登录系统) <br> <pre>sudo useradd vsftpd -d /home/vsftpd -s /bin/false sudo chown vsftpd:vsftpd /home/vsftpd</pre> <h2> /etc/vsftpd.conf </h2> <p>根据需要创建/etc/vsftpd.conf,一般要确保含有以下设置: </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=vsftpd 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/vsftpd,权限也都一样。 那么怎么才能完成我们预定的目标呢? </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/vsftpd/dbzh1</pre> 同样,db2文件中的内容 <pre>local_root=/home/vsftpd/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/vsftpd/dbzh3</pre> <pre>这里要注意不能有空格,不然登录的时候会提示出错。</pre> <pre>如果有空格,在登录时,终端会提示:</pre> <pre>500 OOPS: bad bool value in config file for: guest_enable Login failed.</pre> <pre>或者</pre> <pre>500 OOPS: bad bool value in config file for: anon_upload_enable Login failed.</pre> <pre>等等之类的错误的布尔值提示</pre> <pre>因为你的那个YES/NO 布尔值(bool value)后边加了一个空格,即:</pre> <pre>anon_world_readable_only=NO空格</pre> <pre>正确的格式应该是:</pre> <pre>anon_world_readable_only=NO(无空格)!!!!!!</pre> <pre>注意,NO后边的空格,要用退格键将其删除。</pre> == 能成? == 重启vsftpd我们就可以看到效果了^_^ <pre>/etc/init.d/vsftpd start|restart</pre> == PERZECT === 500 OOPS: vsftpd: refusing to run with writable root inside chroot() 如果出现该错误,说明你ftp主文件夹的权限太大了,要去掉root,如下: chmod -x /home/vsftpd 就OK了! 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 [[Category:服务器]]
返回
Vsftpd虚拟用户设置
。
导航菜单
页面操作
页面
讨论
阅读
查看源代码
历史
页面操作
页面
讨论
更多
工具
个人工具
登录
导航
首页
最近更改
随机页面
页面分类
帮助
搜索
编辑
编辑指南
沙盒
新闻动态
字词处理
工具
链入页面
相关更改
特殊页面
页面信息