歡迎您光臨本站 註冊首頁

vsftpd配置手冊(2)

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0

  安裝篇

  ===============

  這個文件詳細介紹了如何從VSFTPD的.tar.gz分發包開始,建立和安裝並運行VSFTPD.

  1)建立VSFTPD

  先進入解壓.tar.gz文件后產生的目錄內.如下:

  cd vsftpd-2.0.1

  編輯"builddefs.h"以操作compile-time設定.(tcp_wrappers build,等)

  輸入make,回車(如果它不工作請發郵件通知我 .

  這將產生一個二進位文件,你可以驗證一下.如下:

  [chris@localhost vsftpd]$ ls -l vsftpd

  -rwxrwxr-x 1 chris chris 61748 Sep 27 00:26 vsftpd

  2)滿足VSFTPD安裝所需的一些條件

  VSFTPD默認設置需要一個"nobody"用戶,如果這個用戶不存在,那麼添加它.如下:

  [root@localhost root]# useradd nobody

  useradd: user nobody exists

  VSFTPD默認設置需要一個空目錄:/usr/share/empty.增加這個目錄,如果它還不存在的話.如下:

  [root@localhost root]# mkdir /usr/share/empty/

  mkdir: cannot create directory `/usr/share/empty': File exists

  如果容許匿名用戶(anonymous),那麼你將需要一個"ftp"用戶和其home目錄(這個home目錄不屬於「ftp」用戶,而且「ftp"用戶也對其沒有寫許可權)在你的系統中存在.

  以下命令用來創建一個"ftp"用戶,如果它還不存在的話.

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

  [root@localhost root]# useradd -d /var/ftp ftp

  (即使你的"ftp"用戶已經存在,完成以下這兩步也是很有好處的:)

  [root@localhost root]# chown root.root /var/ftp

  [root@localhost root]# chmod og-w /var/ftp

  3)安裝VSFTPD的配置、執行和幫助文件.

  輸入"make install"後會將二進位文件和幫助文件拷貝到適當的目錄.

  你也可以手工拷貝這些文件:

  cp vsftpd /usr/local/sbin/vsftpd

  cp vsftpd.conf.5 /usr/local/man/man5

  cp vsftpd.8 /usr/local/man/man8

  "make install"不會拷貝默認的配置文件,建議你手工拷貝:

  cp vsftpd.conf /etc

  daidong註:根據你系統版本的不同,也可能是 cp vsftpd.conf /etc/vsftpd

  4)測試 (無inetd影響)

  VSFTPD能運行在獨立模式(standalone)或者通過inetd(xinetd)來啟動.

  你能通過inetd來運行vsftpd以更好地控制它.但我們在首次運行時不這麼做,以便檢查系統是否現在配置正常.

  編輯/etc/vsftpd.conf(daidong註:也可能是/etc/vsftpd/vsftpd.conf),並在最下面加入以下這一行:

  listen=YES

  這將告訴VSFTPD不要從inetd啟動.

  OK,現在試著啟動FTP.

  以ROOT登錄.

  確定你沒有運行其他FTP服務(否則VSFTPD不能佔用FTP所需的21埠).

  運行那個二進位文件,如下:

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

  [1] 2104

  如果一切正常,那麼你將連上FTP伺服器,如下:

  [chris@localhost chris]$ ftp localhost

  Connected to localhost (127.0.0.1).

  220 (vsFTPd 1.1.1)

  Name (localhost:chris): ftp

  331 Please specify the password.

  Password:

  230 Login successful. Have fun.

  Remote system type is UNIX.

  Using binary mode to transfer files.

  ftp> ls

  227 Entering Passive Mode (127,0,0,1,229,133)

  150 Here comes the directory listing.

  d--x--x--x 2 0 0 4096 Jan 14 2002 bin

  d--x--x--x 2 0 0 4096 Apr 21 20:52 etc

  drwxr-xr-x 2 0 0 4096 Apr 21 20:52 lib

  drwxr-sr-x 2 0 50 4096 Jul 26 22:58 pub

  226 Directory send OK.

  ftp>

  5)從inetd或者類似方式啟動(官方推薦使用standalone方式)

  你也許想通過inetd或者類似方式啟動VSFTPD,這能給你更多的感受.例如xinetd就有很多的設置.

  (注意:VSFTPD的內在機制屏蔽了xinetd的大多數的有用的設置).

  如果使用標準的"inetd",你需要編輯/etc/inetd.conf,在其中加入以下一行:

  ftp stream tcp nowait root /usr/sbin/tcpd /usr/local/sbin/vsftpd

  (確定你刪除或者註釋掉一些已存在的FTP服務配置行.如果你沒有安裝tcp_wrappers,或者不想使用它們,那麼請去掉/usr/sbin/tcpd part).

  inetd需要指定並重新載入它的配置文件:

  kill -SIGHUP `pidof inetd`

  如果你想使用"xinetd",請參閱我們提供的範例 /EXAMPLE/INTERNET_SITE/README. 而其他範例文件將告訴你如何調配出更強大的xinetd功能.

  6)為本地登錄配置PAM文件(可選)

  如果你在一台激活了PAM的設備上運行VSFTPD,你需要提供一個 /etc/pam.d/ftp 文件.否則非匿名用戶將無法登錄伺服器.

  (註:如果你的PAM版本比較老,那麼這個文件也許是 /etc/pam.conf).

  做為一個標準設置,你可以拷貝一個已提供的範例文件,如下:

  cp RedHat/vsftpd.pam /etc/pam.d/ftp

  7)自定義你的配置文件

  完成以上的配置后,建議你安裝一個配置文件.默認的配置文件位置是/etc/vsftpd.conf. 在VSFTPD軟體分發包內有一個範例配置文件.

  你可以拷貝其為/etc/vsftpd.conf以做進一步修改.

  cp vsftpd.conf /etc

  (daidong註:也可能是 cp vsftpd.conf /etc/vsftpd ).

  這個默認配置即不容許本地登錄也不容許匿名用戶上傳,也許你希望更改這個配置.

  其它

  ===================

  測試平台 (已通過)

  -流行的,功能完善的平台都能測試通過.在以下平台的較新版本,VSFTPD工作得很好.在其大部分較早的版本下,也運行正常.

  - RedHat Linux

  - RedHat Enterprise Linux

  - Solaris / GNU tools (Solaris 8 or newer)

  - SuSE Linux

  - Debian Linux

  - OpenBSD

  - FreeBSD

  - NetBSD

  - HP-UX / GNU tools

  - IRIX / GNU tools

  - Mac OS X (note; older versions have setgroups() problem. 10.3.4 reported OK)

  虛擬用戶1

  =============

  這個例子示範了如何為虛擬用戶設置VSFTPD/PAM.

  虛擬用戶是一個在系統中並不作為一個登錄實體而存在的用戶.使用虛擬用戶比使用真實的用戶更安全,這個賬號只能用於FTP伺服器.

  虛擬用戶經常用來提供給不大可信任的用戶訪問某些資源,而這些資源通常是其他普通用戶不能訪問的.

  1)創建虛擬用戶資料庫

  我們將使用pam_userdb來認證虛擬用戶.這需要提供一個「db"格式(一種通用資料庫格式)的用戶名/密碼文件.

  創建一個"db"格式的文件,要創建一個標準文本文件,並把用戶名,密碼以豎直排列方式輸入.如logins.txt:

  tom

  foo

  fired

  bar

  這個例子中,tom用戶的密碼是foo.fired用戶的密碼是bar.

  以ROOT登錄,創建一個資料庫文件,如下:

  db_load -T -t hash -f logins.txt /etc/vsftpd_login.db

  (這要求berkeley db程序已經安裝)

  (註:一些系統也許安裝了多個版本的"db",某些情況下你可能使用"db3_load"才是正確的.對於一些 Debian系統就是這樣.

  關鍵在於要讓pam_userdb相信它的登錄資料庫是哪一個db版本所產生(一般都是db3,儘管你的系統里可能安裝的是db4).)

  這將創建/etc/vsftpd_login.db文件.顯然,你希望設定這個文件的許可權:

  chmod 600 /etc/vsftpd_login.db

  要了解更多關於維護你的登錄資料庫的信息,請在"berkeley DB"察看相關文檔:

  http://www.sleepycat.com/docs/utility/index.html

  2)用你的新資料庫創建一個PAM文件

  請參考範例vsftpd.pam,它包含2行:

  auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login

  account required /lib/security/pam_userdb.so db=/etc/vsftpd_login

  這是告訴PAM用新的資料庫去驗證用戶.把這個PAM文件拷貝到PAM目錄,一般是/etc/pam.d

  cp vsftpd.pam /etc/pam.d/ftp

  3)為虛擬用戶設置home目錄

  useradd -d /home/ftpsite virtual

  ls -ld /home/ftpsite

  (which should give):

  drwx------ 3 virtual virtual 4096 Jul 30 00:39 /home/ftpsite

  我們已經創建了一個名叫"virtual"的用戶,home目錄是"/home/ftpsite".

  我們拷貝一些東西到這個下載目錄:

  cp /etc/hosts /home/ftpsite

  chown virtual.virtual /home/ftpsite/hosts

  4)創建你的vsftpd.conf配置文件

  請參考這個目錄下的例子.讓我們一行行地看一看這些配置:

  anonymous_enable=NO

  local_enable=YES

  安全起見,屏蔽了匿名用戶,只啟用了非匿名用戶(即虛擬用戶使用的賬號)

  write_enable=NO

  anon_upload_enable=NO

  anon_mkdir_write_enable=NO

  anon_other_write_enable=NO

  為了安全請確認這幾個配置,這將關閉寫的許可權.

  chroot_local_user=YES

  這將把虛擬用戶鎖定在我們在以上設置的/home/ftpsite目錄內.

  guest_enable=YES

  guest_username=virtual

  guest_enable非常重要-它激活了虛擬用戶!而guest_username說明所有的虛擬用戶都對應我們在上面設置的真實用戶:「virtual".

  這同時確定了虛擬用戶在文件系統中的位置,也就是說,虛擬用戶的home目錄即"virtual"用戶的home目錄:/home/ftpsite.

  listen=YES

  listen_port=10021

  這讓VSFTPD以獨立模式(standalone)運行,而不是從inetd方式啟動.也就是說,你運行VSFTPD可執行文件就啟動了FTP服務.

  同時也讓VSFTPD啟用非標準埠10021來監聽FTP請求(FTP一般使用21埠).

  pasv_min_port=30000

  pasv_max_port=30999

  這設定了被動模式的FTP請求埠.當你配置了一個防火牆的時候,這個配置就很好用.

  拷貝範例配置文件到/etc

  cp vsftpd.conf /etc/

  (daidong註:也可能是/etc/vsftpd)

  5)啟動VSFTPD

  到VSFTPD二進位文件所在的目錄,輸入:

  ./vsftpd

  如果一切正常,這個命令將生效.否則,你將會看到一些錯誤信息的反饋.

  6)測試

  啟動另一個會話.(或者ctrl-z,再輸入"bg",讓VSFTPD在後台運行).

  這是一個FTP會話的例子:

  ftp localhost 10021

  Connected to localhost (127.0.0.1).

  220 ready, dude (vsFTPd 1.1.0: beat me, break me)

  Name (localhost:chris): tom

  331 Please specify the password.

  Password:

  230 Login successful. Have fun.

  Remote system type is UNIX.

  Using binary mode to transfer files.

  ftp> pwd

  257 "/"

  ftp> ls

  227 Entering Passive Mode (127,0,0,1,117,135)

  150 Here comes the directory listing.

  226 Transfer done (but failed to open directory).

  ftp> size hosts

  213 147

  ftp>

  註釋:

  密碼是"foo"

  出現」failed to open directory「的話,別擔心.這是/home/ftpsite目錄不容許被任意瀏覽.

  (我們可以更改anon_world_readable_only=NO以消除告警,但為了安全,還是保留這個配置).

  我們能通過size命令看到我們已經訪問了被我們拷貝到這裡的"hosts"文件.

  vsftpd.conf

  anonymous_enable=NO

  local_enable=YES

  write_enable=NO

  anon_upload_enable=NO

  anon_mkdir_write_enable=NO

  anon_other_write_enable=NO

  chroot_local_user=YES

  guest_enable=YES

  guest_username=virtual

  listen=YES

  listen_port=10021

  pasv_min_port=30000

  pasv_max_port=30999

  虛擬用戶2

  ===============

  這個例子將演示如何擴展「VIRTUAL_USERS」那個範例,從而實現更複雜一點的配置.

  讓我們假定我們需要2種不同的虛擬用戶:一種只能瀏覽並下載資源,另一種能上傳文件並瀏覽站內資源.

  要激活這個設置,我們將使用VSFTPD的強大的「單個用戶配置」功能(是V1.1.0后出現的新功能).

  在前一個虛擬用戶範例中,我們創建了2個用戶-tom和fred.

  我們將實現fred有寫許可權以上傳新文件,同時tom只能下載文件.

  1)激活單個用戶配置功能.

  要激活這個功能,需要增加以下配置行到配置文件:

  user_config_dir=/etc/vsftpd_user_conf

  並且創建目錄:

  mkdir /etc/vsftpd_user_conf

  2)授予tom讀取所有文件和目錄的許可權

  在上一個例子的,我們注意到虛擬用戶只能瀏覽所有的完全可讀屬性的目錄和文件.我們使/home/ftpsite完全可讀,而且被上傳的文件也

  賦予了完全可讀的許可權(daidong註:意思是說這樣虛擬用戶就能讀取所有的文件了).但實現這個目的的另一個方法是授權tom能下載那些非完全可讀的文件.

  對於tom,他的配置文件中需要修改一個設置:

  anon_world_readable_only:

  設為"anon_world_readable_only=NO" > /etc/vsftpd_user_conf/tom

  (daidong註:既把默認配置修改了anon_world_readable_only后,複製到/etc/vsftpd_user_conf下,名字為tom)

  驗證一下結果-以tom登錄,「ls」將返回一個目錄列表.如果以fred登錄將不會如此.

  注意:重啟VSFTPD以啟用配置文件/etc/vsftpd.conf(高級用戶也可以發送SIGHUP給VSFTPD的監聽進程).

  3)授予freg讀取所有文件/目錄並創建新文件/目錄的許可權,但讓他不能對已存在的文件/目錄進行操作.

  echo "anon_world_readable_only=NO" > /etc/vsftpd_user_conf/fred

  echo "write_enable=YES" >> /etc/vsftpd_user_conf/fred

  echo "anon_upload_enable=YES" >> /etc/vsftpd_user_conf/fred

  驗證一下-以tom登錄,將不能上傳,而fred就可以.

  試圖刪除一個文件--噢,你們倆都不行!


[火星人 ] vsftpd配置手冊(2)已經有563次圍觀

http://coctec.com/docs/linux/show-post-52304.html