Chinaunix首页 | 论坛 | 博客
  • 博客访问: 857865
  • 博文数量: 254
  • 博客积分: 5350
  • 博客等级: 大校
  • 技术积分: 2045
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-27 13:27
文章分类

全部博文(254)

文章存档

2015年(1)

2014年(9)

2013年(17)

2012年(30)

2011年(150)

2010年(17)

2009年(28)

2008年(2)

分类: 系统运维

2011-11-04 14:45:25

VsFTP配置

周末,在实验室的SUSE上用vsftp建立FTP网址,整个过程很简单,但是,对配制文件和使用用户的建立是这其中最难的,在建立FTP 的用户时,可以选择不同的用户模式,如对匿名用户的权限控制,那么在/etc/vsftpd.conf上就可以配置,比较困难的是建立虚拟的用户,这些用 户可以访问FTP,他们都是Local的,但是不能让他们访问本机,事实上还要给他们设立固定的路径。事实上有更好的办法。用一个笔记本建立用户名和密 码,然后使用PAM认证。

转载地址:      http://hi.baidu.com/kissdev/blog/item/02000f2f6af0d73d1e30891a.html

一、虚拟帐号的配置方法一:

实际上是nologin的帐号,通过db设置的方法见后。

#groupadd virtual
#useradd -g
virtual -d /var/ftp/pub/vc -s /sbin/nologin vc

#chown virtual:vc /var/ftp/pub/vc

# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
xferlog_file=/var/log/vsftpd.log #记载 Log
listen_port=60021
# the minimum port to allocate for PASV style data connections
pasv_min_port=62222
# the maximum port to allocate for PASV style data connections
pasv_max_port=63333
download_enable=NO #不允许下传
user_config_dir=/etc/vsftpd/vsftpd_user_conf
# 在目录
/etc/vsftpd/vsftpd_user_conf 下的用户同名文件设置将覆盖主设置


二、 CURL上传和下载
下载 curl -u user:password ftp://host:60021/filename
上传 curl -T filename
-u user:password ftp://host:60021/

三、配置虚拟用户的另外一种途径(转载)

如果你正在维护一个提供虚拟空间的服务器,为安全起见,你可能希望网站管理员只能管理他自己的文件。一个好的解决方法是:为所有的管理员配置 VSFTPD 的虚拟用户和根目录。下面我们就简明地解说一下如何做。
(参考: )

1、安装 of VSFTPD

对于 Red Hat, CentOS 和 Fedora 这些基于 RPM 的系统,可以用下面的命令安装 VSFTPD:

# yum install vsftpd

对于 Debian and Ubuntu,相应的命令是:

# apt-get install vsftpd

2、配置虚拟用户和密码验证

我们将使用 PAM 的 pam_userdb 来为虚拟用户提供密码验证。这需要一个 “db” 格式的数据库。我们需要“db_load”命令。对于 CentOS 和 Fedora,这个命令在 db4-utils 包里:

# yum install db4-utils

对于 Ubuntu:

# apt-get install db4.2-util

要创建“db”格式的文件,首先,我们创建一个普通文件文件“virtual-users.txt”,这个文件的格式非常简单,就是一行用户名,一行密码,循环往下写:

mary
123456
jack
654321

然后,执行下面的命令创建真正的数据库:

# db_load -T -t hash -f virtual-users.txt /etc/vsftpd/virtual-users.db

现在,创建一个 PAM 文件 /etc/pam.d/vsftpd-virtual 来使用这个数据库:

auth required pam_userdb.so db=/etc/vsftpd/virtual-users
account required pam_userdb.so db=/etc/vsftpd/virtual-users

3、配置 VSFTPD

创建配置文件 /etc/vsftpd/vsftpd-virtual.conf:

# disables anonymous FTP
anonymous_enable=NO
# enables non-anonymous FTP
local_enable=YES
# activates virtual users
guest_enable=YES
# virtual users to use local privs, not anon privs
virtual_use_local_privs=YES
# enables uploads and new directories
write_enable=YES
# the PAM file used by authentication of virtual uses
pam_service_name=vsftpd-virtual
# in conjunction with 'local_root',
# specifies a home directory for each virtual user
user_sub_token=$USER
local_root=/var/www/virtual/$USER
# the virtual user is restricted to the virtual FTP area
chroot_local_user=YES
# hides the FTP server user IDs and just display "ftp" in directory listings
hide_ids=YES
# runs vsftpd in standalone mode
listen=YES
# listens on this port for incoming FTP connections
listen_port=60021
# the minimum port to allocate for PASV style data connections
pasv_min_port=62222
# the maximum port to allocate for PASV style data connections
pasv_max_port=63333
# controls whether PORT style data connections use port 20 (ftp-data)
connect_from_port_20=YES
# the umask for file creation
local_umask=022

4、创建用户主目录

在上面的配置文件指定的目录下,创建所有虚拟用户的主目录(如果这些用户已经有自己的文件目录,只需要创建一个符号连接就可以了),并改变这些目录的属主为 ftp:

# mkdir /var/www/virtual/mary
# chown ftp:ftp /var/www/virtual/mary

5、启动 VSFTPD 并测试

用下面的命令启动 VSFTPD:

# /usr/sbin/vsftpd /etc/vsftpd/vsftpd-virtual.conf

用 lftp 命令测试虚拟用户的访问权限:

# lftp -u mary -p 60021 192.168.1.101

所有的虚拟用户应该可以管理他目录下的所有子目录和文件。

 

参数

说明

listen_address=ip address

指定侦听 IP

listen_port=port_value

指定侦听端口,默认 21

anonymous_enable=YES

是否允许使用匿名帐户

local_enable=YES

是否允许本地用户登录

nopriv_user=ftp

指定 vsftpd 服务的运行帐户,不指定时使用 ftp

write_enable=YES

是否允许写入

anon_upload_enable=YES

匿名用户是否可上传文件

anon_mkdir_write_enable=YES

匿名用户是否建立目录

dirmessage_enable=YES

进入每个目录是显示欢迎信息,在每个目录下建立 .message 文件在里面写欢迎信息

xferlog_enable=YES

上传 / 下载文件时记录日志

connect_from_port_20=YES

是否使用 20 端口传输数据 ( 是否使用主动模式 )

chown_uploads=YES chown_username=whoever

修改匿名用户上传文件的拥有者

xferlog_file=/var/log/vsftpd.log

日志文件

xferlog_std_format=YES

使用标准文件日志

idle_session_timeout=600

会话超时,客户端连接到 ftp 但未操作

data_connection_timeout=120

数据传输超时

async_abor_enable=YES

是否允许客户端使用 sync 等命令

ascii_upload_enable=YES ascii_download_enable=YES

是否允许上传 / 下载二进制文件

chroot_local_user=YES

限制所有的本地用户在自家目录

chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list

指定不能离开家目录的用户,将用户名一个一行写在 /etc/vsftpd/chroot_list 文件里,使用此方法时必须 chroot_local_user=NO

ls_recurse_enable=YES

是否允许使用 ls -R 等命令

listen=YES

开启 ipv4 监听

listen_ipv6=YES

开启 ipv6 监听

pam_service_name=vsftpd

使用 pam 模块控制, vsftpd 文件在 /etc/pam.d 目录下

userlist_enable=YES

此选项被激活后, vsftpd 将读取 userlist_file 参数所指定的文件中的用户列表。当列表中的用户登录 FTP 服务器时,该用户在提示输入密码之前就被禁止了。即该用户名输入后, vsftpd 查到该用户名在列表中, vsftpd 就直接禁止掉该用户,不会再进行询问密码等后续步聚

userlist_deny=YES

决定禁止还是只允许由 userlist_file 指定文件中的用户登录 FTP 服务器。此选项在 userlist_enable 选项启动后才生效。 YES ,默认值,禁止文件中的用户登录,同时也不向这些用户发出输入密码的提示。 NO ,只允许在文件中的用户登录 FTP 服务器

tcp_wrappers=YES

是否允许 tcp_wrappers 管理

local_root=/home/ftp

所有用户的根目录,,对匿名用户无效

anon_max_rate

匿名用户的最大传输速度,单位是 Byts/s

local_max_rate

本地用户的最大传输速度,单位是 Byts/s

download_enable= YES

是否允许下载

阅读(991) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~