1. 程式人生 > >十五、CentOS下FTP安裝及配置

十五、CentOS下FTP安裝及配置

15.1. FTP的安裝

1、檢測是否安裝了FTP :

[[email protected] ~]# rpm -q vsftpd

vsftpd-2.0.5-16.el5_5.1

否則顯示:[[email protected]~]# package vsftpd is not installed

檢視ftp執行狀態

service vsftpd status

2、如果沒安裝FTP,執行yum install vsftpd命令進行安裝

如果無法下載,需要設定好yum如下

cd /etc/yum.repos.d

mv CentOS-Base.repo  CentOS-Base.repo.save

wget http://centos.ustc.edu.cn/CentOS-Base.repo

3、在linux中新增ftp使用者,並設定相應的許可權,操作步驟如下:

3.1、環境:

ftp為vsftp 被限制使用者名稱為test。被限制路徑為/home/test

3.2、建使用者:在root使用者下:

# useradd -d/home/test test //增加使用者test,並制定test使用者的主目錄為/home/test

# passwd test //為test設定密碼

3.3、更改使用者相應的許可權設定:

# usermod -s/sbin/nologin test //限定使用者test不能telnet,只能ftp

# usermod -s/sbin/bash test //使用者test恢復正常

# usermod -d /testtest //更改使用者test的主目錄為/test

3.4、限制使用者只能訪問/home/test,不能訪問其他路徑:

修改 # /etc/vsftpd/vsftpd.conf 如下:

chroot_list_enable=YES //限制訪問自身目錄

# (default follows)

chroot_list_file=/etc/vsftpd/vsftpd.chroot_list

編輯 vsftpd.chroot_list檔案,將受限制的使用者新增進去,每個使用者名稱一行

改完配置檔案,不要忘記重啟vsFTPd伺服器。

# /etc/init.d/vsftpd restart

3.5、如果需要允許使用者修改密碼,但是又沒有telnet登入系統的許可權:

# usermod -s /usr/bin/passwd test //使用者telnet後將直接進入改密介面

4、linux ftp埠怎麼設定

編輯/etc/vsftpd/vsftpd.conf,增加listen_port=2021編輯 /etc/services 檔案,將其中的
ftp 21/tcp
改為 ftp 2021/tcp
ftp 21/udp
改為 ftp 2021/udp執行 service vsftpd restart 重新啟動 vsftpd 服務這樣ftp埠改到了2021

配置防火牆,iptables

在配置檔案iptables 中新增 iptables -A INPUT-p tcp --dport 2021 -j ACCEPT  ,將2021埠放開。



注:每次修改過ftp相關的配置檔案,都需要重啟ftp程序來生效。

5、問題:

原因是他的CentOS系統安裝了SELinux,因為預設下是沒有開啟FTP的支援,所以訪問時都被阻止了。
//檢視SELinux設定
# getsebool -a|grep ftp
ftpd_disable_trans --> off
或者
ftp_home_dir-->off
//使用setsebool命令開啟
# setsebool ftpd_disable_trans 1
或者
# setsebool ftp_home_dir 1
//檢視當前狀態是否是on的狀態
# getsebool -a|grep ftp
ftpd_disable_trans --> on
或者
ftp_home_dir-->on
//setsebool使用-P引數,無需每次開機都輸入這個命令
# setsebool -P ftpd_disable_trans 1
或者
# setsebool -P ftp_home_dir 1
# service vsftpd restart

安裝完成,盡情使用吧

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

vsftpd 檔案佈局

檔案

檔案描述

/etc/vsftpd/vsftpd.conf

主配置檔案

/usr/sbin/vsftpd 

主程式

/etc/rc.d/init.d/vsftpd

啟動指令碼

/etc/pam.d/vsftpd

PAM認證檔案

/etc/vsftpd.ftpusers

禁止使用vsftpd的使用者列表檔案

/etc/vsftpd.user_list

禁止或允許使用vsftpd使用者列表檔案

/var/ftp

匿名使用者主目錄

/var/ftp/pub

匿名使用者下載目錄

/etc/logrotate.d/vsftpd.log

日誌檔案

15.2. 系統帳戶

1.建立Vsftpd服務的宿主使用者:

[[email protected]]#adduser -d /data guest -s /sbin/nologin

預設的Vsftpd的服務宿主使用者是root,但是這不符合安全性的需要。www.linuxidc.com這裡建立名字為vsftpd的使用者,用他來作為支援Vsftpd

建立Vsftpd虛擬宿主使用者:

[[email protected]]# useradd virtusers -s /sbin/nologin

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

15.3. vsftpd的配置

#anonymous_enable=YES

anonymous_enable=NO   設定不允許匿名訪問

local_enable=YES      設定本地使用者可以訪問。注意:如果該專案設定為NO那麼所有虛擬使用者將無法訪問。

write_enable=YES      設定可以進行寫操作。

local_umask=022       設定上傳後文件的許可權掩碼。

anon_upload_enable=NO 禁止匿名使用者上傳。

anon_mkdir_write_enable=NO 禁止匿名使用者建立目錄。

dirmessage_enable=YES 設定開啟目錄標語功能。

xferlog_enable=YES    設定開啟日誌記錄功能。

connect_from_port_20=YES設定埠20進行資料連線。

chown_uploads=NO       設定禁止上傳檔案更改宿主。

chroot_local_user=YES  設定登陸後.只可以訪問自己的屬主目錄.不可訪問上一層目錄檔案

xferlog_file=/var/log/vsftpd.log設定Vsftpd的服務日誌儲存路徑。注意,該檔案預設不存在。必須要手動touch出來,並且由於這裡更改了Vsftpd的服務宿主

使用者為手動建立的Vsftpd。必須注意給與該使用者對日誌的寫入許可權,否則服務將啟動失敗。

xferlog_std_format=YES 設定日誌使用標準的記錄格式

idle_session_timeout=600設定空閒連線超時時間,這裡使用預設。

data_connection_timeout=120設定單次最大連續傳輸時間,這裡使用預設

nopriv_user=vsftpd      設定支撐Vsftpd服務的宿主使用者為手動建立的Vsftpd使用者。注意,一旦做出更改宿主使用者後,必須注意一起與該服務相關的讀寫檔案的讀寫賦權問題

比如日誌檔案就必須給與該使用者寫入許可權等。

async_abor_enable=YES    設定支援非同步傳輸功能。

ascii_upload_enable=YES

ascii_download_enable=YES  設定支援ASCII模式的上傳和下載功能。

ftpd_banner=Welcometo blah FTP service ^_^ 設定Vsftpd的登陸標語。

chroot_list_enable=NO   禁止使用者登出自己的FTP主目錄。

ls_recurse_enable=NO   禁止使用者登陸FTP後使用"ls -R"的命令。該命令會對伺服器效能造成巨大開銷。如果該項被允許,那麼擋多使用者同時使用該命令時將會對該伺服器造成威脅。

listen=YES             設定該Vsftpd服務工作在StandAlone模式下。

pam_service_name=vsftpd 設定PAM服務下Vsftpd的驗證配置檔名。

userlist_enable=YES     設定userlist_file中的使用者將不得使用FTP

tcp_wrappers=YES        伺服器使用tcp_wrappers作為主機的訪問控制方式。

以下這些是關於Vsftpd虛擬使用者支援的重要配置專案。預設Vsftpd.conf中不包含這些設定專案,需要自己手動新增配置。

guest_enable=YES         設定啟用虛擬使用者功能。

guest_username=virtusers指定虛擬使用者的宿主使用者。

virtual_use_local_privs=YES設定虛擬使用者的許可權符合他們的宿主使用者。

user_config_dir=/etc/vsftpd/vconf 設定虛擬使用者個人Vsftp的配置檔案存放路徑。也就是說,這個被指定的目錄裡,將存放每個Vsftp虛擬使用者個性的配置檔案,

一個需要注意的地方就是這些配置檔名必須和虛擬使用者名稱相同。儲存退出。

max_clients=99     伺服器的最大併發數

max_per_ip=5       使用者最大執行緒數

anon_max_rate=1000000  設定本底賬號最大傳輸率為1Mbps

禁止某些IP段得主機匿名訪問伺服器

tcp_wrappers=YES  

編輯 /etc/hosts.allow

增加

vsftpd192.168.110.11DENY

檢視ftp日誌

xferlog_enable=YES 上傳和下載日誌檔案記錄  /var/log/vsftpd.log

xferlog_std_format=YES 傳輸日誌檔案將以標準xferlog的格式書寫 /var/log/xferlog

xferlog_file=/var/log/xferlog

dual_log_enable=YES

vsftpd_log_file=/var/log/vsftpd.log

通過本底資料檔案實現虛擬使用者訪問

安裝db4-utils

yum installdb4-utils

建立本地對映使用者,修改本底對映使用者目錄許可權

useradd -d /data/ftp/temp-s /sbin/nologin game

chmod o=rwx/data/ftp/temp

修改/etc/vsftpd/vsftpd.conf

guest_enable=YES

guest_username=zqgamexw

生成虛擬使用者檔案

/etc/vsftpd/vsftpuser.txt

test001   虛擬user

123456    虛擬passwd

生成虛擬使用者資料檔案

db_load -T -t hash-f /etc/vsftpd/vsftpuser.txt /etc/vsftpd/vsftpuser.db

修改生成的使用者資料檔案許可權

 chmod 600/etc/vsftpd/vsftpuser.db

修改PAM認證檔案 /etc/pam.d/vsftpd登出原有內容後新增

auth       required     /lib/security/pam_userdb.sodb=/etc/vsftpd/vsftpuser

account    required     /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpuse

建立Vsftpd的日誌檔案,並更該屬主為Vsftpd的服務宿主使用者:

[[email protected]]#touch /var/log/vsftpd.log

[[email protected]]#chown vsftpd.vsftpd /var/log/vsftpd.log

建立虛擬使用者配置檔案存放路徑:

[[email protected]]#mkdir /etc/vsftpd/vconf/

製作虛擬使用者資料庫檔案

先建立虛擬使用者名稱單檔案:

[[email protected]]#touch /etc/vsftpd/virtusers

建立了一個虛擬使用者名稱單檔案,這個檔案就是來記錄vsftpd虛擬使用者的使用者名稱和口令的資料檔案,這裡給它命名為virtusers。為了避免檔案的混亂,我把這個名單檔案就放置在/etc/vsftpd/下。

編輯虛擬使用者名稱單檔案:

[[email protected]]#vi /etc/vsftpd/virtusers

----------------------------

ftp001

123456

ftp002

123456

ftp003

123456

----------------------------

編輯這個虛擬使用者名稱單檔案,在其中加入使用者的使用者名稱和口令資訊。格式很簡單:一行使用者名稱,一行口令3.生成虛擬使用者資料檔案:

[[email protected]]#db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db

4.察看生成的虛擬使用者資料檔案

[[email protected]]#ll /etc/vsftpd/virtusers.db

-rw-r--r-- 1 rootroot 12288 Sep 16 03:51 /etc/vsftpd/virtusers.db

需要特別注意的是,以後再要新增虛擬使用者的時候,只需要按照一行使用者名稱,一行口令的格式將新使用者名稱和口令新增進虛擬使用者名稱單檔案。但是光這樣做還不夠,不會生效的哦!還要再執行一遍“ db_load -T -thash -f 虛擬使用者名稱單檔案虛擬使用者資料庫檔案.db ”的命令使其生效才可以!

設定PAM驗證檔案,並指定虛擬使用者資料庫檔案進行讀取

1.察看原來的VsftpPAM驗證配置檔案:

[[email protected]]#cat /etc/pam.d/vsftpd

----------------------------------------------------------------

#%PAM-1.0

session   optional     pam_keyinit.so    force revoke

auth      required     pam_listfile.so item=user sense=denyfile=/etc/vsftpd/ftpusers onerr=succeed

auth      required     pam_shells.so

auth      include      system-auth

account   include      system-auth

session   include      system-auth

session   required     pam_loginuid.so

----------------------------------------------------------------

2.在編輯前做好備份:

[[email protected]]#cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.backup

3.編輯VsftpdPAM驗證配置檔案

[[email protected]]#vi /etc/pam.d/vsftpd

----------------------------------------------------------------

#%PAM-1.0

auth   required     /lib/security/pam_userdb.so     db=/etc/vsftpd/virtusers

accountrequired     /lib/security/pam_userdb.so     db=/etc/vsftpd/virtusers

以上兩條是手動新增的,上面的全部加#註釋了.內容是對虛擬使用者的安全和帳戶許可權進行驗證。

!!!!!!!這裡有個要注意說明的:如果系統是64位系統在這裡的所有lib後面要加入64!!!!!!

!!!!!!!如下這樣才可以:

#%PAM-1.0

auth   required     /lib64/security/pam_userdb.so     db=/etc/vsftpd/virtusers

accountrequired     /lib64/security/pam_userdb.so     db=/etc/vsftpd/virtusers

15.4. 虛擬使用者的配置

1.規劃好虛擬使用者的主路徑:

[[email protected]]#mkdir /opt/vsftp/

2.建立測試使用者的FTP使用者目錄:

[[email protected]]#mkdir /opt/vsftp/ftp001 /opt/vsftp/ftp002 /opt/vsftp/ftp003

3.建立虛擬使用者配置檔案模版:

[[email protected]]#cp /etc/vsftpd/vsftpd.conf.backup /etc/vsftpd/vconf/vconf.tMP4.定製虛擬使用者模版配置檔案:

[[email protected]]#vi /etc/vsftpd/vconf/vconf.tmp

--------------------------------

local_root=/opt/vsftp/virtuser

virtuser 這個就是以後要指定虛擬的具體主路徑。

anonymous_enable=NO

設定不允許匿名使用者訪問。

write_enable=YES

設定允許寫操作。

local_umask=022

設定上傳檔案許可權掩碼。

anon_upload_enable=NO

設定不允許匿名使用者上傳。

anon_mkdir_write_enable=NO

設定不允許匿名使用者建立目錄。

idle_session_timeout=600  (根據使用者要求.可選)

設定空閒連線超時時間。

data_connection_timeout=120

設定單次連續傳輸最大時間。

max_clients=10  (根據使用者要求.可選)

設定併發客戶端訪問個數。

max_per_ip=5    (根據使用者要求.可選)

設定單個客戶端的最大執行緒數,這個配置主要來照顧Flashget、迅雷等多執行緒下載軟體。

local_max_rate=50000  (根據使用者要求.可選)

設定該使用者的最大傳輸速率,單位b/s

pam_service_name=vsftpd

chroot_local_user=YES

--------------------------------

這裡將原vsftpd.conf配置檔案經過簡化後儲存作為虛擬使用者配置檔案的模版。這裡將並不需要指定太多的配置內容,主要的

框架和限制交由Vsftpd的主配置檔案vsftpd.conf來定義,即虛擬使用者配置檔案當中沒有提到的配置專案將參考主配置檔案中

的設定。而在這裡作為虛擬使用者的配置檔案模版只需要留一些和使用者流量控制,訪問方式控制的配置專案就可以了。這裡的關

鍵項是local_root這個配置,用來指定這個虛擬使用者的FTP主路徑。5.更改虛擬使用者的主目錄的屬主為虛擬宿主使用者:

[[email protected]]#chown -R virtusers.virtusers /opt/vsftp/

6.檢查許可權:

[[email protected]]#ll /opt/vsftp/

total 24

drwxr-xr-x 2overlord overlord 4096 Sep 16 05:14 ftp001

drwxr-xr-x 2overlord overlord 4096 Sep 16 05:00 ftp002

drwxr-xr-x 2overlord overlord 4096 Sep 16 05:00 ftp003

.給測試使用者定製:

1.從虛擬使用者模版配置檔案複製:

[[email protected]]#cp /etc/vsftpd/vconf/vconf.tmp /etc/vsftpd/vconf/ftp001

2.針對具體使用者進行定製:

[[email protected]]# vi/etc/vsftpd/vconf/ftp001

---------------------------------

local_root=/opt/vsftp/ftp001            (FTP使用者ftp001的登陸目錄檔案)

anonymous_enable=NO

write_enable=YES

local_umask=022

anon_upload_enable=NO

anon_mkdir_write_enable=NO

idle_session_timeout=300

data_connection_timeout=90

max_clients=1

max_per_ip=1

local_max_rate=25000

pam_service_name=vsftpd

chroot_local_user=YES

15.5. CentOS 修改 vsftpd 預設埠21

vsftpd啟動後,預設的ftp埠是21,現在我想把ftp埠改成 801 ,修改後能保證

使用者上傳下載不受影響

1.編輯 /etc/vsftpd/vsftpd.conf檔案,在該配置檔案中新增此行:listen_port=801

2.編輯 /etc/services檔案,將其中的 ftp 21/tcp改為

ftp 801/tcp

ftp 21/udp

改為 ftp801/udp

3.執行 /etc/init.d/vsftpd restart重新啟動 vsftpd服務。啟動完成後可以使用 netstat -ntpl | grep vsftpd命令可以檢視到系統現監聽的 vsftpd的埠為 801

4.使用 lftp 192.168.0.1:801(192.168.0.1 vsftpd 伺服器的地址 ),這樣既可以訪問到 ftp伺服器了。

---------------------------------

15.6. vsftp 設定修改使用者預設目錄的方法

修改vsftp預設使用者訪問目錄在配置檔案目錄 /etc/vsftpd/下的 vsftpd.conf檔案中。

找到並開啟/etc/vsftpd/vsftpd.conf, 設定新增以下程式碼:

1.   local_root=/home/xxf/www.lao8.org 

那麼ftp使用者訪問的預設目錄就是(www.lao8.org)這個目錄了。

ftp使用者訪問的預設目錄設定好了, 還可以單獨設定這個目錄的訪問許可權如(777,755等許可權), 方法請參考文章: vsftp 設定ftp使用者訪問目錄許可權的命令

注意設定好了需要重啟vsftp伺服器:

1.   service vsftpd restart

15.7. 啟動服務

1. 開啟vsftpd服務

[[email protected]]#service vsftpd start

Starting vsftpd forvsftpd:                               [ OK ]

2.預設開啟vsftp服務

1

[[email protected] var]# chkconfig vsftpd on

3.重啟vsftp服務

[[email protected] var]# service vsftpd restart

4.centos 解除安裝vsftpd方法

如果伺服器上安裝了vsftpd,配置出錯需要解除安裝vsftpd

1

[[email protected] ~]# rpm -aq vsftpd

vsftpd-2.0.5-16.el5_5.1 #此處是查詢vsftpd的返回結果

1

[[email protected] ~]# rpm -e vsftpd-2.0.5-16.el5_5.1

#rpm -e查詢結果進行刪除就ok了。

warning: /etc/vsftpd/user_listsaved as /etc/vsftpd/user_list.rpmsave

warning: /etc/vsftpd/ftpuserssaved as /etc/vsftpd/ftpusers.rpmsave #刪除時將備份vsftp的使用者列表檔案。

看下是否解除安裝了vsftpd,進行stopstart操作:

1

[[email protected] ~]# /sbin/service vsftpd stop

vsftpd: unrecognized service #找不到vsftpd

1

[[email protected] ~]# /sbin/service vsftpd start

vsftpd: unrecognized service #找不到vsftpd記住,在解除安裝vsftpd之前,先停止vsftpd

15.8. 測試

1.在虛擬使用者目錄中預先放入檔案:

[[email protected]]#touch /opt/vsftp/ftp001/test.txt

2.從其他機器作為客戶端登陸FTP

可以IEFTP客戶端軟直接訪問

ie裡輸入 ftp://127.0.0.1 (伺服器IP)

彈出對話方塊後.輸入FTP使用者名稱和密碼

---------------------------------------------

注意:

/etc/vsftpd/vsftpd.conf中,local_enable的選項必須開啟為Yes,使得虛擬使用者的訪問成為可能,否則會出現以下現象:

----------------------------------

[[email protected]]#ftp

ftp> open192.168.1.22

Connected to192.168.1.22.

500 OOPS: vsftpd:both local and anonymous access disabled!

----------------------------------

原因:虛擬使用者再豐富,其實也是基於它們的宿主使用者virtusers的,如果virtusers這個虛擬使用者的宿主被限制住了,那麼虛擬使用者也將受到限制。

補充:

1.要檢視伺服器自帶的防火牆有無擋住FTP 21導致不能訪問

2.檢視 SELinux禁用沒有.要禁用

3.500 OOPS:錯誤有可能是你的vsftpd.con配置檔案中有不能被識別的命令,還有一種可能是命令的YES NO 後面有空格。

4.要仔細檢視各個用到的資料夾許可權,及使用者屬主許可權等

1 如何新加FTP使用者

開啟密碼檔案里加入(一行是使用者.一是密碼.依次類推)

#vi/etc/vsftpd/virtusers

加入使用者後儲存退出

#db_load -T -t hash-f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db   (然後生成新的虛擬用資料檔案)

#cp/etc/vsftpd/vconf/vconf.tmpd              (新建d使用者,用虛擬使用者模板vconf.tmp檔案生成d虛擬使用者檔案)

#vi/etc/vsftpd/vconf/d                        (開啟D虛擬使用者檔案.在第一行最後加入該使用者對應的FTP目錄)

#mkdir/opt/vsftp/WWW                         (新建WWW目錄為d FTP使用者登陸目錄)

#service vsftpd restart

-------------------------------------------------------

2 如何修改FTP使用者登陸密碼

開啟密碼檔案里加入(第一行是使用者.第二是密碼.依次類推,只要改對應使用者下面的密碼即可)

#vi/etc/vsftpd/virtusers   

#db_load -T -t hash-f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db   (然後生成新的虛擬用資料檔案)

#service vsftpd restart