时间:2023-06-02 16:16:41 来源: 人气:
一、下载当前vsftp最新版本, 代码如下:, wget ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.3.4.tar.gz, 二、安装前准备, 1、创建虚拟用户映射的本地用户wwwftp, 代码如下:, useradd wwwftp -d /data/www -s /sbin/nologin, 2、创建自定义配置目录, 代码如下:, mkdir -p /data/soft/vsftpd/conf, mkdir -p /data/soft/vsftpd/bin, mkdir -p /data/soft/vsftpd/lib, mkdir -p /data/soft/vsftpd/user_conf, mkdir -p /data/soft/vsftpd/empty, mkdir -p /data/soft/vsftpd/logs, mkdir -p /data/www, mkdir -p /data/www/user1, mkdir -p /data/www/user2, 3、对自定义目录设置权限, 代码如下:, chown -R wwwftp:www /data/www, chmod -R 700 /data/soft/vsftpd/empty/, chown -R wwwftp:wwwftp /data/soft/vsftpd/empty/, 4、复制用于验证用户登录的库文件到自定义目录方便管理, 代码如下:, cp /lib/security/pam_userdb.so /data/soft/vsftpd/lib/, 5、安装所需软件, 代码如下:, yum -y install gcc db4* pam*, 三、解压安装vsftpd, 代码如下:, tar zxvf vsftpd-2.3.4.tar.gz, cd vsftpd-2.3.4, 源码安装默认不支持tcp_wrappers和ssl, 需要修改builddefs.h, 代码如下:, /*默认值如下:*/, #undef VSF_BUILD_TCPWRAPPERS /*是否支持TCP WRAPPERS*/, #define VSF_BUILD_PAM /*是否支持自定义虚拟用户登录*/, #undef VSF_BUILD_SSL /*是否支持SSL传输*/, /*支持则将对应项设为define,否则设为undef*/, 编译vsftpd, 代码如下:, make, 查看编译的vsftpd二进制文件是否加载了pam, 代码如下:, ldd vsftpd, 如下:, 代码如下:, [root@CentOS5 vsftpd-2.3.4]# ldd vsftpd, linux-gate.so.1 => (0x00628000), libwrap.so.0 => /lib/libwrap.so.0 (0x00cee000), libnsl.so.1 => /lib/libnsl.so.1 (0x0015f000), libpam.so.0 => /lib/libpam.so.0 (0x00fc4000), libdl.so.2 => /lib/libdl.so.2 (0x007dc000), libresolv.so.2 => /lib/libresolv.so.2 (0x008d8000), libutil.so.1 => /lib/libutil.so.1 (0x00110000), libcap.so.1 => /lib/libcap.so.1 (0x00d99000), libc.so.6 => /lib/libc.so.6 (0x0029a000), libaudit.so.0 => /lib/libaudit.so.0 (0x00114000), /lib/ld-linux.so.2 (0x004a2000), 看到libpam.so.0 => /lib/libpam.so.0 (0x00fc4000)表示已成功加载pam认证模块, 代码如下:, cp vsftpd /data/soft/vsftpd/bin, 四、配置vsftpd, 1、创建主配置文件, 代码如下:, vi /data/soft/vsftpd/conf/vsftpd.conf, 如下:, 代码如下:, local_enable=YES, anonymous_enable=NO, anon_upload_enable=NO, anon_other_write_enable=NO, anon_mkdir_write_enable=NO, ftpd_banner=Welcome to FTP service., listen=YES, listen_port=21, connect_from_port_20=YES, nopriv_user=nobody, tcp_wrappers=YES, chroot_local_user=NO, chroot_list_enable=YES, chroot_list_file=/data/soft/vsftpd/chroot_list, userlist_enable=yes, userlist_deny=no, userlist_file=/data/soft/vsftpd/allow, dual_log_enable=YES, vsftpd_log_file=/data/soft/vsftpd/logs/vsftpd.log, xferlog_enable=YES, xferlog_file=/data/soft/vsftpd/logs/xferlog, pasv_enable=YES, pasv_min_port=50000, pasv_max_port=60000, guest_enable=YES, guest_username=wwwftp, pam_service_name=vsftpd, virtual_use_local_privs=YES, use_localtime=YES, user_config_dir=/data/soft/vsftpd/user_conf, secure_chroot_dir=/data/soft/vsftpd/empty, 2、创建允许登录ftp的用户文件, 代码如下:, vi /data/soft/vsftpd/allow, 如下:, 代码如下:, user1, user2, 3、创建用于锁定用户目录的用户列表文件, 代码如下:, vi /data/soft/vsftpd/chroot_list, 如下, 代码如下:, user1, user2, 4、配置vsftpd的pam认证模块(用于虚拟用户认证), 代码如下:, vi /etc/pam.d/vsftpd, 如下, 代码如下:, auth required /data/soft/vsftpd/lib/pam_userdb.so db=/data/soft/vsftpd/login, account required /data/soft/vsftpd/lib/pam_userdb.so db=/data/soft/vsftpd/login, 保存退出, 5、创建用户名密码文本文件, 代码如下:, vi /data/soft/vsftpd/login.txt, 如下:一行用户名一行密码, 代码如下:, user1, 123456, user2, 654321, 保存退出, 6、用db_load生成用户数据库, 代码如下:, db_load -T -t hash -f /data/soft/vsftpd/login.txt /data/soft/vsftpd/login.db, chmod 600 /data/soft/vsftpd/login.db, rm -rf /data/soft/vsftpd/login.txt, 7、配置虚拟用户自定义配置文件, 代码如下:, vi /data/soft/vsftpd/user_conf/user1, user1所有权限, 代码如下:, local_root=/data/www/user1, write_enable=YES, local_umask=022, 保存退出, 代码如下:, vi /data/soft/vsftpd/user_conf/user2, user2只允许下载, 代码如下:, local_root=/data/www/user2, write_enable=NO, download_enable=YES, local_umask=022, 保存退出, 8、启动vsftpd服务, 代码如下:, /data/soft/vsftpd/bin/vsftpd /data/soft/vsftpd/conf/vsftpd.conf &, 五、测试, user1登录可读、写、删除、创建、修改一切权限, user2登录仅有下载权限,