Ubuntu中Vsftpd配置上传管理Web目录

配置vsftpd主要是为了方便上传web,并让apache能够访问。

以默认目录/var/www为例

目标:
建立ftp服务,指定虚拟用户并设置对提供web的目录具有写操作。

指定apache服务所在用户加入ftp虚拟用户组,使ftp只需要调整组权限就能调整是否对apache可写,无需777权限。\

1.vsftpd安装,添加虚拟用户的帐户

sudo apt-get install vsftpd

sudo useradd ftpvirtual -d /home/ftpvirtual -s /bin/false

修改vsftpd配置文件

sudo vim /etc/vsftpd.conf

自己的配置文件为:

listen=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
data_connection_timeout=2
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd#权限验证,指向/etc/pam.d/vsftpd
user_config_dir=/etc/vsftpd/user_conf#虚拟用户的配置目录

data_connection_timeout=120

guest_enable=YES#打开虚拟用户
guest_username=ftpvirtual#虚拟用户使用的本地用户,由上面命令创建

准备建立虚拟用户,本来还有MySQL的方式,不过太麻烦就懒得去做了,用不到这么强的功能。

首先建立一个空白文件:

sudo vim /etc/vsftpd/virtuals

该文件输入的内容就是虚拟用户的用户名和密码,格式为一行用户名一行密码例如:

testuser

111111

username

password

使用命令将该文本转为数据库,这里不清楚是否安装了db4.7-util,没有安装的执行下面命令(可能老版本为4.6,新版本就不知道了)

sudo apt-get install db4.7-util

执行命令建立数据库文件

sudo db4.7_load -T -t hash -f /etc/vsftpd/virtuals /etc/vsftpd/virtuals.db

设置一下数据库文件权限,并删除刚才的文本文件

sudo chmod 600 /etc/vsftpd/virtuals.db

sudo rm /etc/vsftpd/virtuals

现在配置PAM文件

sudo vim /etc/pam.d/vsftpd

修改内容为下面内容,注意没有".db"这个后缀

auth required /lib/security/pam_userdb.so db=/etc/vsftpd/virtusers
account required /lib/security/pam_userdb.so db=/etc/vsftpd/virtusers

将/var/www拥有者和组改为ftpvirtual

sudo chown -R ftpvirtual:ftpvirtual /var/www

建立虚拟用户配置文件

sudo vim /etc/vsftpd/user_conf/test_user

加入以下权限设置内容

write_enable=YES
local_root=/var/www
local_umask=003
anon_umask=003
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

将www-data用户加入ftpvirtual用户组

gpasswd -a www-data ftpvirtual

重启vsftpd

sudo /etc/init.d/vsftpd restart

以上配置完成。

如果考虑更安全的权限,应该把anon_umask调整为023,需要可写的地方用ftp设置组的写权限。

配置环境

Ubuntu 9.04 server 32bit

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/24607.html