我的网上记事本
« »
2010年06月19日Linux, 经验分享

安装 vsftpd FTP server 并使之支持虚拟用户

#下载最新版本vsftpd源文件

wget ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.2.2.tar.gz

tar -zxvf vsftpd*.gz

cd vsftpd*

#检查系统环境

./vsf_findlibs.sh

#输出信息可能如下:

/lib/libpam.so.0
-lpam
-lpam
-ldl
-lnsl
-lresolv
-lutil
/lib/libcap.so.1

#注意,若你看到的输出信息中没有 pam库,则你无法使用pam验证用户。也就是说,若你配置了使用pam验证用户,则用户无法登陆FTP服务器。切记切记。

#编译

make

#安装前的准备工作:

useradd nobody

mkdir /usr/share/empty/

mkdir /var/ftp/

useradd -d /var/ftp ftp

chown root.root /var/ftp

chmod og-w /var/ftp

#安装

make install

#拷贝配置文件

cp vsftpd.conf /etc

#安装Berkeley DB

yum install db4-utils db4

#建立虚拟用户:
#vftpusers.txt文件内容寄数行是用户帐号,偶数行是其密码

cd /etc
cat > vftpusers.txt

david
testpasswd

db_load -T -t hash -f vftpusers.txt vsftpd-virtual-user.db
chmod 600 vsftpd-virtual-user.db
rm vftpusers.txt

#编辑配置文件 /etc/vsftpd.conf,使之确保含有如下信息:

vi vsftpd.conf

anonymous_enable=NO
tcp_wrappers=NO
local_enable=YES
user_sub_token=$USER
virtual_use_local_privs=YES
write_enable=YES
pam_service_name=/etc/pam.d/vsftpd.virtual
guest_enable=YES
local_root=/home/vftp/$USER
chroot_local_user=YES
hide_ids=YES

#创建 vsftpd pam配置文件:

cat > /etc/pam.d/vsftpd.virtual

#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd-virtual-user
account required pam_userdb.so db=/etc/vsftpd-virtual-user

#建立文件存放目录:

mkdir /home/vftp
mkdir -p /home/vftp/david
chown -R ftp:ftp /home/vftp

#运行

手动运行:

/usr/local/sbin/vsftpd &

自动运行:

service xinetd restart

#检查ftp服务是否已经运行:

[root@iphost]# netstat -a | grep ftp
tcp 0 0 *:ftp *:* LISTEN

#测试

[root@iphost vsftpd-2.2.2]# ftp 192.168.1.15
Connected to 192.168.1.15.
220 (vsFTPd 2.2.2)
Name (192.168.1.15:root): david
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

#常见问题
若遇到虚拟用户不能登陆的问题,请以如下步骤检查:
1,检查系统中是否有 libpam.so
2,检查vsftpd是否能找到 libpam.so:

cd /usr/local/sbin/
ldd vsftpd

[root@iphost vsftpd-2.2.2]# cd /usr/local/sbin/
[root@iphost sbin]# ldd vsftpd
libpam.so.0 => /lib/libpam.so.0 (0×0061b000)
libdl.so.2 => /lib/libdl.so.2 (0×00d4b000)
libnsl.so.1 => /lib/libnsl.so.1 (0×00ecc000)
libresolv.so.2 => /lib/libresolv.so.2 (0×00220000)
libutil.so.1 => /lib/libutil.so.1 (0×003ea000)
libcap.so.1 => /lib/libcap.so.1 (0×0042f000)
libc.so.6 => /lib/tls/libc.so.6 (0×00233000)
libaudit.so.0 => /lib/libaudit.so.0 (0×0012b000)
/lib/ld-linux.so.2 (0×00491000)

连接ftp server出现如下信息:

500 OOPS: could not bind listening IPv4 socket

解决方法:将 /etc/vsftpd.conf 中的 listen=YES 注释掉即可。

日志信息 »

该日志于2010-06-19 18:00由 admin 发表在Linux, 经验分享分类下, 你可以发表评论。除了可以将这个日志以保留源地址及作者的情况下引用到你的网站或博客,还可以通过RSS 2.0订阅这个日志的所有评论。

没有评论

发表评论 »

返回顶部