萬盛學電腦網

 萬盛學電腦網 >> 服務器教程 >> linux配置ftp服務

linux配置ftp服務

   Redhat9 配置FTP

  2、編輯/etc/vsftpd/vsftpd.conf文件

  修改端口

  Step1. 修改/etc/vsftpd/vsftpd.conf

  `新增底下一行

  listen_port=2121

  Step2. 重新啟動vsftpd

  [root@home vsftpd]# /sbin/service vsftpd restart

  Shutting down vsftpd: OK ]

  Starting vsftpd for vsftpd: OK ]

  特定使用者peter、john 不得變更目錄

  使用者的預設目錄為/home/username,若是我們不希望使用者在ftp 時能夠

  切換到上一層目錄/home,則可參考以下步驟。

  Step1. 修改/etc/vsftpd/vsftpd.conf

  將底下三行

  #chroot_list_enable=YES

  # (default follows)

  #chroot_list_file=/etc/vsftpd.chroot_list

  改為

  chroot_list_enable=YES

  # (default follows)

  chroot_list_file=/etc/vsftpd/chroot_list //需新增此文件

  Step2. 新增一個檔案: /etc/vsftpd/chroot_list

  內容增加兩行:

  peter

  john

  Step3. 重新啟動vsftpd

  [root@home vsftpd]# /sbin/service vsftpd restart

  Shutting down vsftpd: OK ]

  Starting vsftpd for vsftpd: OK ]

  若是peter 欲切換到根目錄以外的目錄,則會出現以下警告:

  ftp>; cd /home

  550 Failed to change directory.

  取消anonymous 登入

  若是讀者的主機不希望使用者匿名登入,則可參考以下步驟。

  Step1. 修改/etc/vsftpd/vsftpd.conf

  將

  anonymous_enable=YES

  改為

  anonymous_enable=NO

  安排歡迎話語

  若是我們希望使用者在登入時,能夠看到歡迎話語,可能包括對該主機的

  說明,或是目錄的介紹,可參考以下步驟。

  首先確定在/etc/vsftpd/vsftpd.conf 當中是否有底下這一行

  dirmessage_enable=YES

  RedHat9 的默認值是有上面這行的。

  接著,在各目錄之中,新增名為.message 的檔案,再這邊假設有一個使用

  者test1,且此使用者的根目錄下有個目錄名為abc,那首先我們在/home/test1

  之下新增.message,內容如下:

  Hello~ Welcome to the home directory

  This is for test only...

  接著,在/home/test1/abc 的目錄下新增.message,內容如下:

  Welcome to abc's directory

  This is subdir...

  那麼,當使用者test1 登入時,會看到以下訊息:

  230- Hello~ Welcome to the home directory

  230-

  230- This is for test only...

  230-

  若是切換到abc 的目錄,則會出現以下訊息:

  250- Welcome to abc's directory

  250-

  250- This is subdir ...

  對於每一個聯機,以獨立的process 來運作

  一般啟動vsftp 時,我們只會看到一個名為vsftpd 的process 在運作,但若

  是讀者希望每一個聯機,都能以獨立的process 來呈現,則可執行以下步驟。

  Step1. 修改/etc/vsftpd/vsftpd.conf

  新增底下一行

  setproctitle_enable=YES

  Step2. 重新啟動vsftpd

  [root@home vsftpd]# /sbin/service vsftpd restart

  Shutting down vsftpd: OK ]

  Starting vsftpd for vsftpd: OK ]

  使用ps -ef 的指令,可以看告不同使用者聯機的情形,如下圖所示:

  [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]#

  限制傳輸檔案的速度:本機的使用者最高速度為200KBytes/s,匿名登入

  者所能使用的最高速度為50KBytes/s

  Step1. 修改/etc/vsftpd/vsftpd.conf

  新增底下兩行

  anon_max_rate=50000

  local_max_rate=200000

  Step2. 重新啟動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 所限制的是本機的使用者。VSFTPD 對於速度的限

  制,范圍大概在80%到120%之間,也就是我們限制最高速度為100KBytes/s,

  但實際的速度可能在80KBytes/s 到120KBytes/s 之間,當然,若是頻寬不足

  時,數值會低於此限制。

  建置一個防火牆下的ftp server,使用PORT FTP mode:預設的ftp

  port:21 以及ftp data port:20

  啟動VSFTPD 之後執行以下兩行指令,只允許port 21 以及port 20 開放,

  其它關閉。

  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 版的預設設定,那

  麼讀者可以執行以下步驟。

  Step1. 修改/etc/vsftpd/vsftpd.conf

  將

  listen=YES

  改為

  listen=NO

  Step2. 新增一個檔案: /etc/xinetd.d/vsftpd

  內容如下:

  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. 重新啟動xinetd

  [root@home vsftpd]# /sbin/service xinetd restart

  Stopping xinetd: OK ]

  Starting xinetd: OK ]

  3、常見錯誤

  ftp客戶連接常見故障現象

  現象0:

  > ftp: connect :連接被拒絕

  原因: 服務沒啟動

  解決: # chkconfig vsftpd on

  現象1:

  500 OOPS: cannot open user list file

  原因: 不存在文件“/etc/vsftpd.user_list”或文件中不存在該帳戶

  解決: # echo username >> /etc/vsftpd.user_list

  現象2:

  530 Permission denied.

  Login failed.

  原因: “/etc/vsftpd.user_list”文件中不存在當前登陸用戶

  解決: # echo username >> /etc/vsftpd.user_list

  現象3:

  500 OOPS: cannot open chroot() user list file

  Login failed.

  原因: 不存在文件“/etc/vsftpd.chroot_list”

  解決: # echo username >> /etc/vsftpd.chroot_list

  現象4:

  500 OOPS: missing value in config file

  Connection closed by remote host.

  原因: “=”等號前值有問題,或只有一個空格

  解決: 修正相應的值即可,可能過 diff 來比較查找

  現象5:

  500 OOPS: bad bool value in config file

  Connection closed by remote host.

  原因: “=”等號後值有問題

  解決: 將“=”等號後值確認修改

  現象6:

  500 OOPS: unrecognised variable in config file

  Connection closed by remote host.

  原因: 參數前有空格

  解決: 將參數前空格刪除

  現象7、

  確認存在“local_enable=YES”,但本地用戶無法登陸

  原因: 驗證參數被誤刪除

  解決: 添加“pam_service_name=vsftpd”

  現象8、

  500 OOPS: chdir

  500 OOPS: child died

  Connection closed by remote host.

  原因: 用戶主目錄沒有權限或沒有主目錄

  解決: 正確設置用戶主目錄權限

  553 Could not create file.

  要解決這個問題只要:

  1. setsebool -P ftpd_disable_trans 1

  2. service vsftpd restart

  1、設置selinux

  vi /etc/sysconfig/selinux

  將其中的SELINUX=enforcing改為SELINUX=disabled

  2、設置如下

copyright © 萬盛學電腦網 all rights reserved