Linux下proftpd的安裝配置與管理方法

來源:互聯網
上載者:User
一. proftpd 簡介。
  proftpd是一款開放源碼的ftp伺服器軟體,它是原來世界範圍使用最廣泛的wu-ftpd的改進版,它修正了wu-ftpd的許多缺陷,在許多方面進行了重大的改進,其中一個重要變化就是它學習了Apache 的配置方式,使proftpd的配置和管理更加簡單易懂。本文將介紹它在Red hat Linux 9中最基本的安裝和配置。
二.軟體的相關資源。

  官方網站:http://www.proftpd.org/

  源碼軟體包:proftpd是開源的軟體,可以去其官方網站下載。目前最新穩定版本為1.2.10。

  協助文檔: 該軟體包中包含。

  FAQ:該軟體包中包含。

  設定檔範例:該軟體包中包含。

  三.軟體的安裝。

  1.安裝

  由其官方網站中下載其源碼軟體包proftpd-1.2.10. tar.gz。接下來我將對安裝過程的一些重要步驟,給出其解釋:

  [root@localhost root]

  #tar xzvf proftpd-1.2.10. tar.gz

  [root@localhost root]

  #cd bind-9.3.1

  [root@localhost bind-9.3.1]

  #./configure

  [root@localhost bind-9.3.1]

  #make

  [root@localhost bind-9.3.1]

  #make install

  tar xzvf bind-9.3.1.tar.gz 解壓縮軟體包。

  ./configure 針對機器作安裝的檢查和設定,大部分的工作是由機器自動完成的,但是使用者可以通過一些參數來完成一定的設定,其常用選項有:

  ./configure --help 察看參數設定協助。

  --enable-ipv6 支援ipv6。

  可以設定的參數很多,可以通過 -help察看需要的,一般情況下,預設設定就可以了。

  預設情況下,安裝過程應該建立了:

  proftpd的deamon為/usr/local/sbin/proftpd

  proftpd的設定檔,/usr/local/etc/proftpd.conf。

  2.啟動:

  [root@localhost root]

  # /usr/local/sbin/proftpd -c

  /usr/local/etc/proftpd.conf

  -c選項用來指定設定檔的位置,不指定的話預設位置是 /usr/local/etc/proftpd.conf 。

  正常情況下proftpd應該啟動了,ps aux 應該可以查到proftpd的進程,或netstat -an 也可以看到21連接埠的服務已經起來了。(ftp預設連接埠)

  如果要設定開機自啟動ftp server,只需在/etc/rc.d/rc.local中加入一行

  /usr/local/sbin/proftpd

  #!/bin/sh

  #

  # This script will be executed

  *after* all the other init scripts.

  # You can put your own

  initialization stuff in here if you don't

  # want to do the full Sys V style init stuff.

  touch /var/lock/subsys/local

  /usr/local/sbin/proftpd

  四.軟體的配置。

  1.初始設定檔

  預設設定檔的位置為:

  /usr/local/etc/proftpd.conf (如果檔案不存在可以從壓縮包中把設定檔範例拷貝過來即可)下面逐項分析其中一些常選項:(#後面的部分是注釋)

  # This is a basic ProFTPD

  configuration file

  (rename it to

  # 'proftpd.conf' for actual use.

  It establishes a single server

  # and a single anonymous login.

  It assumes that you have a user/group

  # "nobody" and "ftp" for normal

  operation and anon.

  ServerName "

  ServerType

  standalone

  DefaultServer

  on

  # Port 21 is the standard FTP port.

  Port 21

  ServerType 指定FTP Server 的啟動類型,一般使用standalone方式比較簡單,如果訪問量不大,為節省資源考慮用xinetd偵聽啟動,必須在這裡指定。Port 指定FTP的偵聽連接埠,一般使用21連接埠

  # Umask 022 is a good standard

  umask to prevent new dirs and files

  # from being group and world writable.

  Umask 022

  # To prevent DoS attacks, set the

  maximum number of child processes

  # to 30. If you need to allow

  more than 30 concurrent connections

  # at once, simply increase this value.

  Note that this ONLY works

  # in standalone mode, in inetd mode

  you should use an inetd server

  # that allows you to limit maximum

  number of processes per service

  # (such as xinetd).

  MaxInstances 30

  Umask 指定FTP server 進程的Umask 值,022與Linux系統得預設值一致。

  MaxInstances 指定 FTP server 的最大串連數。

  # Set the user and group under

  which the server will run.

  User nobody

  Group nogroup

  # To cause every FTP user to be

  "jailed" (chrooted) into their home

  # directory, uncomment this line.

  #DefaultRoot ~

  DefaultRoot

  User 和Group 指定proftpd 進程啟動時的有效使用者ID,處於安全考慮預設的身份是nobody,有一點要指出的是,一般Red Linux 9.0 中預設是沒有nogroup 這個組的,把Group指定為nobody 即可。

  DefaultRoot 選項限制Linux 系統使用者通過FTP方式登入時將被限制在其home 目錄下。

  # Set the maximum number of seconds

  a data connection is allowed

  # to "stall" before being aborted.

  #TimeoutStalled 300

  AllowRetrieveRestart on

  AllowStoreRestart on

  # Normally, we want files to be overwriteable.

  

  AllowOverwrite on

  

  TimeoutStalled 指定一個串連的逾時時間。

  AllowRetriveRestart 和AllowStroeRestart 指定允許斷點續傳。

  

  User ftp

  Group ftp

  # We want clients to be able to

  login with "anonymous"

  as well as "ftp"

  UserAlias anonymous ftp

  # Limit the maximum number of anonymous logins

  MaxClients 10

  # We want 'welcome.msg' displayed

  at login, and '.message' displayed

  # in each newly chdired directory.

  DisplayLogin welcome.msg

  DisplayFirstChdir .message

  # Limit WRITE everywhere

  in the anonymous chroot

  

  DenyAll

  

  

  這一部分,將在後面詳細介紹。

  2.設定檔結構分析

  #全域設定

  設定項目1 參數1

  設定項目2 參數2

  #某個目錄的設定

  

  ...

  ...

  

  #關於匿名登陸的設定

  

  ...

  ...

  

  ...

  ...

  

  

  常用全域設定

  DefaultRoot ~ # 限制每個FTP使用者在自己的目錄下,不可查看上一級目錄

  AllowRetrieveRestart on #下載時,允許斷點續傳

  AllowStoreRestart on #上傳時,允許斷點續傳

  ServerIdent off #屏蔽伺服器版本資訊

  TransferRate STOR|RETR 速度(Kbytes/s) user 使用者 #設定使用者傳輸速率

  MaxHostsPerUser 1 #每個帳戶最多允許來源ip為1個, 對防止ftp帳號還是比較有用的。

  MaxClientsPerUser 1 #每個帳戶在每個用戶端最多可以同時登陸1次,可以防止多線程軟體下載對伺服器的破壞

  MaxClientsPerHost 1 #同一個用戶端只能最多1個帳號可以登陸

  WtmpLog on #是否要把ftp記錄在日誌中,如果不想可以設定成off屏蔽掉log日誌。

  TimeoutIdle 600 #用戶端idle時間設定,預設就是600秒

  DisplayLogin welcome.msg #設定ftp登陸歡迎資訊檔

  RootLogin on #允許root使用者登入,預設是不允許的,安全起見不推薦此選項。

  歡迎詞設定

  關於歡迎檔案的設定包含如下參數:

  %T 目前的時間

  %F 所在硬碟剩下的容量

  %C 目前所在的目錄

  %R Client 端的主機名稱

  %L Server 端的主機名稱

  %U 使用者帳戶名稱

  %M 最大允許串連人數

  %N 目前的伺服器串連人數

  %E FTP伺服器管理員的 email

  %i 本次上傳的檔案數量

  %o 本次下載的檔案數量

  %t 本次上傳+下載的檔案數量

  知道這些參數,可以寫出一個友好的歡迎語檔案,例如:

  歡迎您%U, 這是T-force的測試FTP伺服器;

  目前時間是:%T;

  本伺服器最多允許%M個使用者串連數;

  目前伺服器上已有%N個使用者串連數;

  目前你所在的目錄是%C;

  目錄所在的硬碟還剩下%F位元組。

  anonymous 配置塊

  在設定檔中anonymous配置塊是非常重要的一部分,全域帳戶的許可權配置一般都由它來控制,下面分析一個比較常見的例子

  # A basic anonymous configuration,

  no upload directories.

  If you do not

  # want anonymous users,

  simply delete this entire

   section.

  

  #指定匿名使用者登入目錄

  User ftp

  #指定本塊設定的使用者

  Group ftp

  #指定本塊設定的使用者屬組

  # We want clients to be able to login

  with "anonymous" as well as "ftp"

  UserAlias anonymous ftp

  #設定使用者的別名

  AnonRequirePassword on

  #登陸要求輸入密碼

  # Limit the maximum number

  of anonymous logins

  MaxClients 10

  # We want 'welcome.msg' displayed

  at login, and '.message' displayed

  # in each newly chdired directory.

  DisplayLogin welcome.msg

  DisplayFirstChdir .message

  # Limit WRITE everywhere

  in the anonymous chroot

  

  

  DenyAll

  

  

  AllowAll

  

  

  

  anonymous配置塊中的重點是通過Limit對指定目錄進行比較詳盡的許可權管理,Limit的許可權控制比較完整,通過不同的組合基本上可以做到各種複雜的許可權控制,其控制項如下:

  CMD:Change Working Directory 改變目錄

  MKD:MaKe Directory 建立目錄的許可權

  RNFR: ReName FRom 更改目錄名的許可權

  DELE:DELEte 刪除檔案的許可權

  RMD:ReMove Directory 刪除目錄的許可權

  RETR:RETRieve 從服務端下載到用戶端的許可權

  STOR:STORe 從用戶端上傳到服務端的許可權

  READ:可讀的許可權,不包括列目錄的許可權,

  相當於RETR,STAT等

  WRITE:寫檔案或者目錄的許可權,包括MKD和RMD

  DIRS:是否允許列目錄,相當於LIST,

  NLST等許可權,還是比較實用的

  註:在測試是否可以下載時,不能用長度為0的空檔案去測試,要用一個有內容的檔案(檔案大小不能為0k)。

  針對上面這個Limit所應用的對象,又包括以下範圍

  AllowUser 針對某個使用者允許的Limit

  DenyUser 針對某個使用者禁止的Limit

  AllowGroup 針對某個使用者組允許的Limit

  DenyGroup 針對某個使用者組禁止的Limit

  AllowAll 針對所有使用者組允許的Limit

  DenyAll 針對所有使用者禁止的Limit

  五.一種簡單實用的組態管理方式:

  proftpd和mysql組合可以完成比較龐大而且完備的許可權控制,但是也同樣增加了管理和維護的複雜性,在這裡我介紹一種簡單易行的配置方法,適用於100個使用者以下的應用。這種方法的核心在於巧妙的運用了設定gid位,讀者最好找資料瞭解一下相關的知識。這種方法的組態管理工作相當少,也相當的簡單,同時還可以保持一個清晰的許可權系統結構。

  1.思路

  首先需要明確的概念是proftpd的使用者與linux系統的使用者的關係:linux系統的使用者即為proftpd的使用者。proftpd的許可權控制是基於Linux系統得許可權控制之上的,即使用者對於某個檔案或目錄,必須先有Linux系統的許可權,在此基礎上proftpd才能設定其特有的一些許可權。其實一般來說Linux自有的許可權系統就是一個比較完善的許可權系統了,我們完全可以只利用這個許可權系統,就足可以滿足我們的要求了。

  我們設定一個ftp管理員ftpadmin屬於ftpadmin組,ftp的根目錄/ftp是ftpadmin的個人根目錄,這樣ftpadmin可以完成日常的管理。通過設定/ftp的gid可以保證新上傳的檔案是屬於ftpadmin使用者,加上再設定umask值002保證上傳檔案的組讀寫權限,這樣管理員就可以對其管理下的檔案進行管理,而同時保證了不改變該檔案的屬主。

  ftp的使用者,我們只需建立一個Linux使用者,而把他的使用者目錄製定在/ftp之下就可以。操作起來很簡單。

  2.建立ftp管理員:ftpadmin

  [root@localhost root]groupadd ftpadmin #ftpadmin為新添加的組的名字

  [root@localhost root]useradd -d

  /ftp -g ftpadmin -s /sbin/nologin admin

  [root@localhost root]chmod 2775 /ftp

  同時保證ftpadmin 是 /ftp的屬主,ftpadmin 是/ftp的組屬主。這樣就保證了ftpadmin對要管理的/ftp目錄有全部的許可權。

  -s /sbin/nologin 指定使用者不能從shell登入,就是說只能從ftp方式登入,這樣是出於安全的考慮。

  修改/usr/local/etc/proftpd.conf

  nobody ftpadmin

  nogroup ftpadmin

  Umask 002

  #允許所有者,組使用者對ftp進行管理。

  掩碼Umask改為 002 。即群組成員和所有者都可對檔案夾進行增刪,改等操作。其他使用者可讀可執行,但不可寫。這樣,ftpadmin使用者可以通過同組的身份對所有的檔案進行讀寫,同時也不改變其內容的原有許可權。也就說,不改變這個檔案夾下的檔案的所有者身份,但同時又可以管理這些檔案。

  chmod 2775 /ftp,通過設定了檔案夾的gid,以後在這個檔案夾下寫的所有檔案,不管其所有者是誰,檔案的組必定是ftpadmin(因為/ftp的組屬於ftpadmin),都合理的被納於ftpadmin的管理之下。

  3.添加使用者:user1

  useradd -d /ftp/user1 -g ftpadmin -s

  /sbin/nologin user1

  這樣user1就對/ftp/user1的目錄有完整的許可權,而作為管理員也可以通過組許可權對目錄進行管理。

  每當需要添加使用者的時候,只需方便的簡單的添加一個Linux的使用者就可以了。

  4.對應的設定檔:proftpd.conf中的重要條目

  Umask 002

  DefaultRoot

  Umask 002 保證了建立的檔案有組讀寫權限。

  DefaultRoot ~ 保證 每個使用者登入後被鎖定在自己的目錄裡,看不到其他使用者的目錄。

  參考資料:

  [1]:http://www.proftpd.org/

  [2]:http://ipv6.bupt.edu.cn/

  作者:王洋

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.