[root]# useradd nobody # 確保 nobody 存在 [root]# mkdir /usr/share/empty # 確保目錄存在 [root]# mkdir /var/ftp [root]# useradd -d /var/ftp ftp # 匿名用戶基礎 [root]# chown root.root /var/ftp [root]# chmod og-w /var/ftp
[root]# tar zxvf vsftpd-1.2.0.tar.gz [root]# cd vsftpd-1.2.0 [root]# make [root]# make install # RHL9 可能需手動複製: [root]# cp vsftpd /usr/local/sbin/vsftpd [root]# cp vsftpd.conf.5 /usr/local/share/man/man5 [root]# cp vsftpd.8 /usr/local/share/man/man8
[root]# cp vsftpd.conf /etc [root]# cp RedHat/vsftpd.pam /etc/pam.d/ftp # 允許本地用戶登入
[root]# useradd vsftpdguest
虛擬用戶登入後位於 /home/vsftpdguest,需修改家目錄可改 usermod -d。
# /etc/vsftpd.conf guest_enable=YES guest_username=vsftpdguest
[root]# /usr/local/sbin/vsftpd &
[root]# mysql -p
mysql> create database vsftpdvu;
mysql> use vsftpdvu;
mysql> create table users(name char(16) binary, passwd char(16) binary);
mysql> insert into users (name,passwd) values ('xiaotong',password('qqmywife'));
mysql> insert into users (name,passwd) values ('xiaowang',password('ttmywife'));
mysql> quit
[root]# mysql -u root mysql -p mysql> grant select on vsftpdvu.users to vsftpdguest@localhost identified by 'i52serial0'; mysql> quit
[root]# mysql -u vsftpdguest -pi52serial0 vsftpdvu mysql> select * from users; # 應顯示兩用戶及加密密碼
使用開源 pam-mysql(下載 pam_mysql-0.5.tar.gz)。
[root]# tar xvzf pam_mysql-0.5.tar.gz [root]# cd pam_mysql [root]# make [root]# make install # 若 make install 失敗,手動複製 pam_mysql.o 至 /lib/security
auth required pam_mysql.o user=vsftpdguest passwd=i52serial0 host=localhost db=vsftpdvu table=users usercolumn=name passwdcolumn=passwd crypt=2 account required pam_mysql.o user=vsftpdguest passwd=i52serial0 host=localhost db=vsftpdvu table=users usercolumn=name passwdcolumn=passwd crypt=2
crypt 參數: 0=明文、1=UNIX DES、2=MySQL PASSWORD()(本例用 2)。
virtual_use_local_privs=YES:虛擬用戶享本地用戶權限,配合 write_enable=YES 即可寫入virtual_use_local_privs=NO(預設):同匿名用戶權限,更嚴格anon_world_readable_only=YES chown vsftpdguest.vsftpdguest /home/vsftpdguest chmod 700 /home/vsftpdguest
write_enable=YES anon_upload_enable=YES anon_other_write_enable=YES
注意:同樣影響匿名用戶,建議禁用匿名登入。
方法一:名單模式
chroot_local_user=NO chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list # 文件內列入 xiaotong、xiaowang
方法二:全域模式
chroot_local_user=YES
# 主配置 user_config_dir=/etc/vsftpd/vsftpd_user_conf # 建立個人配置 [root]# mkdir /etc/vsftpd/vsftpd_user_conf [root]# touch /etc/vsftpd/vsftpd_user_conf/xiaowang # 內容: local_root=/home/xiaowang # 建立目錄與權限 [root]# mkdir /home/xiaowang [root]# chown vsftpdguest.vsftpdguest /home/xiaowang [root]# chmod 600 /home/xiaowang
配合第六節 chroot 設定,防止用戶互訪目錄。