LINUX FTP簡單配置

FTP配置
一、#vi /etc/vsftp/vsftpd.conf                #主要配置幾個關鍵的就能夠
   anonymous_enable=NO                       #拒絕匿名訪問
   chroot_local_user=YES                     #鎖定用戶目錄,本行須要本身添加。 
二、新建zgc用戶,並鎖定/app/zgc目錄
   #useradd –d /app/zgc zgc
   #passwd zgc
php

三、禁止zgc登陸系統
   #vi /etc/passwd
找到zgc用戶,將最後部分改成紅色部分
zgc:x:503:504::/app/zgc:/sbin/nologin
html

四、若是能鏈接上,可是沒法list目錄,應該是iptables的模塊沒有加載成功。
在/etc/rc.local中添加
/sbin/modprobe ip_conntract
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
node

以上是最簡單的配置,實現最基本功能。linux

如下轉載一篇至關詳細的vsftp配置apache

http://blogold.chinaunix.net/u1/45336/showart_2369216.html瀏覽器

+++++++++++++++++++++++++++++++++++++++++++
正文
+++++++++++++++++++++++++++++++++++++++++++
安全

一、vsFTPd,目前經常使用FTP服務器套件;bash

vsFTPd是一款在Linux發行版中最受推崇的FTP服務器程序;特色是小巧輕快,安全易用;能讓其自身特色得發發揮和掌握,也然最主要的是會用;服務器

目前在開源操做系統中經常使用的FTPD套件主要有ProFTPD、PureFTPd和wuftpd等;至於哪一個FTP服務器套件更好,哪一個是你最熟悉的,哪一個就是最好的;網絡

二、ftp 用戶管理解說;

FTP服務器對用戶的管理,在默認的狀況下是根據 /etc/passwd及/etc/group 來進行的,因此咱們必定要了解Linux系統用戶和用戶組的管理,用戶和用戶組的管理是一切應用的的基礎,有的弟兄不想去了解基礎的東西,就想一步成架好各類服務器,事實證實這種學習方法是最不明智的;雖然在您可能在幾分鐘啓動了ftp服務器,但遇到問題時,您不必定能知道是哪裏出錯;因此基礎仍是極爲重要的;

推薦文章: 《Linux 用戶(user)和用戶組(group)管理概述》

2.一、匿名ftp 用戶和用戶組的理解;

當咱們訪問各大FTP上訪問時,可能咱們不去想咱們以什麼身份登陸的,若是他的FTP容許匿名登陸的話;好比咱們在瀏覽器上打入;

 

ftp://mirrors.kernel.org

ftp://ftp:ftp@mirrors.kernel.org

 

咱們會發現上面的兩行最終都能訪問,並且顯示的結果也徹底同樣,最終都跳到 ftp://mirrors.kernel.org 地址;那咱們訪問這個FTP時,是否是有用戶和密碼呢?是的,也是須要在的,只是在服務器端容許匿名訪問,而匿名訪問的用戶名和密碼都是ftp,只是咱們由於匿名訪問,沒有感受到他有用戶名和密碼罷了。第二個地址就是以ftp用戶,密碼也是ftp來訪問 ftp://mirrors.kernel.org;

若是咱們以ftp命令鏈接 mirrors.kernel.org 時,咱們會發現須要輸入用戶ftp,密碼ftp才能訪問;

在FTP服務器中,匿名用戶的用戶名和密碼都是ftp ;這個用戶能夠在您的操做系統中的 /etc/passwd 中能找獲得;可能有相似下面的一行;

 

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

 

說明:

/etc/passwd 是系統用戶的配置文件;/etc/group是系統用戶組配置文件,您能夠經過 《Linux 用戶(user)和用戶組(group)管理概述》 及其相關文檔中瞭解一些用戶管理的一些基礎知識;

在ftp用戶這行中,咱們看到七個字段,每一個字段寫字段之間用:號分割;

ftp 是用戶名
x 是密碼字段,是隱藏的;
14 是用戶的UID字段,能夠本身來設定,不要和其它用戶的UID相同,不然會形成系統安全問題;
50 用用戶組的GID,能夠本身設定,不要和其它用戶組共用FTP的GID,不然會形成系統全全問題;
FTP User 是用戶說明字段;
/var/ftp 是ftp用戶的家目錄,能夠本身來定義;
/sbin/nologin 這是用戶登陸SHELL ,這個也是能夠定義的,/sbin/nologin 表示不能登陸系統;系統虛擬賬號(也被稱爲僞用戶)通常都是這麼設置。好比咱們把ftp用戶的/sbin/nologin 改成 /bin/bash ,這樣ftp用戶經過本地或者遠程工具ssh或telnet以真實用戶身份登陸到系統。這樣作對系統來講是不安全的;若是您認爲一個用戶沒有太大的必要登陸到系統,就能夠只給他FTP賬號的權限,也就是說只給他FTP的權限,而不要把他的SHELL設置成 /bin/bash 等;

關於ftp用戶組的理解:

咱們查看 /etc/group 的時候,會發現相似這樣一條;

 

ftp:x:50:

 

/etc/group 是用戶組的管理配置文件,上面這行表示用戶組ftp,x是密碼段,50是GID;咱們對照在/etc/passwd中的ftp那行得知ftp用戶是屬於ftp用戶組的,由於ftp用戶那行中的GID和ftp用戶組的GID是相同的;

2.二、匿名ftp 用戶和ftp用戶組是否能夠刪除

在通常狀況下是不能把/etc/passwd和/etc/group 中有把ftp用戶和用戶組的行刪除的,由於FTP服務器是須要他們來對FTP用戶實現管理,在默認的狀況下。

雖然不能刪除,但對/etc/passwd及/etc/group中的ftp用戶及ftp用戶組的一些相關的東西是能修改的;好比咱們能夠把ftp用戶的家目錄改掉,也能夠把ftp用戶的UID改掉 ... ... 前提是你對用戶管理有所瞭解,系統用戶管理是一切應用基礎之一,可能初學Linux的弟兄並不瞭解用戶管理的重要性,但慢慢您就會發現這個道理;

三、vsFTPd的安裝;

在最新的各大發行版中的安裝盤中都有vsFTPd的軟件包,您用相應發行版提供的軟件包管理工具就能安裝上;固然您能夠到各大發行版的FTP鏡像中找到vsftpd的軟件包;固然也能用軟件包的管理工具在線安裝;vsftpd的軟件包原本不大,花不了多長時間,兩分鐘就夠了吧;由於本文是初學者教程,我嚴重推薦您用發行版提供的軟件來安裝,不推薦您本身來編譯源碼包的安裝方式;

若是您用的是Fedora 或Redhat 系統,能夠用下面的命令在線安裝;

 

[root@localhost ~]# yum install vsftpd

 

若是是debian 類系統,能夠用apt 來在線安裝;

 

[root@localhost ~]# apt-get install vsftpd

 

若是您是RPM的系統,也能夠找到vsftpd-xxxx.rpm 的包來經過rpm命令來安裝;

 

[root@localhost ~]# rpm -ivh vsftpd*.rpm

 

您能夠下載源碼包來安裝

好比咱們下載的是 vsftpd-2.0.3.tar.gz ;

 

[root@localhost ~]# tar zxvf vsftpd-2.0.3.tar.gz
[root@localhost ~]# cd vsftpd-2.0.3
[root@localhost ~]# make ;make install
[root@localhost ~]# cp vsftpd.conf /etc

 

而後修改/etc/vsftpd.conf ,在配置文件的最後一行加入下面一行;

 

listen=yes

 

源碼包安裝的方法,若是您的系統是RPM包管理的系統,能夠刪除/etc/xinetd.d/vsftpd 這個文件;而後啓動xinetd 服務器;

 

[root@localhost ~]# /etc/init.d/xinetd restart
中止 xinetd:                                              [  肯定  ]
啓動 xinetd:                                              [  肯定  ]

 

vsFTPd運行有兩種模式,在RPM包管理的系重審統,大可能是由Fedora/Redhat 開發而來,對於這樣的系統有xinted服務器一說;對於非RPM包管理的系統,通常沒有xinted這一說。爲了保證本文檔的統一,咱們都不要用xinetd模式,而用initd運行模式來啓動和管理服務器,也就是獨立運行模式; 至於什麼是xinted和inted 模式,您能夠參考《 用vsFTPd自架Linux網絡安裝服務器》

四、vsFTPd的服務器的啓動和關閉;

vsFTPd服務器啓動和關閉是極容易的;咱們能夠直接把服務器運行調到後臺運行;這是幾乎全部服務器管理的運行方式;

4.一、vsFTPd服務器啓動和關閉的通用方法;

運行vsftpd命令,要用到root權限,若是您當前操做用戶並不是是root,能夠用su切換到root權限;關於root權限的切換,您有兩種方式,一種是su,另外一種是sudo;請參考: 《Linux 系統中的超級權限的控制》

vsFTPd服務器的運行;

 

[root@localhost ~]# /usr/sbin/vsftpd &
[root@localhost ~]# /usr/local/sbin/vsftpd &

 

vsFTPd服務器是否運行起來;

咱們能夠經過pgrep vsftpd 來查看vsftpd是否運行起來;

 

[root@localhost ~]# pgrep vsftpd
4248

 

上面顯示vsFTPd服務器運行起來了,您能夠經過ftp命令、lftp工具或gftp或其它的FTP客戶端來測試鏈接;

vsFTPd 服務器關閉:

咱們用pkill vsftpd 來殺死vsftpd進程,這樣就把vsFTPd關閉,用psgrep vsftpd 來查看進程,若是沒有進程,證實vsFTPd已經關掉;固然也要用到root權限。

 


[root@localhost ~]# pkill vsftpd
[root@localhost ~]# pgrep vsftpd



 

 

4.二、在Fedora/Redhat/CentOS中vsFTPd 服務器的啓動和關閉:

在Fedora/Redhat/CentOS中,也能夠用下面的方法來啓動vsFTPd;固然也要用到root權限;

 

[root@localhost beinan]# /etc/init.d/vsftpd start
爲 vsftpd 啓動 vsftpd:                                    [  肯定  ]

 

從新啓動vsFTPd用下面的命令;

 

[root@localhost beinan]# /etc/init.d/vsftpd restart
關閉 vsftpd:                                              [  肯定  ]
爲 vsftpd 啓動 vsftpd:                                    [  肯定  ]

 

關掉vsFTPd服務器,應該用下面的命令;

 

[root@localhost beinan]# /etc/init.d/vsftpd stop
關閉 vsftpd:                                              [  肯定  ]

 

 

五、vsFTPd的服務器和防火牆及SELINUX的關係;(重要)

我在論壇上看到有些弟兄說vsFTPd服務器啓動正常,但卻不能訪問或用戶不能上傳文件,我感受應該是防火牆或SELINUX的事;可能FTPD服務器被防火牆或SELINUX的安全機制防住了。因此您必需要讓防火牆經過ftp,固然也要讓SELINUX經過ftp服務器才行;

在Fedora/Redhat/CentOS中,您要設置一下防火牆,能夠把防火牆關掉,或者在自定義中讓ftp 「經過」防火牆;

 

[root@localhost ~]# system-config-securitylevel-tui

 

或者運行一下以下的命令,清除防火牆規則(通用);

 

[root@localhost beinan]# iptables -F

 

關於SELINUX服務器的解說 ,可能老手或新手對SELINUX都有點麻煩,建議您SELINUX;或者讓vsFTPd服務器跳過SELINUX啓動;也就是說要用到 4.一、vsFTPd服務器啓動和關閉的通用方法;;這在Fedora/Redhat/CentOS中這樣啓動vsFTPd服務器是有效的;

固然您可也能夠關掉SELINUX,在/etc/selinux/config 配置文件以下;

 

/etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#       enforcing - SELinux security policy is enforced.
#       permissive - SELinux prints warnings instead of enforcing.
#       disabled - SELinux is fully disabled.
SELINUX=Disabled  #這樣就把SELINUX服務器關掉了,請從新啓動系統;
# SELINUXTYPE= type of policy in use. Possible values are:
#       targeted - Only targeted network daemons are protected.
#       strict - Full SELinux protection.
SELINUXTYPE=targeted

 

 

六、500 OOPS: vsftpd: refusing to run with writable anonymous root

若是咱們已經把vsFTPd服務器啓動好了,但登陸測試是會出現相似下面的提示;

500 OOPS: vsftpd: refusing to run with writable anonymous root

這表示ftp用戶的家目錄的權限不對,應該改過纔對;

 

[root@localhost ~]# more /etc/passwd |grep ftp
ftp:x:1000:1000:FTP User:/var/ftp:/sbin/nologin

 

咱們發現ftp用戶的家目錄在/var/ftp,就是這個/var/ftp的權限不對所致,這個目錄的權限是不能打開全部權限的;是您運行了chmod 777 /var/ftp所致;若是沒有ftp用戶這個家目錄,固然您要本身建一個;

以下FTP用戶的家目錄是不能針對全部用戶、用戶組、其它用戶組徹底開放;

[root@localhost ~]# ls -ld /var/ftp
drwxrwxrwx  3 root root 4096 2005-03-23  /var/ftp

 

修正這個錯誤,應該用下面的辦法;

 

[root@localhost ~]# chown  root:root /var/ftp
[root@localhost ~]# chmod  755 /var/ftp

 

有的弟兄可能會說,那匿名用戶的可讀、可下載、可上傳怎麼辦呢?這也簡單,在/var/ftp下再建一個目錄,權限是777的就好了,再改一改vsftpd.conf就OK了;沒有什麼難的;

vsFTPd出於安全考慮,是不許讓ftp用戶的家目錄的權限是徹底沒有限制的,您能夠去讀一下vsFTPd的文檔就明白的了;不然也不能稱爲最安全的FTP服務器了,對不對?

七、關於vsFTPd配置文件的說明;

vsftpd.conf是vsFTPd服務器的配置文件,此文件通常是/etc/vsftpd.conf或/etc/vsftpd/vsftpd.conf ,以系統爲準吧。。

vsftpd.conf配置文件就是vsFTPd服務器的全局控制文件,此配置文件中,每行應該算作一個規則;前面帶有#號的服務器不會解釋,這和apache 的配置文件相似;#後所接的內容通常是說明性的,或者是關掉某些功能的選項;

vsftpd.conf 這個配置文件並不包括全部您想實現的功能,有些功能的實現,咱們要本身動手來解決,咱們要學會查vsFTPd的文檔和FAQ等,雖然是英文的,但都是比較簡單的;咱們要習慣看洋文文檔,爲何呢?由於Linux原本就是洋人厲害,重量級的軟件都是洋人的。呵,兄弟不要抱怨,誰讓咱們落後了呢?

注意:修改完配置文件後,必定要重啓vsFTPd服務器才能生效,切記~~

 

八、關於vsFTPd服務器的一些經常使用功能的實現;

8.一、關於匿名上傳下載的實現;

關於匿名上傳,其實也比較簡單,首先咱們要修改一下vsftpd.conf ,此文件位於 /etc/目錄下,多是/etc/vsftpd.conf,也多是/etc/vsftpd/vsftpd.conf文件。以您的系統環境爲準;

首先:咱們要改一下vsftpd.conf,確保有如下幾行;

 

anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_umask=022

 

其次:在ftp用戶家目錄的下建一個文件夾,並修改其權限爲徹底開放;

ftp用戶的家目錄在哪?咱們前面已經說了,要經過/etc/passwd來查看;也能夠經過finger ftp來查看;

 

[root@localhost beinan]# finger ftp
Login: ftp                              Name: FTP User
Directory: /var/ftp                     Shell: /sbin/nologin

 

這說明ftp用戶的家目錄在/var/ftp ,咱們要在這個目錄下建一個目錄,而後把他的權限設置爲任何用戶可讀可寫可執行就好了;通常的狀況下,在發行版中,有一個/var/ftp/pub的目錄,若是沒有,您也能夠本身建一個;把配置文件改好後,只要把/var/ftp下的任何一個目錄的權限打開,均可以用來匿名上傳和下載;

好比您想讓匿名用戶上傳和下載都在/var/ftp/pub,就能夠把/var/ftp/pub的權限打開,若是沒有這個目錄,您要本身建一個;

 

[root@localhost ~]# mkdir /var/ftp/pub
[root@localhost ~]# chmod 777 /var/ftp/pub

 

這樣上傳的時候傳到pub目錄就OK了,對不對??

8.二、關於添加本地用戶及打開讀寫權限示例;

FTP用戶通常是不能登陸系統的,這也是爲了安全。在系統中,沒有權限登陸系統的用戶通常也被稱之爲虛擬用戶;虛擬用戶也是要寫進/etc/passwd中;這只是一種虛擬用戶的方法,但說實在的並非真正的虛擬用戶,只是把他登陸SHELL的權限去掉了,因此他沒有能力登陸系統;

若是咱們想把beinan這個用戶目錄定位在/opt/beinan這個目錄中,而且不能登陸系統;咱們應該以下操做

 

[root@localhost ~]# adduser -d /opt/beinan -g ftp -s /sbin/nologin beinan
[root@localhost ~]# passwd beinan
Changing password for user beinan.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@localhost ~]#

 

其實這仍是不夠的,還要改一下配置文件vsftpd.conf ,以確保本地虛擬用戶能有讀寫權限;

 

local_enable=YES
write_enable=YES
local_umask=022

 



8.四、如何實現虛擬路徑?

好比:

/home/a 映射爲 ftp://localhost/a
/home/b/c 則爲 ftp://localhost/c

 

其實這個不能說是vsFTPd的內容,其實咱們早就接觸過了,可能咱們沒有注意,咱們能夠經過以下的方法來實現。

[root@localhost ~]# mount --bind [原有的目錄] [新目錄]

 

好比個人ftp的默認目錄是/var/ftp,我想把/mnt/LinG/WinSoft文件夾,映射到/var/ftp目錄中,我就以下操做

咱們要先在/var/ftp目錄中建一個目錄

[root@localhost ~]# mkdir /var/ftp/WinSoft

 

而後執行mount命令

[root@localhost ~]# mount --bind /mnt/LinG/WinSoft /var/ftp/WinSoft

 

這樣就OK了。

8.五、打開vsFTP服務器的日誌功能;

把下面xferlog_file前面的#號對掉,也就是把vsftp的log功能打開,這樣咱們就能在/var/log目錄下查看vsftpd.log。這是vsFTP的日誌功能,這對於咱們來講是極爲重要的。

xferlog_file=/var/log/vsftpd.log

 



8.六、如何定製歡迎信息;

如何定製歡迎信息,也就是咱們登入有些FTP以後,會出現相似:歡迎您來到LinuxSir FTP,在這裏,您會獲得最真誠的幫助,若是有什麼問題和建議,請來信,多謝。

實現這個並不難,咱們能夠查看vsftpd.conf文件中,是否有這行。

 

dirmessage_enable=YES
message_file=.message

 

若是沒有就加上,若是dirmessage_enable=YES前面有#號,就把#號去掉。其實FTP信息默認的就是.message,因此能夠不加 message_file= 來指定。本身指定也行,無所謂的事;

而後咱們制定一個.message文件,寫上您想要寫的東西,好比是.message的內容是以下的:

 

--歡迎您來到LinuxSir FTP!
--在這裏,您會獲得最真誠的幫助;
--若是有什麼問題和建議,請來信,多謝。

 

咱們能夠用編輯器來寫這個.message,我想這個過程就不用說了吧。

而後咱們把.message這個文件複製到各個用戶的家目錄中。好比個人FTP的一個用戶是beinan,這個用戶所在的家目錄是/opt/beinan
咱們就要把.message放在/opt/beinan這個目錄下。若是系統用戶ftp,他的目錄就是/var/ftp這個目錄,這個是默認的,當匿名用戶登入時就訪問的是/var/ftp這個目錄。咱們要讓匿名用戶能看到歡迎信息。就要把.message放在/var/ftp目錄中。其它的用戶,也無非就是相似的操做。

8.七、硬盤空間有限,如何把賬號ftp默認的家目錄更改到別處?

個人硬盤空間有限,如何把賬號ftp默認的路徑/var/ftp更改到別處?或者是,個人linux全部的目錄都放在/根分區,由於空間緊張,我可否把ftp這個用戶的默認路徑放到別的分區??

對於ftp這個用戶的管理,咱們應該查看/etc/passwd ,而後修改ftp用戶那行;

 

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

 

好比咱們想把ftp用戶的家目錄改成/opt/ftp,則要把相似上一行改成

 

ftp:x:14:50:FTP User:/opt/ftp:/sbin/nologin

 

而後咱們要創建ftp用戶的新的家目錄;

 

[root@localhost ~]# mkdir /opt/ftp
[root@localhost ~]# chmod 755 /opt/ftp
[root@localhost ~]# chown root:root /opt/ftp

 

若是默認的ftp磁盤空間緊張,咱們其實也能夠用虛擬路徑映射的方法來解決;也就是mount --bind的辦法;看狀況吧,哪一個適合就是最好的方法;

8.八、如何讓vsFTP服務器限制連接數,以及每一個IP最大的連接數?

應該改vsFTPd服務器的配製文件vsftpd.conf,加入下面的兩行:

 

max_clients=數字
max_per_ip=數字

 

舉例:我想讓個人vsFTP最大支持連接數爲100個,每一個IP,最多能支持5個連接,因此我應該在vsftpd.conf中加上以下的兩行:

 

max_clients=100
max_per_ip=5


改好了配製文件,不要忘記啓動vsftp服務器。


8.九、如何限制傳輸速度?


anon_max_rate=數字

 

注:這是匿名的速度

local_max_rate=數字


注:這是vsFTP服務器上本地用戶的速度

 

注:這個數字的單位是byte,因此咱們要計算一下。好比我想讓匿名用戶和vsFTP上的用戶都以80KB下載,因此這個數字應該是1024x80=81920
因此咱們要在vsftpd.conf中加入下面的兩行

 

anon_max_rate=81920
local_max_rate=81920

 

 

8.十、如何有選擇的把用戶限制在家目錄中呢?

咱們要本身建一個文件,在/etc目錄中或/etc/vsftpd目錄中(假如您的vsftpd配置文件都是放在這個目錄的話);

#touch /etc/vsftpd.chroot_list


以beinan和nanbei這兩個用戶限制在他們所在的家目錄中,而其它的FTP用戶不作此限制。

 

在vsftpd.chroot_list這個文件中,把beinan和nanbei添上去就行,注意,每一個用戶佔一行。

beinan
nanbei

 

而後改/etc/vsftpd/vsftpd.conf文件,找以下的兩行

 

chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

 

若是沒有這樣的兩行,就能夠本身添加上去也是同樣的。

設置好後,從新vsFTPD服務器。

補充一之補充:如何把系統內全部的FTP用戶都限制在家目錄中呢??經juliaugong兄的提示,我查找了vsFTPd的洋文說明,證實這個選項是一刀切的解決全部的用戶都能限制在家目錄中

咱們能夠經過更改vsftpd.conf文件,加入以下的一行

chroot_local_user=YES

 

改完配製文件,不要忘記重啓vsFTPd服務器;

8.十一、如何讓綁定IP到vsFTPd?

如何讓綁定IP到vsFTPd?也就是說,如何讓用戶只能經過某個IP來訪問FTP。其實這個功能頗有意思。若是綁定的是內網的IP,外部是沒有辦法訪問的。若是綁定的是對外服務的IP,內網也只能經過對外服務的IP來訪問FTP

在vsftpd.conf中加一行,以個人局域網爲例,請看第一帖中的操做環境,這樣外網就不能訪問個人FTP了,內網也可能經過192.168.0.2來訪問FTP;

 

listen_address=192.168.0.2
相關文章
相關標籤/搜索