vsftpd for Ubuntu虚拟用户配置专版

服务器 2025 0 2012-03-28

vsftpd for Ubuntu虚拟用户配置专版
首先安装VSFTPD
代码:
apt-get install vsftpd  #此版本好像有编码问题,在windwos下看FTP中中文为乱码(望高手解答)


实验目的:利用虚拟用户可实现不同用户拥有不同权限的要求

第一步:建立本地虚拟用户(Create the local virtual user)
代码:
useradd -d /opt/ftp-server virtual       #新建virtual用户,指定主目录为/opt/ftp-server
mkdir /opt/ftp-server virtual 


第二步:建立虚拟用户数据库(Create the virtual users database)
用户手工建立文本文件logins.txt (保存到/tmp中)
logins.txt文件内容
代码:
download
123
upload
234
admin
345   

注:奇数行为用户名,偶数行为密码.

转换TXT文件为DB文件(DB应该是数据库文件吧*_*,反正我不知道)
代码:
apt-get install libdb3-util    #没安装这个软件包,db3_load命令就不能使用。
db3_load -T -t hash -f /tmp/logins.txt /etc/vsftpd_login.db
chmod 600 /etc/vsftpd_login.db


第三步:建立基于vsftpd_login的PAM授权文件(Create a PAM file which uses your new database)[此处也可用mysql建立用户信息]
代码:
cp /etc/pam.d/vsftpd /etc/pam.d/ftp.vu  #建立认证文件


#编辑文件将所有内容删除,将下面两句添加其中,保存。
代码:
gedit /etc/pam.d/ftp.vu   


auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login[/code]

第四步: 修改vsftpd.conf文件内容如下:(Create your vsftpd.conf config file)
代码:
anonymous_enable=NO
local_enable=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
chroot_local_user=YES
guest_enable=YES          #启用虚拟用户
guest_username=virtual      #将虚拟用户转换成本地用户virtual
user_config_dir=/etc/vsftpd/   #虚拟用户的配置文件存放目录
listen=YES
secure_chroot_dir=/tmp     #此句必要,很多网上教程没有加这句。
pam_service_name=ftp.vu   #此句为指定认证文件
user_config_dir=/etc/vsftpd/  #指定虚拟用户配置文件存放的目录
listen=YES


第五步: 建立针对虚拟用户库中不同用户的权限文件(第四步中已指定存放位置)
(在主目录virtual主目录下创建三个文件夹:download,upload,admin)
代码:
mkdir /opt/ftp-server/download
mkdir /opt/ftp-server/upload
mkdir /opt/ftp-server/admin
#方法一、将这三个文件夹权限改为所有人完全控制
chmod 777 –R /opt/ftp-server   
#方法二、还可以用chown virtual.virtual -R /opt/ftp-server命令改变属主
#然后使chmod 755 –R /opt/ftp-server这种方法更为安全。


代码:
gedit /etc/vsftpd/download     #加下以下内容,保存。
download文件内容如下(只能下载权限)
=====================
local_root=/opt/ftp-server/download
anon_world_readable_only=NO


代码:
gedit /etc/vsftpd/upload     #加下以下内容,保存。
upload文件内容如下(可上传权限)
=====================
local_root=/opt/ftp-server/upload
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES


代码:
gedit /etc/vsftpd/admin     #加下以下内容,保存。
admin文件内容如下(管理权限)
=====================
local_root=/opt/ftp-server/admin
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anno_other_writer_enable=YES


第六步: 重新启动VSFTP
#检测一下配置文件有没有错误 ,如果有会提示你错误的option是多少。
/usr/sbin/vsftpd
#如果提示500 OOPS: vsftpd: must be started as root (see run_as_launching_user option)
#表示基本上成功了,再输入以下命令。
/etc/init.d/vsftpd restart

第七步: 测试(Test)
自己测试吧。
 
附:
默认情况下,上传到FTP站点的文件的拥有者都是ftpguest,其他用户是没有访问权限的
所以,当访问网站的时候,会出现”没有权限访问该文件的错误”
那么我们把umask设置成033甚至000即可解决这个问题.
anon_umask=007 #虚拟用户需要使用anon_umask设置掩码,本地用户使用local_umask即可。
===========================================
微解释:
umask = 022 时,新建的目录 权限是755,文件的权限是 644
umask = 077 时,新建的目录 权限是700,文件的权限时 600

上一篇:ubuntu PHP 5.3 安装 Zend Guard Loader

下一篇:lnmp下配置nginx 404页面

讨论数量:0

请先登录再发表讨论。 2024-04-30

天涯网魂
3 杠 5 星
TA 的文章
TA 的随言
TA 的资源链