Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1733598
  • 博文数量: 782
  • 博客积分: 2455
  • 博客等级: 大尉
  • 技术积分: 4140
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-06 21:37
个人简介

Linux ,c/c++, web,前端,php,js

文章分类

全部博文(782)

文章存档

2015年(8)

2014年(28)

2013年(110)

2012年(307)

2011年(329)

分类:

2011-09-15 19:13:29

原文地址:linux vsftp搭建全过程 作者:lizenghuiping

昨天需要搭建个ftp,从网上下了个vsftp2.3.2,怎么配置也配置不成功,后来我换了vsftp2.1.0,同样的配置,配置成功了,!!再一次告诉我,高版本的软件不一定好,有哪位大虾2.3.2版本配置成功了,请告诉我一下怎么配置的,废话少说,开始说配置过程:
tar -zxvf vsftpd.tar.gz
cd vsftpd-2.1.0
make
make 过程中遇到一些问题,因为我用的是64位系统
 
/lib/libpam.so.0: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make: *** [vsftpd] Error 1
解决方法:
修改vsftpd 源码包的vsf_findlibs.sh
vi vsf_findlibs.sh
将locate_library /lib/libpam.so.0 && echo "/lib/libpam.so.0";
改为locate_library /lib64/libpam.so.0 && echo "/lib64/libpam.so.0";
然后再make clean
make
 
/lib/libcap.so.1: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make: *** [vsftpd] Error 1
同样修改vsf_findlibs.sh
# Look for libcap (capabilities)
if locate_library /lib/libcap.so.1; then
  echo "/lib/libcap.so.1";
else
  locate_library /usr/lib/libcap.so && echo "-lcap";
  locate_library /lib/libcap.so && echo "-lcap";
fi
修改为
# Look for libcap (capabilities)
if locate_library /lib64/libcap.so.1; then
  echo "/lib64/libcap.so.1";
else
  locate_library /usr/lib64/libcap.so && echo "-lcap";
  locate_library /lib64/libcap.so && echo "-lcap";
fi
然后 make clean
make
root@gateway vsftpd-2.1.0]# ls -l vsftp
vsftpd         vsftpd.8       vsftpd.conf

vsftpd needs the (empty) directory /usr/share/empty in the default
configuration. Add this directory in case it does not already exist. e.g.:

[root@localhost root]# mkdir /usr/share/empty/
mkdir: cannot create directory `/usr/share/empty': File exists

make install
if [ -x /usr/local/sbin ]; then \
                install -m 755 vsftpd /usr/local/sbin/vsftpd; \
        else \
                install -m 755 vsftpd /usr/sbin/vsftpd; fi
if [ -x /usr/local/man ]; then \
                install -m 644 vsftpd.8 /usr/local/man/man8/vsftpd.8; \
                install -m 644 vsftpd.conf.5 /usr/local/man/man5/vsftpd.conf.5; \
        elif [ -x /usr/share/man ]; then \
                install -m 644 vsftpd.8 /usr/share/man/man8/vsftpd.8; \
                install -m 644 vsftpd.conf.5 /usr/share/man/man5/vsftpd.conf.5; \
        else \
                install -m 644 vsftpd.8 /usr/man/man8/vsftpd.8; \
                install -m 644 vsftpd.conf.5 /usr/man/man5/vsftpd.conf.5; fi
if [ -x /etc/xinetd.d ]; then \
                install -m 644 xinetd.d/vsftpd /etc/xinetd.d/vsftpd; fi
 
mkdir /etc/vsftpd
cp /path/vsftpd/vsftpd.conf /etc/vsftpd/    //path是vsftpd的源码目录
vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=NO
local_umask=022
connect_from_port_20=YES
xferlog_enable=YES
xferlog_std_format=YES
anon_world_readable_only=NO
chroot_local_user=YES
guest_enable=YES
guest_username=guoguo(guoguo是系统用户,ftp根目录的所有者)
user_config_dir=/etc/vsftpd/config (指定虚拟用户 个人 登陆目录权限等 的配置路径)
pam_service_name=vsftpd (vsftpd为自定义名字,放在/etc/pam.d/目录下)
listen=YES
1.生成虚拟用户口令库文件。为了建立此口令库文件,先要生成一个文本文件。该文件的格式如下,单行为用户名,偶行为口令
#vi logins.txt
zhangsan
123456
2.生成口令库文件,并修改其权限:
#db_load -T -t hash -f /etc/vsftpd/logins.txt /etc/vsftpd/vsftpd_login.db
如果没有db4,yum 安装 db4,db4-devel,db4-utils
yum install db4 db4-devel db4-utils
#chmod 600 /etc/vsftpd/vsftpd_login.db
3.新建一个虚拟用户的PAM文件。加上如下两行内容:
#vi /etc/pam.d/vsftpd
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
4.建立虚拟用户,设置该用户所要访问的目录,并设置虚拟用户访问的权限:
5.#
mkdir /home/ftpsite
#useradd -d /home/ftpsite -s /sbin/nologin guoguo(创建用户guoguo,注意vsftpd.conf里的guest_username必须和这里对应)
#chmod 700 /home/ftpsite
经过该步骤的设置,/home/ftpsite就是guoguo用户的主目录,该用户也是ftpsite目录的拥有者。除root用户外,只有该用户具可对该目录的读、写和执行。
6.然后在用户配置文件目录下创建相应的用户配置文件,比如为上述名为zhangsan的用户创建一个配置文件(假设配置文件目录为/etc/vsftpd/vsftpd_config):
#vi /etc/vsftpd/vsftpd_config/zhangsan
local_root=/home/ftpsite/zhangsan(用户登陆后直接进入自己目录不能浏览别家目录)
anon_world_readable_only=NO
write_enable=YES  //允许在文件系统写入权限
anon_upload_enable=YES //开启上传权限
anon_mkdir_write_enable=YES //开启创建文件夹权限
anon_other_write_enable=YES //开启其他权限,如重命名,删除文件及文件夹
7,虚拟用户个人目录设置
大家可以发现,无论是哪个虚拟用户,登录后所在的目录都是/home/ftpsite,即都是guest用户的自家目录。下面,介绍如何为每个虚拟用户建立自家目录。
mkdir /home/ftpsite/zhangsan
一种作法是在虚拟用户的个人配置文件中使用local_root选项指定虚拟用户的自家目录。
以zhangsan为例,在第上步的基础上,首先/etc/vsftpd_user_conf/zhangsan文件中加入:
local_root=/home/ftpsite/zhangsan
================================================================================
注意:
1,guoguo是我们创建的真实用户,而zhangsan是为ftp创建的虚拟用户,当用zhangsan访问ftp时,ftp服务器会把该用户映射成guoguo用户,所以可以把/home/ftpsite/zhangsan的所属用户
给guoguo,然后改变目录权限
chown -R guoguo:guoguo ,/home/ftpsite/zhangsan
chmod 700 /home/ftpsite/zhangsan
2,/home/ftpsite是我们创建的主目录,/home/ftpsite/zhangsan是针对虚拟用户创建的个人目录
===================================
8. 启动VSFTP:
/usr/local/sbin/vsftpd /etc/vsftpd/vsftpd.conf &
以下是为Ftp添加新的用户的步骤
  1.在lognis.txt中添加用户名和密码(注意logins.txt是自定义的,要是有这个文件并且直接用该文件,该文件中以前的内容可以去掉不要)
  2.运行如下命令,将用户名和密码添加到数据库中
    db_load -T -t hash -f /etc/vsftpd/logins.txt /etc/vsftpd/vsftpd_login.db
  3.在/home/ftpsite中新建一个文件夹,与用户名相同
  4.在/etc/vsftpd_user_conf目录下新建和用户名(我们下面用xxx表示)相同的文件,并在其中加入
    vi /etc/vsftp_user_conf/xxx
    local_root=/home/ftpsite/xxx
    anon_world_readable_only=NO
    write_enable=YES
    anon_upload_enable=YES
 5,直接用ftp工具访问即可,不用重启ftp服务器.
以上是我配置vsftp的方法.限速还没有做,以后做了会及时更新.
总结:vsftpd配置顺序
1.安装源代码
2.建立本地系统账户
3.建立虚拟用户目录(在本地账户家目录里,目录名和虚拟账户名一致)
4.建立虚拟用户列表文件,然后通过db4把该文件封装成db
5.建立虚拟用户权限配置文件
6.配置pam认证.和虚拟用户列表文件相关联
7.配置vsfptd.conf,关联以上配置()
阅读(441) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~