Linux下FTP和TFTP服務配置

realkid4發表於2014-01-28

 

FTPTFTP是我們經常使用的檔案傳輸協議。在Linux中,sftp協議由於其安全性的優點,被作為預設的連結協議。但是,一些場合下,我們依然需要使用ftptftp協議進行檔案傳輸。本篇主要介紹配置方法,供有需要的朋友待查。

 

1、 環境準備

 

我們選擇Linux 2.6核心進行測試。

 

[root@SimpleLinuxUp ~]# uname -r

2.6.18-128.el5

 

當前OS執行在level 3模式下。

 

[root@SimpleLinuxUp ~]# grep init /etc/inittab

# inittab       This file describes how the INIT process should set up

#   0 - halt (Do NOT set initdefault to this)

#   6 - reboot (Do NOT set initdefault to this)

id:3:initdefault:

# System initialization.

si::sysinit:/etc/rc.d/rc.sysinit

 

預設情況下,tftp伺服器包是安裝上的,而FTP伺服器沒有安裝。

 

[root@SimpleLinuxUp Server]# rpm -qa | grep ftp

tftp-server-0.42-3.1

ftp-0.17-35.el5

lftp-3.5.1-2.fc6

 

2TFTP伺服器安裝配置

 

TFTP是一種比較特殊的檔案傳輸協議。相對於FTP和目前經常使用的SFTPTFTP是基於TCP/IP協議簇,用於進行簡單檔案傳輸,提供簡單、低開銷的傳輸服務。TFTP的埠設定為69

相對於常見的FTPTFTP有兩個比較好的優勢:

ü  TFTP基於UDP協議,如果環境中沒有TCP協議,是比較合適的;

ü  TFTP執行和程式碼佔用記憶體量比較小;

預設情況下,Linux內部是安裝了tftp伺服器包的。但是預設是不啟動的。

 

[root@SimpleLinuxUp ~]# chkconfig --list tftp

tftp            off

 

啟用和禁用tftp服務是透過配置檔案/etc/xinetd.d/tftp,將其中引數設定。

 

[root@SimpleLinuxUp ~]# vi /etc/xinetd.d/tftp

 

# default: off

# description: The tftp server serves files using the trivial file transfer \

#       protocol.  The tftp protocol is often used to boot diskless \

#       workstations, download configuration files to network-aware printers, \

#       and to start the installation process for some operating systems.

service tftp

{

        socket_type             = dgram

        protocol                = udp

        wait                    = yes

        user                    = root

        server                  = /usr/sbin/in.tftpd

        server_args             = -s /tftpboot -c

        disable                 = no

        per_source              = 11

        cps                     = 100 2

        flags                   = IPv4

}

 

配置檔案中,將disable預設值從yes改為no。適當修改server_args引數,主要是其中的tftp根目錄地址。

Tftp服務是不需要單獨啟動的,是作為xinetd服務的一個附屬物件連帶啟動。

 

 

[root@SimpleLinuxUp ~]# service xinetd status

xinetd (pid 2194) is running...

[root@SimpleLinuxUp ~]# cd /

[root@SimpleLinuxUp /]# mkdir /tftpboot

mkdir: cannot create directory `/tftpboot': File exists

[root@SimpleLinuxUp /]# cd /tftpboot/

[root@SimpleLinuxUp tftpboot]# cd ..

[root@SimpleLinuxUp /]# chmod -R 777 /tftpboot/

 

由於連線使用UDP埠,我們將防火牆和SELinux配置關閉。

 

[root@SimpleLinuxUp /]# service iptables stop

[root@SimpleLinuxUp /]# service iptables status

Firewall is stopped.

 

xinetd服務重啟,連帶將tftp服務啟動。

 

[root@SimpleLinuxUp /]# service xinetd restart

Stopping xinetd: [  OK  ]

Starting xinetd: [  OK  ]

 

[root@SimpleLinuxUp /]# chkconfig --list tftp

tftp            on

 

使用netstat判斷UDP埠開啟。

 

[root@SimpleLinuxUp /]# netstat -nlp | grep udp

udp        0      0 0.0.0.0:772                 0.0.0.0:*                               1868/rpc.statd     

udp        0      0 0.0.0.0:775                 0.0.0.0:*                               1868/rpc.statd     

udp        0      0 0.0.0.0:69                  0.0.0.0:*                               3869/xinetd        

(篇幅原因,有省略……

 

從遠端伺服器啟動連線,筆者從windows環境客戶端啟動。TFTP是可以不輸入使用者名稱和密碼的,所以對於安全檔案傳輸是不滿足的。

 

 

C:\Documents and Settings\liuzy>tftp

Transfers files to and from a remote computer running the TFTP service.

TFTP [-i] host [GET | PUT] source [destination]

 

  -i              Specifies binary image transfer mode (also called

                  octet). In binary image mode the file is moved

                  literally, byte by byte. Use this mode when

                  transferring binary files.

  host            Specifies the local or remote host.

  GET             Transfers the file destination on the remote host to

                  the file source on the local host.

  PUT             Transfers the file source on the local host to

                  the file destination on the remote host.

  source          Specifies the file to transfer.

  destination     Specifies where to transfer the file.

 

測試客戶端與伺服器根目錄之間的檔案互相複製傳輸。

 

C:\Documents and Settings\liuzy>tftp 192.168.0.100 put cogtrwin.ini

Transfer successful: 536 bytes in 1 second, 536 bytes/s

 

[root@SimpleLinuxUp tftpboot]# ls -l

total 12

-rw-rw-rw- 1 nobody nobody  507 Jan 28 10:39 cogtrwin.ini

drwxrwxrwx 4 root   root   4096 Dec 26 09:46 linux-install

 

D:\>tftp 192.168.0.100 get cogtrwin.ini

Transfer successful: 536 bytes in 1 second, 536 bytes/s

 

TFTP是一種簡單的檔案傳輸解決方案。

 

3FTP配置

 

目前成熟系統設計中,都將FTP協議和傳輸定性為非安全傳輸協議。它和telnet登入方式,逐漸為SFTPSSH協議所取代。在Linux流行版本中,SFTP已經成為預設配置專案。

Linux發行版的光碟中,已經包括了vsftp伺服器安裝包,是需要手工安裝。

 

--判斷沒有安裝vsftp

[root@SimpleLinuxUp ~]# rpm -qa | grep vsftp

 

載入安裝光碟到一個目錄中。

 

[root@SimpleLinuxUp /]# ls -l | grep rdcom

drwxr-xr-x  2 root   root      4096 Dec 26 10:29 rdcom

[root@SimpleLinuxUp /]# cd rdcom/

[root@SimpleLinuxUp rdcom]# ls -l

total 0

[root@SimpleLinuxUp rdcom]# mount /dev/cdrom /rdcom/

mount: block device /dev/cdrom is write-protected, mounting read-only

 

安裝vsftp-server包。

 

[root@SimpleLinuxUp rdcom]# cd Server/

[root@SimpleLinuxUp Server]# pwd

/rdcom/Server

 

[root@SimpleLinuxUp Server]# ls -l | grep vsftp

-r--r--r--  99 root root   141003 Dec 17  2007 vsftpd-2.0.5-12.el5.i386.rpm

[root@SimpleLinuxUp Server]# rpm -ivh vsftpd-2.0.5-12.el5.i386.rpm

warning: vsftpd-2.0.5-12.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186

Preparing...                ########################################### [100%]

   1:vsftpd                 ########################################### [100%]

 

安裝後,vsftpd是沒有自動啟動的,作為系統服務也不能自動啟動。

 

[root@SimpleLinuxUp Server]# service vsftpd status

vsftpd is stopped

 

[root@SimpleLinuxUp Server]# chkconfig --list vsftpd

vsftpd          0:off   1:off   2:off   3:off   4:off   5:off   6:off

 

啟動服務,並且配置vsftp服務到適合的level等級。

 

[root@SimpleLinuxUp Server]# service vsftpd start

Starting vsftpd for vsftpd: [  OK  ]

[root@SimpleLinuxUp Server]# service vsftpd status

vsftpd (pid 4030) is running...

 

[root@SimpleLinuxUp Server]# chkconfig --level 2345 vsftpd on

[root@SimpleLinuxUp Server]# chkconfig --list vsftpd

vsftpd          0:off   1:off   2:on    3:on    4:on    5:on    6:off

 

遠端從客戶端進行訪問,直接使用ftp命令列客戶端。

 

D:\>ftp

ftp> open 192.168.0.100

Connected to 192.168.0.100.

220 (vsFTPd 2.0.5)

User (192.168.0.100:(none)): oracle

331 Please specify the password.

Password:

230 Login successful.

 

注意,處於安全的考慮,並不是所有的使用者都可以使用ftp遠端連線,比如root

 

D:\>ftp

ftp> open 192.168.0.100

Connected to 192.168.0.100.

220 (vsFTPd 2.0.5)

User (192.168.0.100:(none)): root

530 Permission denied.

Login failed.

 

如果確實需要root登入,可以修改配置檔案/etc/vsftpd/ftpusers/etc/vsftpd/user_list,將其中的root遮蔽住。就可以支援登入。

 

[root@SimpleLinuxUp Server]# cat /etc/vsftpd/ftpusers

# Users that are not allowed to login via ftp

root

bin

daemon

adm

nobody

 

[root@SimpleLinuxUp Server]# cat /etc/vsftpd/user_list

# vsftpd userlist

# If userlist_deny=NO, only allow users in this file

# If userlist_deny=YES (default), never allow users in this file, and

# do not even prompt for a password.

# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers

# for users that are denied.

root

bin

daemon

adm

lp

sync

shutdown

halt

mail

news

uucp

operator

games

nobody

 

安裝成功。

 

4、結論

 

LinuxAIX中,很多的配置內容都是命令列+文字配置的方法來實現的。本篇介紹了Linux環境下tftpftp的配置手段,留待需要朋友待查。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17203031/viewspace-1076203/,如需轉載,請註明出處,否則將追究法律責任。

相關文章