Chinaunix
标题:
vsftpd-2.0.7源代码安装
[打印本页]
作者:
xiaoyun5109
时间:
2008-11-10 11:19
标题:
vsftpd-2.0.7源代码安装
操作系统: centos 5.2
1、编辑解压出来的builddefs.h文件:
[root@cacti vsftpd-2.0.7]# vi builddefs.h
#ifndef VSF_BUILDDEFS_H
#define VSF_BUILDDEFS_H
#undef VSF_BUILD_TCPWRAPPERS //修改undef为define,支持tcp-wrappers
#define VSF_BUILD_PAM
#undef VSF_BUILD_SSL //修改undef为define,支持ssl
#endif /* VSF_BUILDDEFS_H */
2、安装前准备:创建必要的帐号和目录
useradd nobody
mkdir /usr/share/empty
mkdir /var/ftp
useradd -d /var/ftp ftp
chown root.root /var/ftp
chmod og-w /var/ftp
3、编译安装:
make && make install
cp vsftpd.conf /etc
cp RedHat/vsftpd.pam /etc/pam.d/ftp
4、验证结果
1)查看一下二进制文件安装到了那个目录。
# which vsftpd
/usr/local/sbin/vsftpd
2)查看一下vsftpd的依赖库(如果您发现vsftpd所依赖的库有libpam的行,这说明您所编译的还是通过pam验证登录。)
# ldd /usr/local/sbin/vsftpd
libwrap.so.0 => /usr/lib/libwrap.so.0 (0x03db6000)
libnsl.so.1 => /lib/libnsl.so.1 (0x00175000)
libpam.so.0 => /lib/libpam.so.0 (0x00b4b000) ----通过PAM进行验证
libdl.so.2 => /lib/libdl.so.2 (0x0088f000)
libresolv.so.2 => /lib/libresolv.so.2 (0x009dd000)
libutil.so.1 => /lib/libutil.so.1 (0x003b9000)
libcap.so.1 => /lib/libcap.so.1 (0x00111000)
libc.so.6 => /lib/tls/libc.so.6 (0x00763000)
libaudit.so.0 => /lib/libaudit.so.0 (0x00b6c000)
/lib/ld-linux.so.2 (0x0074a000)
5、测试
[root@cacti ~]# ftp localhost
Connected to cacti.mnu.cn.
220 Welcome to blah FTP service.
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:root):
anonymous
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (127,0,0,1,118,208)
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 25093 Nov 05 11:45 INSTALL
226 Directory send OK.
ftp> bye
221 Goodbye.
6、进阶设置:
匿名用户只允许下载,锁定在目录/var/ftp
每个虚拟用户一个目录,目录为/var/ftp/uploads/$USER,锁定在自身目录内,可下载、上传、删除、改名、创建目录等。
/var/ftp/uploads目录对匿名用户不可见,以.开头的隐藏文件对所有用户不可见。
匿名用户传输速率1MB/s,虚拟用户2MB/s,同时在线150人,每个IP最多3个连接数。
6.1) vsftpd.conf配置文件:
[root@cacti ~]# grep -v '^#' /etc/vsftpd.conf
listen=YES
listen_port=21
connect_from_port_20=YES
pam_service_name=
ftp
#此处pam认证文件名ftp必须跟/etc/pam.d/ftp一致
guest_enable=YES
guest_username=
vsftpd
#此处为虚拟用户对应的系统帐号
user_sub_token=$USER
user_config_dir=/etc/vsftpd/vsftpd_user_conf #虚拟用户个人配置文件目录
max_clients=150
max_per_ip=3
local_max_rate=2000000 # 2MB/s
anonymous_enable=YES
anon_max_rate=1000000 # 1MB/s
anon_umask=077 #default 077
anon_root=
/var/ftp #匿名用户主目录
no_anon_password=YES #匿名用户略过密码检查
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
local_enable=YES
write_enable=NO
local_umask=022
ftpd_banner=Welcome to blah FTP service.
dirmessage_enable=YES
use_localtime=YES
hide_file={.*,uploads} #隐藏的文件和目录
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list #不锁定主目录的虚拟用户写入此文件
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30999
6.2) 修改/etc/pam.d/ftp文件:
[root@cacti ~]# vi /etc/pam.d/ftp
#%PAM-1.0
#auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
#auth required /lib/security/pam_unix.so shadow nullok
#auth required /lib/security/pam_shells.so
#account required /lib/security/pam_unix.so
#session required /lib/security/pam_unix.so
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
6.3) 创建虚拟用户:
[root@cacti ~]# vi user.txt
user
123456
test
123456
[root@cacti ~]# db_load -T -t hash -f user.txt /etc/vsftpd/vsftpd_login.db
[root@cacti ~]# chmod 600 /etc/vsftpd/vsftpd_login.db
6.4) 为虚拟用户创建映射帐号和主目录
mkdir -p /var/ftp/uploads/user
mkdir -p /var/ftp/uploads/test
useradd -d /var/ftp/uploads -s /sbin/nologin vsftpd
chown -R vsftpd.vsftpd /var/ftp/uploads
chmod -R 750 /var/ftp/uploads
6.5) 为每个虚拟用户创建一个配置文件
先创建一个虚拟用户配置模板:
[root@cacti ~]# vi /etc/vsftpd/vsftpd_user_conf/vsftpd
local_root=/var/ftp/uploads/$USER
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
然后为每个虚拟用户拷贝一份配置(user,test):
cd /etc/vsftpd/vsftpd_user_conf/
cp vsftp user
cp vsftp test
7、再测试:
分别以匿名帐号anonymous和虚拟帐号user、test进行登录测试。
不锁定主目录的虚拟用户可以写入/etc/vsftpd/vsftpd.chroot_list 文件中。
例如user用户:
echo "user" >>/etc/vsftpd/vsftpd.chroot_list
当用user登录的时候,用pwd查看目录,可以看到家目录为“/var/ftp/uploads/user”,而不是锁定主目录虚拟用户的“/”
本文来自ChinaUnix博客,如果查看原文请点:
http://blog.chinaunix.net/u1/38490/showart_1404014.html
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2