vsftp安装配置

技术分享 Story 74浏览 0评论
摘要

vsftp安装配置

2007-9-21 周五, 1:19

软件安装
解压软件,编辑builddefs.h文件
# tar zxvf vsftpd-2.0.5.tar.gz
# cd vsftpd-2.0.5
# vi builddefs.h
找到下面三行,其含义如右所示
#undef VSF_BUILD_TCPWRAPPERS //是否允许使用TCP Wrappers
#define VSF_BUILD_PAM //是否允许使用PAM认证
#undef VSF_BUILD_SSL //是否允许使用SSL

如果要允许以上所示某项功能,使把undef改为define即可,注意每行前的“#“号不是注释,不能去掉(熟悉C语言的同志应该知道这个“#”是什么意思)。其中TCP Wrappers是一个验证IP地址合法性的程序,PAM认证让vsftpd支持本地用户登陆服务器,使用SSL可以建立一个加密的数据传输。这里我们把三项都启用。
编译安装。如果系统中安装有旧版vsftpd,请先卸载它。默认安装执行文件在/usr/local/sbin中,man page放在/usr/local/man/man5与/usr/local/man/man8中。
# make
# make install

将默认配置文件考贝到/etc/vsftpd/
# mkdir /etc/vsftpd/
# cp vsftpd.conf /etc/vsftpd/

为了认vsftpd支持本地用户登录,我们将身份认证模块文件考入系统中。
# cp RedHat/vsftpd.pam /etc/pam.d/vsftpd

建立ftp用户及主目录:
# mkdir /var/ftp
# useradd -d /var/ftp ftp

如果本来就已经存在ftp用户,则执行下面两条命令:
# chown root:root /var/ftp
# chmod 755 /var/ftp

建立vsftpd需要的特殊目录:
# mkdir /usr/share/empty/

软件卸载
如果需要卸载,使用如下命令:
# rm /usr/local/sbin/vsftpd
# rm /usr/local/man/man5/vsftpd.conf.5
# rm /usr/local/man/man8/vsftpd.8
# rm /etc/xinetd.d/vsftpd
# rm -rf /etc/vsftpd

配置vsftpd
vsftpd.conf文件的所有项目都是以“参数=值”来设置的,对格式要求比较严格,必须严格区分大小写,等号两边不能有空格,每行的最后也不能有空格。在配置文件最后加入下面四行:
listen=yes //vsftpd工作在standalone 模式下
anonymous_enable=yes //允许匿名用户登陆服务器
local_enable=yes //允许本地用户登录到服务器
pam_service_name=vsftpd //使用PAM认证
服务启动脚本
在standalone 模式中,为了方便使用通常用脚本来控制启动和停止服务,建立一个新文件/etc/rc.d/init.d/vsftpd,把以下内容复制到文件中:
#!/bin/bash
#
# vsftpd This shell script takes care of starting and stopping
# standalone vsftpd.
#
# chkconfig: - 60 50
# description: Vsftpd is a ftp daemon, which is the program \
# that answers incoming ftp service requests.
# processname: vsftpd
# config: /etc/vsftpd/vsftpd.conf
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x /usr/local/sbin/vsftpd ] || exit 0
RETVAL=0
prog="vsftpd"
start() {
# Start daemons.
if [ -d /etc/vsftpd ] ; then
for i in `ls /etc/vsftpd/*.conf`; do
site=`basename $i .conf`
echo -n $"Starting $prog for $site: "
/usr/local/sbin/vsftpd $i &
RETVAL=$?
[ $RETVAL -eq 0 ] && {
touch /var/lock/subsys/$prog
success $"$prog $site"
}
echo
done
else
RETVAL=1
fi
return $RETVAL
}
stop() {
# Stop daemons.
echo -n $"Shutting down $prog: "
killproc $prog
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
return $RETVAL
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
stop
start
RETVAL=$?
;;
condrestart)
if [ -f /var/lock/subsys/$prog ]; then
stop
start
RETVAL=$?
fi
;;
status)
status $prog
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
exit 1
esac
exit $RETVAL

保存文件,再给该文件加上执行权限:
# chmod 755 /etc/rc.d/init.d/vsftpd

这样就可以通过下面的方法来管理服务了:
# service vsftpd {start|stop|restart|condrestart|status}
例如重新启动服务:
# service vsftpd restart
Shutting down vsftpd: [OK ]
Starting vsftpd for vsftpd: [OK ]

配置文件详解

1. 匿名及本地用户共同参数
write_enable=yes/no //是否允许全局可写
download_enable=yes/no //是否允许所有用户可以下载
dirlist_enable=yes/no //是否允许所有用户可以浏览(列出文件列表)
ftpd_banner=欢迎语字符串 //在登录时看到
banner_file=文件 //现示文本内容,和上面二选一
dirmessage_enable=yes/no //进入某个目录后显示的欢迎信息
message_file=文件

2. 本地用户管理
2.1 本地用户常规配置参数
local_root=/path //本地用户登陆服务器后直接进入的目录
local_umask=八进制数 //本地用户上传档案权限的 umask值
local_max_rate=数字 //本地用户传输速率单位为 bps
chmod_enable=yes/no // 是否允许本地用户改变ftp 服务器上档案的权限
user_config_dir=/path //用户单独配置文件所在目录
2.2 本地用户登录限制参数
userlist_enable=yes/no //是否启用 userlist 功能模块
userlist_deny=yes/no //是否拒绝 userlist 文件中用户登陆 ftp 服务
userlist_file=/path/to/file //指定的 userlist 文件名
2.3 本地用户的根目录参数
chroot_list_enable=yes/no //是否启用 chroot_list 文件
chroot_local_user=yes/no //是否限制本地用户的根目录为自己的主目录
chroot_list_file=/path/to/file //设置 chrootlist 文件名
3. 匿名用户参数
anon_upload_enable=yes/no //是否允许匿名用户上传
anon_mkdir_write_enable=yes/no //是否允许匿名用户建立文件夹
anon_other_write_enable=yes/no //是否允许匿名用户可以使用除了建立文件夹和上传文件以外其他的ftp写操作命令。例如:delete、rename 等等
anon_world_readable_only=yes/no //匿名用户是否允许下载所有用户都可以访问的文件
最后剩下的条目
listen=yes
anonymous_enable=yes
write_enable=yes
download_enable=yes
dirlist_enable=yes
anon_upload_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
anon_umask=八进制
anon_world_readable_only
chown_uploads=yes/no //是否开启修改默认匿名上传档案所有者的功能
chown_username=本地用户名 //匿名上传档案的所有者名
no_anon_password=yes

如何为用户进行单独的配置?
例:
我们在配置文件中加入以下几行:
local_umask=077
local_max_rate=20000
user_config_dir=/etc/vsftpd/vsftpd_user_dir
给予用户上传权限:
write_enable=yes
新建一个普通用户ioo,再新建一个目录/etc/vsftpd/vsftpd_user_dir,其下建一个文件ioo,里面加入下面几行:
local_root=/var/www/html
local_umask=022
local_max_rate=50000
把/var/www/html的所有者改为ioo:
chown ioo:ioo /var/www/html
测试之后我们发现,使用ioo用户登录后就直接进入var/www/html了,上传的文件(夹)权限为644(755),传输速率为50k,自定义的设置覆盖了主配置文件中的设置。

转载请注明:成长的对话 » vsftp安装配置