Step1. 修改/etc/vsftpd/vsftpd.conf
`新增底下一行
listen_port=2121
Step2. 重新啟動(dòng)vsftpd
[root@home vsftpd]# /sbin/service vsftpd restart
Shutting down vsftpd: OK ]
Starting vsftpd for vsftpd: OK ]
特定使用者peter、john 不得變更目錄
使用者的預(yù)設(shè)目錄為/home/username,若是我們不希望使用者在ftp 時(shí)能夠
切換到上一層目錄/home,則可參考以下步驟。
Step1. 修改/etc/vsftpd/vsftpd.conf
將底下三行
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=http://www.3lian.com/etc/vsftpd.chroot_list
改為
chroot_list_enable=YES
# (default follows)
chroot_list_file=http://www.3lian.com/etc/vsftpd/chroot_list //需新增此文件
Step2. 新增一個(gè)檔案: /etc/vsftpd/chroot_list
內(nèi)容增加兩行:
peter
john
Step3. 重新啟動(dòng)vsftpd
[root@home vsftpd]# /sbin/service vsftpd restart
Shutting down vsftpd: OK ]
Starting vsftpd for vsftpd: OK ]
若是peter 欲切換到根目錄以外的目錄,則會(huì)出現(xiàn)以下警告:
ftp>; cd /home
550 Failed to change directory.
取消anonymous 登入
若是讀者的主機(jī)不希望使用者匿名登入,則可參考以下步驟。
Step1. 修改/etc/vsftpd/vsftpd.conf
將
anonymous_enable=YES
改為
anonymous_enable=NO
安排歡迎話(huà)語(yǔ)
若是我們希望使用者在登入時(shí),能夠看到歡迎話(huà)語(yǔ),可能包括對(duì)該主機(jī)的
說(shuō)明,或是目錄的介紹,可參考以下步驟。
首先確定在/etc/vsftpd/vsftpd.conf 當(dāng)中是否有底下這一行
dirmessage_enable=YES
RedHat9 的默認(rèn)值是有上面這行的。
接著,在各目錄之中,新增名為.message 的檔案,再這邊假設(shè)有一個(gè)使用
者test1,且此使用者的根目錄下有個(gè)目錄名為abc,那首先我們?cè)?home/test1
之下新增.message,內(nèi)容如下:
Hello~ Welcome to the home directory
This is for test only...
接著,在/home/test1/abc 的目錄下新增.message,內(nèi)容如下:
Welcome to abc's directory
This is subdir...
那么,當(dāng)使用者test1 登入時(shí),會(huì)看到以下訊息:
230- Hello~ Welcome to the home directory
230-
230- This is for test only...
230-
若是切換到abc 的目錄,則會(huì)出現(xiàn)以下訊息:
250- Welcome to abc's directory
250-
250- This is subdir ...
對(duì)于每一個(gè)聯(lián)機(jī),以獨(dú)立的process 來(lái)運(yùn)作
一般啟動(dòng)vsftp 時(shí),我們只會(huì)看到一個(gè)名為vsftpd 的process 在運(yùn)作,但若
是讀者希望每一個(gè)聯(lián)機(jī),都能以獨(dú)立的process 來(lái)呈現(xiàn),則可執(zhí)行以下步驟。
Step1. 修改/etc/vsftpd/vsftpd.conf
新增底下一行
setproctitle_enable=YES
Step2. 重新啟動(dòng)vsftpd
[root@home vsftpd]# /sbin/service vsftpd restart
Shutting down vsftpd: OK ]
Starting vsftpd for vsftpd: OK ]
使用ps -ef 的指令,可以看告不同使用者聯(lián)機(jī)的情形,如下圖所示:
[root@home vsftpd]# ps -ef|grep ftp
root 2090 1 0 16:41 pts/0 00:00:00 vsftpd: LISTENER
nobody 2120 2090 0 17:18 ? 00:00:00 vsftpd: 192.168.10.244:
connected
test1 2122 2120 0 17:18 ? 00:00:00 vsftpd: 192.168.10.244/test1:
IDLE
nobody 2124 2090 0 17:19 ? 00:00:00 vsftpd: 192.168.10.244:
connected
test2 2126 2124 0 17:19 ? 00:00:00 vsftpd: 192.168.10.244/test2:
IDLE
root 2129 1343 0 17:20 pts/0 00:00:00 grep ftp
[root@home vsftpd]#
限制傳輸檔案的速度:本機(jī)的使用者最高速度為200KBytes/s,匿名登入
者所能使用的最高速度為50KBytes/s
Step1. 修改/etc/vsftpd/vsftpd.conf
新增底下兩行
anon_max_rate=50000
local_max_rate=200000
Step2. 重新啟動(dòng)vsftpd
[root@home vsftpd]# /sbin/service vsftpd restart
Shutting down vsftpd: OK ]
Starting vsftpd for vsftpd: OK ]
在這邊速度的單位為Bytes/s,其中anon_max_rate 所限制的是匿名登入的
使用者,而local_max_rate 所限制的是本機(jī)的使用者。VSFTPD 對(duì)于速度的限
制,范圍大概在80%到120%之間,也就是我們限制最高速度為100KBytes/s,
但實(shí)際的速度可能在80KBytes/s 到120KBytes/s 之間,當(dāng)然,若是頻寬不足
時(shí),數(shù)值會(huì)低于此限制。
建置一個(gè)防火墻下的ftp server,使用PORT FTP mode:預(yù)設(shè)的ftp
port:21 以及ftp data port:20
啟動(dòng)VSFTPD 之后執(zhí)行以下兩行指令,只允許port 21 以及port 20 開(kāi)放,
其它關(guān)閉。
iptables -A INPUT -p tcp -m multiport --dport 21,20 -j ACCEPT
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
將vsftpd 并入XINETD
若是讀者希望將vsftpd 并入XINETD 之中,也就是7.x 版的預(yù)設(shè)設(shè)定,那
么讀者可以執(zhí)行以下步驟。
Step1. 修改/etc/vsftpd/vsftpd.conf
將
listen=YES
改為
listen=NO
Step2. 新增一個(gè)檔案: /etc/xinetd.d/vsftpd
內(nèi)容如下:
service vsftpd
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/sbin/vsftpd
port = 21
log_on_success += PID HOST DURATION
log_on_failure += HOST
}
Step3. 重新啟動(dòng)xinetd
[root@home vsftpd]# /sbin/service xinetd restart
Stopping xinetd: OK ]
Starting xinetd: OK ]
3、常見(jiàn)錯(cuò)誤
ftp客戶(hù)連接常見(jiàn)故障現(xiàn)象
現(xiàn)象0:
> ftp: connect :連接被拒絕
原因: 服務(wù)沒(méi)啟動(dòng)
解決: # chkconfig vsftpd on
現(xiàn)象1:
500 OOPS: cannot open user list file
原因: 不存在文件“/etc/vsftpd.user_list”或文件中不存在該帳戶(hù)
解決: # echo username >> /etc/vsftpd.user_list
現(xiàn)象2:
530 Permission denied.
Login failed.
原因: “/etc/vsftpd.user_list”文件中不存在當(dāng)前登陸用戶(hù)
解決: # echo username >> /etc/vsftpd.user_list
現(xiàn)象3:
500 OOPS: cannot open chroot() user list file
Login failed.
原因: 不存在文件“/etc/vsftpd.chroot_list”
解決: # echo username >> /etc/vsftpd.chroot_list
現(xiàn)象4:
500 OOPS: missing value in config file
Connection closed by remote host.
原因: “=”等號(hào)前值有問(wèn)題,或只有一個(gè)空格
解決: 修正相應(yīng)的值即可,可能過(guò) diff 來(lái)比較查找
現(xiàn)象5:
500 OOPS: bad bool value in config file
Connection closed by remote host.
原因: “=”等號(hào)后值有問(wèn)題
解決: 將“=”等號(hào)后值確認(rèn)修改
現(xiàn)象6:
500 OOPS: unrecognised variable in config file
Connection closed by remote host.
原因: 參數(shù)前有空格
解決: 將參數(shù)前空格刪除
現(xiàn)象7、
確認(rèn)存在“local_enable=YES”,但本地用戶(hù)無(wú)法登陸
原因: 驗(yàn)證參數(shù)被誤刪除
解決: 添加“pam_service_name=vsftpd”
現(xiàn)象8、
500 OOPS: chdir
500 OOPS: child died
Connection closed by remote host.
原因: 用戶(hù)主目錄沒(méi)有權(quán)限或沒(méi)有主目錄
解決: 正確設(shè)置用戶(hù)主目錄權(quán)限
553 Could not create file.
要解決這個(gè)問(wèn)題只要:
1. setsebool -P ftpd_disable_trans 1
2. service vsftpd restart
1、設(shè)置selinux
vi /etc/sysconfig/selinux
將其中的SELINUX=enforcing改為SELINUX=disabled
2、設(shè)置如下
setsebool -P allow_ftpd_full_access 1
chmod -R 765 /etc/home
1、 查看 SELinux 的狀態(tài): sestatus -b | grep ftp
2、 在出現(xiàn)的結(jié)果中可以看到
ftp_home_dir off
tftpd_disable_trans off
之類(lèi)。我們現(xiàn)在只要把其中之一設(shè)置為on就可以啦。
3、 setsebool -P ftpd_disable_trans on 或者 setsebool -P ftp_home_dir on
4、 重啟vsftpd: service vsftpd restart