


Linux下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 will be executed
*after* all the other init s.
# 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 ~ 保證 每個用戶登錄后被鎖定在自己的目錄里,看不到其他用戶的目錄。
關鍵字:安裝、目錄
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解