vsFTPD编译安装使用实用手册
實驗環(huán)境:系統(tǒng) CENTOS5.5,用戶 root,軟件 vsftpd-2.3.4
實驗以自行編安裝為基礎,與通過yum方式安裝存在一些差異。
(lykyl原創(chuàng),轉載請注明出處)
一、編譯安裝
1、獲取并解壓縮源碼
wget ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.3.4.tar.gz /usr/local/src/
tar -xvzf /usr/local/src/vsftpd-2.3.4.tar.gz
2、系統(tǒng)環(huán)境設置
添加vsftpd的服務啟動用戶,只給最低權限且不允許登錄系統(tǒng)
useradd -g nobody -M -s /sbin/nologin nobody
添加基本空目錄,用于FTP用戶登錄后基本定位
mkdir /usr/share/empty
建立FTP的默認目錄
mkdir /var/ftp/
添加FTP用戶的映射本機帳號,強制設定home目錄為/var/ftp,不允許登錄系統(tǒng)
useradd -d /var/ftp -s /sbin/nologin ftp
設定家目錄所有者以及默認權限
chown root:root /var/ftp
chmod go-w /var/ftp
3、編譯設置是否支持TCP WRAPPERS和SSL
vi /usr/local/src/vsftp-d.2.3.4/builddefs.h
/*默認值如下:*/
#undef VSF_BUILD_TCPWRAPPERS? /*是否支持TCP WRAPPERS*/
#define VSF_BUILD_PAM? /*是否支持自定義虛擬用戶登錄*/
#undef VSF_BUILD_SSL? /*是否支持SSL傳輸*/
/*支持則將對應項設為define,否則設為undef,建議全部define*/
4、編譯部署
cd /usr/local/src/vsftp-d.2.3.4
make
make install
運行后,系統(tǒng)會嘗試進行以下操作:
cp vsftpd /usr/local/sbin/vsftpd
cp vsftpd.conf.5 /usr/local/man/man5
cp vsftpd.8 /usr/local/man/man8
如果運行中有cp報錯,可以手動將這些文件cp到對應目錄。
需要注意的是,系統(tǒng)不會自動將vsftp.conf文件cp到/etc目錄,需要手動cp或直接vi生成。
二、虛擬用戶訪問設置
1、建立虛擬用戶(這里只介紹針對Berkeley DB建立虛擬用戶的方法)
A、安裝DB4組合工具(Berkeley DB)
yum install db4-utils
B、建立虛擬用戶名文本文件/tmp/logins.txt
格式為奇數(shù)行是用戶名,偶數(shù)行是對應密碼,形式如下:
username1
password1
username2
password2
C、建立虛擬用戶庫文件
db_load –T –t hash –f /tmp/logins.txt /etc/vsftpd_login.db
rm -f /tmp/logins.txt
chmod 600 /etc/vsftpd_login.db
D、在/var/ftp/目錄下為每個虛擬用戶建立FTP默認根目錄。目錄名與用戶同名,并改變所有者為ftp,設置權限為700(此項不是必須要做,根據(jù)用戶自定義設置中l(wèi)ocal_root值而定)
mkdir /var/ftp/<username>
chown ftp:ftp /var/ftp/<username>
chmod 700 /var/ftp/<username>
E、獲取數(shù)據(jù)庫中用戶信息至文本文件
db_dump -da /etc/vsftpd_login.db | grep " data" |sed 's/^.*data: //g' >/tmp/logins.txt
*注意命令中的空格
三、vsftpd設置
1、編輯 /etc/vsftpd.conf
ftpd_banner=CentOS.Test1 FTP
connect_from_port_20=YES
listen=YES
background=YES
max_clients=20
max_login_fails=3
max_per_ip=3
pasv_min_port=50000
pasv_max_port=54500
#local_max_rate=200000??? #視具體情況決定是否限速
idle_session_timeout=700
data_connection_timeout=200
tcp_wrappers=YES
#-------------------------------------
guest_enable=YES
guest_username=ftp
local_enable=YES
chroot_local_user=YES
user_sub_token=$USER
#virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd_user_conf.d
check_shell=NO
write_enable=NO
anonymous_enable=NO
anon_upload_enable=NO
anon_world_readable_only=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
dirlist_enable=NO
write_enable=NO
download_enable=NO
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd_allow_users
#-------------------------------------
use_localtime=YES
chown_uploads=YES
chown_username=ftp
dirmessage_enable=YES
pam_service_name=vsftp
anon_umask=027
local_umask=027
#-------------------------------------
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
#-------------------------------------
ssl_enable=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
rsa_cert_file=/usr/share/ssl/certs/vsftpd.pem
2、生成SSL證書
openssl req -new -x509 -nodes -out /usr/share/ssl/certs/vsftpd.pem -keyout /usr/share/ssl/certs/vsftpd.pem
3、配置iptables
iptables -A INPUT -i eth0 -p tcp --dport 20:21 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 50000:54500 -j ACCEPT
4、添加允許訪問FTP的用戶
編輯/etc/vsftpd_allow_users,添加允許訪問FTP的用戶名,每行一個。注意,如果設定為虛擬用戶及本地用戶都可以訪問,則允許混合添加這兩類用戶名,只是要注意,不能重名。
四、vsftpd的pam模塊
1、虛擬用戶認證
vi /etc/pam.d/vsftp
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
2、虛擬用戶及本地用戶認證
vi /etc/pam.d/vsftp
auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd_login
account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd_login
auth required /lib/security/pam_listfile.so item=user sense=allow file=/etc/vsftpd_allow_users onerr=fail
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
五、用戶個性化設置
在/etc/vsftpd_user_conf.d目錄下建立與用戶同名的文件,在其中設置每個帳號的具體權限。以下僅列出有代表性的幾個權限設置,更具體的設置請參考VSFTPD.CONF說明以及FTP協(xié)議常用命令。
1、所有權限
local_root=/var/ftp/$USER
write_enable=YES
dirlist_enable=YES
download_enable=YES
virtual_user_local_Privs=YES
cmds_allowed=ABOR,ACCT,ALLO,APPE,CDUP,CWD,DELE,HELP,LIST,MDTM,MODE,MKD,NLST,NOOP,PASS,PASV,PORT,PWD,QUIT,REIN,REST,RETR,RMD,RNFR,RNTO,SITE,SIZE,SMNT,STAT,STOR,STOU,STRU,SYST,TYPE,USER
2、只允許上傳
local_root=/var/ftp/$USER
write_enable=YES
dirlist_enable=YES
virtual_user_local_Privs=YES
cmds_allowed=ABOR,APPE,CDUP,CWD,HELP,LIST,MDTM,MODE,MKD,NLST,NOOP,PASS,PASV,PORT,PWD,QUIT,REIN,REST,RETR,SITE,SIZE,STAT,STOR,STOU,STRU,TYPE,USER
3、只允許下載
local_root=/var/ftp/$USER
write_enable=NO
dirlist_enable=YES
download_enable=YES
virtual_user_local_Privs=YES
cmds_allowed=ABOR,CDUP,CWD,HELP,LIST,MDTM,MODE,NLST,NOOP,PASS,PASV,PORT,PWD,QUIT,REIN,REST,RETR,SITE,SIZE,STAT,STRU,TYPE,USER
六、守護服務設置
1、超級守護進程設置
確保/etc/vsftpd.conf中,listen=NO
編輯 /etc/xinet.d/vsftpd,內容如下:
service ftp
{
??????? disable = no
??????? socket_type???????????? = stream
??????? wait??????????????????? = no
??????? user??????????????????? = root
??????? server????????????????? = /usr/local/sbin/vsftpd
??????? nice??????????????????? = 10
}
2、獨立啟動進程
確保/etc/vsftpd.conf中,listen=YES,background=YES
編輯/etc/rc.d/rc.local,在文件最后插入下列內容:
/usr/local/sbin/vsftpd
七、一些問題
?安裝DB4(Berkeley DB)后,每次啟動FTP都報下面的錯:
Please login with USER and PASS.
Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
!DB4安裝后會創(chuàng)建可執(zhí)行文件/usr/kerberos/bin/ftp。在未指定目錄的情況下運行ftp,系統(tǒng)會優(yōu)先執(zhí)行/usr/kerberos/bin/ftp,因為認證問題會報一些警告信息。可以使用絕對路徑來運行系統(tǒng)默認ftp程序
# which -a ftp
/usr/kerberos/bin/ftp
/usr/bin/ftp
?vsftpd啟動時報XX配置不正確
!確保vsftpd.conf中每一項設置的值前后都不能有空格。
?為什么按你的手冊配置后,有的文件下載、覆蓋或刪除會失敗
!下列條件至少要符合一條才能保證文件操作成功
1、文件所有者是ftp(vsftpd的映射帳號,虛擬用戶和本地用戶登錄后都會映射到此帳號)。
2、文件的other權限為rw。
轉載于:https://www.cnblogs.com/lykyl/archive/2011/03/20/1989709.html
總結
以上是生活随笔為你收集整理的vsFTPD编译安装使用实用手册的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL Server 数据库使用备份还原
- 下一篇: 去除链接虚线边框css