在CentOS 7上安裝FTP伺服器

來源:互聯網
上載者:User

標籤:

在Linux系統中通常使用的FTP伺服器是vsftpd,所以下面我就記錄一下我是如何在一台沒有安裝vsftpd的Linux主機上安裝vsftpd。

1、安裝vsftpd包

sudo yum install vsftpd

2、配置FTP賬戶

在Linux系統中FTP賬戶也是一種特殊的系統使用者,只不過FTP賬戶的許可權需要特殊設定而已。所以,我們先添加一個FTP賬戶:

sudo useradd -d /home/www www

其中,useradd為添加使用者的命令,該命令只有超級使用者組的使用者才可以使用。參數“-d”表示該參數後面指定的是使用者的主目錄。最後面一個參數是FTP使用者名稱。

然後為www使用者佈建密碼:

sudo passwd www

根據提示輸入兩次密碼。

3、設定www使用者的許可權:

usermod -s /sbin/nologin www

其中,usermod為修改使用者資訊的命令,它也是只能由超級使用者組的成員才能使用。參數“-s”表示該參數後面指定的是使用者登入所使用的shell。我們可以查看系統裡面有哪些shell:cat /etc/shells

在我的CentOS 7上面顯示有如下幾個:

/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh

我們可以看到上面有兩個名為nologin的shell,其實它們兩個是一樣的,只不過/sbin目錄是/usr/sbin目錄的連結目錄,也就是我們通常所說的檔案夾捷徑。如果我們為某個使用者指定了他登入所使用的shell為nologin,那就意味著不允許他使用ssh的方式登入系統,但是呢他仍舊可以有其它許可權。為了安全性,我們剛建立的FTP賬戶就不能讓他有ssh方式登入系統的許可權,所以需要將他的登入shell設為nologin。

設定完不能登入還不算完,試想一下,如果FTP使用者通過FTP方式登入系統,那他除了可以看到自己的主目錄之外,是不是也可以調轉到其它非自己主目錄下的目錄呢,答案是當然可以,如果不進行限定就是這樣。所以,我們還需要限定www使用者只能看到自己主目錄下的東西。哦,對了,別忘了還有個匿名使用者得禁掉。

這些配置我們需要在vsftpd的設定檔裡面進行配置:

sudo vi /etc/vsftpd/vsftpd.conf

那麼,設定檔裡面有這麼多選項,我們到底該配置哪些呢,不用擔心,我們可以去vsftpd官網找答案。不過很可惜,我打不開官網,這也沒關係,我們可以去wikipedia.org上找找看,很快地我就開啟了wikipedia上的vsftpd的詞條,我發現裡面並沒有將如何配置vsftpd的,但是我在下方的外部連結“External links”下面發現了“List of Config Directives”這項連結,開啟一看,我發現這就是我要找的配置說明。

依次從上往下看,我發現了一些關於匿名賬戶的相關設定,它們多以“anon”開頭,這些選項大多數的預設值都是NO,我看到“anon_world_readable_only”和“anonymous_enable”這兩項的預設值是YES。其中“anon_world_readable_only”選項如果為YES,則允許匿名使用者下載伺服器上的檔案,很明顯我不能允許,所以這個選項應設為NO。“anonymous_enable”選項控制是否允許匿名使用者登入FTP伺服器,很明顯這項也應設定為NO。所以,我們需要在設定檔中配置下面這兩項:

anon_world_readable_only=NO
anonymous_enable=NO

再往下看,我發現可以改變使用者根目錄的兩個選項“chroot_local_user”和“chroot_list_enable”,其中chroot其實是一個名為chroot(const char *path)的C函數,此函數的作用就是將改變調用進程的根目錄為指定的路徑。選項“chroot_local_user”的值如果設為YES,那麼本機使用者在通過FTP方式登入之後,他將會被關進他自己的根目錄中,而不允許調轉到非自己根目錄及其子目錄以外的其它目錄。而選項“chroot_list_enable”如果設為YES,那麼vsftpd將允許我們通過“chroot_list_file”選項指定一個包含本機使用者列表的檔案來控制到底哪些使用者在登入後會被關進自己的根目錄。

我們需要注意的是,“chroot_local_user”選項和“chroot_list_enable”選項組合使用時所表示的實際含義是相反的。什麼意思呢,下面我用一個表格來說明:

chroot_local_user chroot_list_enable 實際含義
YES YES 只有“chroot_list_file”裡面列出的使用者才不會被關進自己的根目錄。
YES NO 所有本機使用者均會被關進自己的根目錄。
NO YES 只有“chroot_list_file”裡面列出的使用者才會被關進自己的根目錄。
NO NO 所有本機使用者均不會被關進自己的根目錄。

所以,通常情況下選項“chroot_local_user”和選項“chroot_list_enable”不應同時使用,除非有特殊癖好。

我這裡只需要設定“chroot_local_user”選項即可:

chroot_loacl_user=YES

再往下看,我發現了一個名為“connect_from_port_20”的選項,該選項控制FTP傳輸方式,如果設為YES,則使用Port方式傳輸資料。關於FTP的傳輸方式,百度文庫上有詳細說明:http://wenku.baidu.com/view/728dc0104431b90d6c85c79c.html相對應的還有PASV方式,對於該方式,我們需要將“connect_from_port_20”選項設為NO或者注釋掉。同時還應設定如下選項:

pasv_enable=YES
pasv_max_port=pasv模式最大連接埠
pasv_min_port=pasv模式最小連接埠

但是,PASV模式通常適用於多用戶端,而我就一人使用,所以我就沒必要使用這個模式。所以我只需設定“connect_from_port_20=YES”就OK。

4、重啟vsftpd伺服器:

sudo /etc/init.d/vsftpd restart

參考文獻
  • http://vsftpd.beasts.org/vsftpd_conf.html
  • http://man7.org/linux/man-pages/man2/chroot.2.html

在CentOS 7上安裝FTP伺服器

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.