安装 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.txtdavid
testpasswddb_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 注释掉即可。
没有评论 ▼