天天看點

vsftp

其實我很喜歡用源碼包安裝軟體,今天在自己機器上用tar包成功安裝并配置了一個vsftp,現在把我的過程和大家說一下,希望對大家有所幫助!

一、安裝

1.下載下傳最新的穩定版vsftpd-1.2.1.tar.gz

2.解除安裝原有的rpm的vsftpd

rpm -e vsftpd

3.tar xvzf vsftpd-1.2.1.tar.gz

4.cd vsftpd-1.2.1

5.make

6.useradd nobody

7.mkdir /usr/share/empty

8.mkdir /var/ftp

9.useradd -d /var/ftp ftp

10.chown root.root /var/ftp

11.chmod og-w /var/ftp

說明:如果你象我一樣原來有rpm的vsftp,隻是解除安裝了,可以省略6-11步,如果原來沒有安裝vsftp,請按部就班。

12.make install

13.vi /etc/xinetd.d/vsftpd

把disable=yes改成no,儲存退出。然後service xinetd restart,ok!新裝的vsftp已經可以工作了!

說明:預設安裝的vsftpd是以xinetd的方式啟動的。你需要上述操作,一會兒,我們再來講把它改成獨立啟動的服務。

14.ftp 127.0.0.1

輸入使用者名ftp,密碼直接回車,ok!已經可以連接配接了!輸入quit退出。然後重新ftp 127.0.0.1,輸入本地使用者和密碼,卻提示login faild!why?原來少一個本地使用者認證的pam檔案。

15.cp redhat/vsftpd.pam /etc/pam.d/ftp(注意,沒有這一步将不能使用本地使用者登入!)

16.cp vsftpd.conf /etc/vsftpd.conf(現在,預設還是隻能匿名使用者登入)

17.vi /etc/vsftpd.conf

把anonmous_enable=yes改成no(禁掉匿名連結,不安全)

把local_enable=yes前的注釋去掉(打開本地使用者連接配接的權限)

把write_enable=yes前的注釋去掉(打開本地使用者的寫權限)

把local_umask=022前的注釋去掉

service xinetd restart

18.再次測試

ftp 127.0.0.1

使用ftp使用者空密碼登入,将出現login faild

使用本地使用者登入,ok!已經成功了!上傳檔案,也ok!

  這樣是不是就完事兒了?不是,做一個ftp,我們通常還需要一些特殊要求:比如一個使用者我隻允許他下載下傳,不允許他上傳;另一個使用者可以下載下傳也可以上傳,但是他不能删除檔案,不能給檔案改名;另外,我還需要我的ftp使用非正常的端口,限制下載下傳的速度,還需要一個管理者使用者。那怎麼辦?請看下面的部分!

二、進階配置

1.使用獨立服務

a.vi /etc/xinetd.d/vsftpd把disable=no還改成yes,不再需要它了!

b.vi /etc/vsftpd.conf在結尾加上listen=yes

c.service xinetd restart

d./usr/local/sbin/vsftpd /etc/vsftpd.conf &

ok!現在vsftp已經是獨立啟動的服務了!

2.使用非正常的端口(2121)

a.vi /etc/vsftpd.conf

添加listen_port=2121,儲存退出

b.killall -9 vsftpd

c./usr/local/sbin/vsftpd /etc/vsftpd.conf &

ok!現在用ftp 127.0.0.1将提示你連接配接被拒絕了(ftp:connect:connetion refuesd)!然後ftp 127.0.0.1 2121輸入使用者名和密碼,ok!可以登入!

3.實作不同使用者不同權限

現在我們就來實作三個使用者的不同權限:a.upload使用者,可以上傳下載下傳,可以建立檔案夾,但不能删除檔案和檔案夾,不能重命名原有檔案和檔案夾;b.download使用者,隻能下載下傳;c.admin使用者,管理者,可以上傳,可以下載下傳,可以建立檔案夾,可以删除和更改檔案和檔案夾名。這些使用者都不能登入系統,并且用ftp連接配接時鎖定在自己的家目錄中不能進入系統檔案夾。

a.cat << ! >;logins.txt

>;upload

>;******* #upload使用者的密碼

>;download

>;*******

>;admin

>;****************

>;!

說明,此文本檔案的格式是:單數行為使用者名,偶數行為密碼

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

c.chmod 600 /etc/vsftpd_login.db

d.cd vsftpd-1.2.1/example;cp viryual_users/vsftpd.pam /etc/pam.d/ftp.vu (進入你的解包的源碼目錄,把虛拟使用者的認證檔案拷貝到/etc/pam.d/下)

e.useradd -d /home/ftpsite virtual;chmod 700 /home/ftpsite;su - virtual -c "echo hello>;/homt/ftpsite/test.file(建立虛拟使用者所要通路的ftp目錄并設定僅virtual使用者通路的權限和建立一個供下載下傳實驗的檔案)

f.vi /etc/vsftpd.conf在此檔案中插入下面的配置語句

guest_enable=yes(啟用虛拟使用者)

guest_username=virtual(将虛拟使用者映射為本地virtual使用者)

pam_service_name=ftp.vu(指定pam配置檔案為ftp.vu)

user_config_dir=/etc/vsftpd_user_conf(指定不同虛拟使用者配置檔案的存放路徑)

儲存退出

g.mkdir /etc/vsftpd_user_conf

h.開放不同使用者的不同權限 echo "anon_world_readable_only=no">;/etc/vsftpd_user_conf/download(開放download使用者的下載下傳權限——隻能下載下傳;注意這個不地方不要寫成yes,否則将不能列出檔案和目錄)

cp /etc/vsftpd_user_conf/download /etc/vsftpd_user_conf/upload

vi /etc/vsftpd_user_conf/upload,添加下列行

write_enable=yes (增加寫權限)

anon_upload_enable=yes(增加上傳權限)

anon_mkdir_write_enable=yes (增加建立目錄的權限)

cp /etc/vsftpd_user_conf/upload /etc/vsftpd_user_conf/admin

增加一行:

anno_other_writer_enable=yes(增加管理者使用者的删除/重命名的權限)

i.測試

killall -9 vsftpd;/usr/local/sbin/vsftpd /etc/vsftpd.conf &

ftp 127.0.0.1 2121

以使用者名download和你設定的密碼登入,ls,可以看到檔案,下載下傳,成功!put一個檔案,提示

permission denied。rename test.file同樣權限被拒絕;delete test.file同樣不成功!

輸入quit退出,以upload使用者登入,ok!可以上傳,下載下傳,mkdir lsf,提示“/lsf" created;rename lsf lsf1提示permission denied,删除檔案同樣不成功!

輸入quit退出,以admin使用者登入,可以有上述所有權限,然後rmdir lsf,提示remove directory o[eration successful;delete test.file提示delete operation successful!ok,大功告成了!

4.還有限速,限制同一個ip的連接配接數,限制最大連接配接數等,我在另外的文章中已經寫過,在此不再贅述

像其它守護程式一樣,vsftpd提供了standalone和inetd(inetd或xinetd)兩種運作模式。簡單解釋一下,standalone一次性啟動,運作期間一直駐留在記憶體中,優點是對接入信号反應快,缺點是損耗了一定的系統資源,是以經常應用于對實時反應要求較高的專業ftp伺服器。inetd恰恰相反,由于隻在外部連接配接發送請求時才調用ftp程序,是以不适合應用在同時連接配接數量較多的系統。此外,inetd模式不占用系統資源。除了反應速度和占用資源兩方面的影響外,vsftpd還提供了一些額外的進階功能,如inetd模式支援per_ip(單一ip)限制,而standalone模式則更有利于pam驗證功能的應用。

1.xinetd運作模式

大多數較新的系統采用的是xinetd超級服務守護程序。使用“vi /etc/xinetd.d/vsftpd” 看一下它的内容,如下:

disable = no

socket_type = stream

wait = no

# 這表示裝置是激活的,它正在使用标準的tcp sockets。

如果“/etc/vsftpd.conf”中的有選項為“listen=yes”,登出它

最後,重新開機xinetd,指令如下:

$ /etc/rc.d/init.d/xinetd restart

需要注意的是,“/etc/xinetd.d”目錄中僅能開啟一個ftp服務。

2.standalone模式

  standalone模式便于實作pam驗證功能。進入這種模式首先要關閉xinetd下的vsftpd,設定

“disable = yes”,或者登出掉“/etc/inetd.conf”中相應的行。然後修改“/etc/vsftpd.con

f”中的選項為“listen=yes”。

繼續閱讀