centos5.5vsftpd安裝總結

科技小先鋒發表於2017-11-08

vsftpd安裝總結

[root@zh888 zhh]# yum -y install vsftpd//首先安裝vsftpd軟體包

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

Setting up Install Process

Resolving Dependencies

–> Running transaction check

—> Package vsftpd.i386 0:2.0.5-16.el5_6.1 set to be updated

–> Finished Dependency Resolution

Dependencies Resolved

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

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

 Package                        Arch                         Version                                    Repository           

           Size

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

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

Installing:

 vsftpd                         i386                         2.0.5-16.el5_6.1                           updates              

          141 k

Transaction Summary

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

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

Install       1 Package(s)

Upgrade       0 Package(s)

Total download size: 141 k

Downloading Packages:

vsftpd-2.0.5-16.el5_6.1.i386.rpm                                                                                       | 141

kB     00:02     

Running rpm_check_debug

Running Transaction Test

Finished Transaction Test

Transaction Test Succeeded

Running Transaction

  Installing     : vsftpd                                                                                                    

            1/1

Installed:

  vsftpd.i386 0:2.0.5-16.el5_6.1                                                                                             

               

Complete!

2. 開機啟動vsftpd伺服器

[root@zh888 zhh]# chkconfig vsftpd on

[root@zh888 zhh]# chkconfig –list vsftpd

vsftpd          0:off   1:off   2:on    3:on    4:on    5:on    6:off

[root@zh888 zhh]#



3.啟動vsftpd服務

[root@zh888 zhh]# /etc/rc.d/init.d/vsftpd start

Starting vsftpd for vsftpd:                                [  OK  ]



4.測試vsftpd伺服器

[root@zh888 zhh]# telnet ftp.zh888.com 21

Trying 192.168.10.134…

Connected to ftp.zh888.com (192.168.10.134).

Escape character is `^]`.

220 (vsFTPd 2.0.5)

5.客戶端windowxp測試一下如圖所示:



6.使用者管理 /etc/vsftpd/ftpusers

這個檔案是vsftpd伺服器中用來管理登陸賬號的配置檔案,但是它最特別的一點是,它用於不允許登陸賬號。

# Users that are not allowed to login via ftp

root

bin

daemon

adm

lp

sync

shutdown

halt

mail

news

uucp

operator

games

nobody

以上內容不難理解無法用root賬號進行登陸ftp

7.最重要的的配置檔案/etc/vsftpd.conf檔案下面是預設的檔案自己可以整理#表示不執行的部分如果要執行去除#即可。下面有許多布林值選

[root@zh888 ~]# grep -v “#” /etc/vsftpd/vsftpd.conf 

anonymous_enable=YES

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=YES

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

8.新增ftp使用者

useradd -g ftp -d /home/samba/software/ -s /sbin/nologin -M user//表示把user加入ftp組中,然後指定/home/samba/software目錄,-M

表示不建立目錄, -s /sbin/nologin不能登陸,只讓ftp登陸ftp伺服器。

passwd user

如圖所示:

 

一下為每個欄位的詳解說明:

接受匿名使用者 

anonymous_enable=YES

#匿名使用者login時不詢問口令 

no_anon_password=YES

 

#匿名使用者主目錄 

anon_root=(none)

#接受本地使用者 

local_enable=YES

#本地使用者主目錄 

local_root=(none)

#如果匿名使用者需要密碼,那麼使用banned_email_file裡面的電子郵件地址的使用者不能登入 

deny_email_enable=YES

#僅在沒有pam驗證版本時有用,是否檢查使用者有一個有效的shell來登入 

check_shell=YES

#若啟用此選項,userlist_deny選項才被啟動 

userlist_enable=YES

#若為YES,則userlist_file中的使用者將不能登入,為NO則只有userlist_file的使用者可以登入 

userlist_deny=NO

#如果和chroot_local_user一起開啟,那麼使用者鎖定的目錄來自/etc/passwd每個使用者指定的目錄(這個不是很清楚,很哪位熟悉的指點一下) 

passwd_chroot_enable=NO

#定義匿名登入的使用者名稱。預設值為ftp。 

ftp_username=FTP

#################使用者許可權控制###############

#可以上傳(全域性控制). 

write_enable=YES

#本地使用者上傳檔案的umask 

local_umask=022

#上傳檔案的許可權配合umask使用 

#file_open_mode=0666

#匿名使用者可以上傳 

anon_upload_enable=NO

#匿名使用者可以建目錄 

anon_mkdir_write_enable=NO

 

匿名使用者其它的寫權利(更改許可權?) 

anon_other_write_enable=NO

如果設為YES,匿名登入者會被允許下載可閱讀的檔案。預設值為YES。 

anon_world_readable_only=YES

#如果開啟,那麼所有非匿名登陸的使用者名稱都會被切換成guest_username指定的使用者名稱 

#guest_enable=NO

所有匿名上傳的檔案的所屬使用者將會被更改成chown_username 

chown_uploads=YES

匿名上傳檔案所屬使用者名稱 

chown_username=lightwiter

#如果啟動這項功能,則所有列在chroot_list_file之中的使用者不能更改根目錄 

chroot_list_enable=YES

#允許使用”async ABOR”命令,一般不用,容易出問題 

async_abor_enable=YES

管控是否可用ASCII 模式上傳。預設值為NO。 

ascii_upload_enable=YES

#管控是否可用ASCII 模式下載。預設值為NO。 

ascii_download_enable=YES

#這個選項必須指定一個空的資料夾且任何登入者都不能有寫入的許可權,當vsftpd 不需要file system 的許可權時,就會將使用者限制在此資料

夾中。預設值為/usr/share/empty 

secure_chroot_dir=/usr/share/empty

###################超時設定##################

#空閒連線超時 

idle_session_timeout=600

#資料傳輸超時 

data_connection_timeout=120

#PAVS請求超時 

ACCEPT_TIMEOUT=60

#PROT模式連線超時 

connect_timeout=60

################伺服器功能選項###############

#開啟日記功能 

xferlog_enable=YES

#使用標準格式 

xferlog_std_format=YES

#當xferlog_std_format關閉且本選項開啟時,記錄所有ftp請求和回覆,當除錯比較有用. 

#log_ftp_protocol=NO

#允許使用pasv模式 

pasv_enable=YES

#關閉安全檢查,小心呀. 

#pasv_promiscuous+NO

#允許使用port模式 

#port_enable=YES

#關閉安全檢查 

#prot_promiscuous

#開啟tcp_wrappers支援 

tcp_wrappers=YES

#定義PAM 所使用的名稱,預設為vsftpd。 

pam_service_name=vsftpd

#當伺服器執行於最底層時使用的使用者名稱 

nopriv_user=nobody

#使vsftpd在pasv命令回覆時跳轉到指定的IP地址.(伺服器聯接跳轉?) 

pasv_address=(none)

#################伺服器效能選項##############

 

#是否能使用ls -R命令以防止浪費大量的伺服器資源 

#ls_recurse_enable=YES

#是否使用單程式模式 

#one_process_model

#繫結到listen_port指定的埠,既然都繫結了也就是每時都開著的,就是那個什麼standalone模式 

listen=YES

#當使用者登入後使用ls -al 之類的指令查詢該檔案的管理權時,預設會出現擁有者的UID,而不是該檔案擁有者的名稱。若是希望出現擁有者

的名稱,則將此功能開啟。 

text_userdb_names=NO

#顯示目錄清單時是用本地時間還是GMT時間,可以通過mdtm命令來達到一樣的效果 

use_localtime=NO

#測試平臺優化 

#use_sendfile=YES

################資訊類設定################

#login時顯示歡迎資訊.如果設定了banner_file則此設定無效 

ftpd_banner=歡迎來到湖南三辰Fake-Ta FTP 網站.

#允許為目錄配置顯示資訊,顯示每個目錄下面的message_file檔案的內容 

dirmessage_enable=YES

#顯示會話狀態資訊,關! 

#setproctitle_enable=YES

############## 檔案定義 ##################

#定義不能更改使用者主目錄的檔案 

chroot_list_file=/etc/vsftpd/vsftpd.chroot_list

#定義限制/允許使用者登入的檔案 

userlist_file=/etc/vsftpd/vsftpd.user_list

#定義登入資訊檔案的位置 

banner_file=/etc/vsftpd/banner

#禁止使用的匿名使用者登陸時作為密碼的電子郵件地址 

banned_email_file=/etc/vsftpd.banned_emails

#日誌檔案位置 

xferlog_file=/var/log/vsftpd.log

#目錄資訊檔案 

message_file=.message

############## 目錄定義 #################

#定義使用者配置檔案的目錄 

user_config_dir=/etc/vsftpd/userconf

#定義本地使用者登陸的根目錄,注意定義根目錄可以是相對路徑也可以是絕對路徑.相對路徑是針對使用者家目錄來說的. 

local_root=webdisk #此項設定每個使用者登陸後其根目錄為/home/username/webdisk

#匿名使用者登陸後的根目錄 

anon_root=/var/ftp

#############使用者連線選項#################

#可接受的最大client數目 

max_clients=100

#每個ip的最大client數目 

max_per_ip=5

#使用標準的20埠來連線ftp 

connect_from_port_20=YES

#繫結到某個IP,其它IP不能訪問 

listen_address=192.168.0.2

#繫結到某個埠 

#listen_port=2121

#資料傳輸埠 

#ftp_data_port=2020

#pasv連線模式時可以使用port 範圍的上界,0 表示任意。預設值為0。 

pasv_max_port=0

#pasv連線模式時可以使用port 範圍的下界,0 表示任意。預設值為0。 

pasv_min_port=0

##############資料傳輸選項#################

#匿名使用者的傳輸比率(b/s) 

anon_max_rate=51200

#本地使用者的傳輸比率(b/s) 

local_max_rate=5120000

遇到的問題:

1.:“500 OOPS: vsftpd: cannot locate user specified in `ftp_username`:ftp”

ftp_username=xxx(使用者)

以下命令可以用來重啟vsftpd服務

service vsftpd restart問題解決了!

補充幾點知識:

語  法:useradd [-mMnr][-c <備註>][-d <登入目錄>][-e <有效期限>][-f <緩衝天數>][-g <群組>][-G <群組>][-s ][-u ][使用者帳號]

或 useradd -D [-b][-e <有效期限>][-f <緩衝天數>][-g <群組>][-G <群組>][-s ]

  補充說明:useradd可用來建立使用者帳號。帳號建好之後,再用passwd設定帳號的密碼.而可用userdel刪除帳號。使用useradd指令所建立

的帳號,實際上是儲存在/etc/passwd文字檔案中。

  參  數:

-c<備註>  加上備註文字。備註文字會儲存在passwd的備註欄位中。 

-d<登入目錄>  指定使用者登入時的啟始目錄。

-D  變更預設值.

-e<有效期限>  指定帳號的有效期限。

-f<緩衝天數>  指定在密碼過期後多少天即關閉該帳號。

-g<群組>  指定使用者所屬的群組。

-G<群組>  指定使用者所屬的附加群組。

-m  自動建立使用者的登入目錄。

-M  不要自動建立使用者的登入目錄。

-n  取消建立以使用者名稱稱為名的群組.

-r  建立系統帳號。

-s   指定使用者登入後所使用的shell。

-u  指定使用者ID。

1當時我在伺服器上用命令ftp時,出現了以下的提示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伺服器了,對不對?” 

2:防火牆的開啟相應的埠21,20 

3:因為我是adsl雙網路卡上網的形式,所以還要載入ip_conntrack_ftp這個模組/這個不要忘了.



3、新增訪問使用者 useradd -g ftp -d /var/ftp/fUser -s /sbin/nologin fUser

-g 指定組

-d 指定訪問的資料夾

-s 禁止登陸系統

4、設定密碼 passwd fUser

5、登陸測試ftp://ip/ ,右鍵登陸



在Linux 系統中,所有的使用者和組像一個國家。如果國家要繁榮昌盛的話,需要治理得當,需要有主席或者總統,以及地方官員和老百姓組成

。在linux 中如果你對安全需求比較苛刻,完全可以限制使用者的各種行為,不同使用者的許可權是不同的

在Linux 系統中,所有的使用者和組像一個國家。如果國家要繁榮昌盛的話,需要治理得當,需要有主席或者總統,以及地方官員和老百姓組成

。在linux 中如果你對安全需求比較苛刻,完全可以限制使用者的各種行為,不同使用者的許可權是不同的。    

    在linux中系統中,它並不認識帳號名稱。它認識的是我們的帳號ID,帳號ID儲存在/etc/passwd檔案中。我們在登入linux主機時,在輸入

完帳號和密碼時,linux會先查詢/etc/passwd檔案中是否有這個帳號,如果沒有則跳出,如果有的話,他會讀取該帳號的user ID和group ID同

時該帳號的根目錄和shell也讀了出來。然後在去核對密碼錶,在/etc/shadow中找出我們剛剛輸入的帳號和userID,核對我們輸入密碼是否正確

。一切正確我們可以登入到當前使用者shell。那麼,我們首先了解一下使用者帳號檔案。

    使用者管理一般需要知道      /etc/passwd  /etc/shadow  /etc/group 

    add by warden2010 20100104

    1./etc/passwd我們使用more檢視一下這個檔案

    我們首先看第一行root這一行,一共有七項,每一項使用:分開,他們代表的意思如下:

    帳號名稱:帳號名稱由於對應使用者ID,這個是系統預設使用者root超級管理員,在同一個系統帳號名稱是唯一的,長度根據不同的linux系統

而定,一般是8位。

    密碼:由於系統中還有一個/etc/shadow檔案用於存放加密後的口令,所以在這裡這一項是“x”來表示,如果使用者沒有設定口令,則該項

為空。

    使用者ID:這個是系統內部用於來識別不同的使用者的,不同的使用者識別碼不同,其中使用者ID有以下幾種:

    0代表系統管理員,如果你想建立一個系統管理員的話,可以建立一個普通帳戶,然後將該賬戶的使用者ID改為0即可。

    1-500系統預留的ID,500以上是普通使用者使用。

    組ID:其實這個和使用者ID差不多,用來規範群組,他與/etc/group有關。

    描述資訊:這個欄位幾乎沒有什麼作用,只是用來解釋這個帳號的意義。

    使用者根目錄:就是使用者登入系統的起始目錄,使用者登入系統後將首先進入該目錄。root使用者預設的是/root,普通使用者的是/home/使用者名稱。

    使用者登入shell:就是使用者登入系統時使用的shell,關於shell我們會在以後專門的研究一下。

    2./etc/shadow

    在早期的unix作業系統中,使用者的帳號資訊和口令資訊都儲存在passwd檔案中,儘管系統已經對口令進行了加密,並且以密文的方式儲存

在passwd檔案中,但是由於passwd檔案對於系統中的所有使用者是可讀的,口令比較容易破解,存在較大的安全隱患。現在使用“shadow”檔案

儲存密文的使用者口令,使用passwd檔案儲存使用者帳號其它資訊。“shadow”檔案只有管理員使用者才可以讀取其中的內容。由於這個檔案可能被

破解,所以一定不要將該檔案內容洩露給他人,保證系統安全。

    同樣,我們還是分析第一行,一共有九項,分別說明一下:

    帳戶名稱:和passwd對應,和passwd的意思相同。

    密碼:這才是真正的密碼,並且已經加密過了,只能看到一些特殊符號。需要注意的是這些密碼很難破解,但是不等於不能。還有密碼欄

的第一個字元為“*”表示這個使用者不用來登入,如果那個使用者不想讓他登入了,可以在他前面加個星。

    上次改動密碼的日期:這段記錄了改動密碼的最後日期,為什麼是13798呢?這是因為linux計算日期的方法是以1970年1月1日作為1,1971

年1月1日就是366,依次類推到我修改密碼的日期表示為13798了。

    密碼不可被改動的天數:由於害怕密碼被人盜取而危害到整個系統的安全,所以安排了這個欄位,你必須在這個時間內重新修改密碼,否

則這個帳號將暫時失效。上面的99999,表示密碼不需要重新輸入,最好設定一段時間修改密碼。確保系統安全。

    密碼變更期期限快到前的警告期:當帳號的密碼失效期限快到時,系統依據這個欄位的設定發出警告,提醒使用者“再過n天您的密碼將過期

,請儘快重新設定密碼。預設的是七天。

    帳號失效期:如果使用者過了警告期沒有重新輸入密碼,使得密碼失效,而該使用者在這個欄位限定的時間內又沒有向管理員反映,讓帳號重

新啟用,那麼這個帳號將暫時失效。

    帳號取消日期:這個日期跟第三個欄位一樣,都是使用1970年以來的日期設定方法。這個欄位表示:這個帳號在此欄位規定的日期之後將

無法再使用。這個欄位通常用於收費服務系統中,可以規定一個日期讓該帳號不能再使用。

    保留:最後一個欄位是保留的,看以後有沒有新功能加入。

    3. /etc/group檢視一下這個檔案

    我們還是分析第一行,一共有四項,依次為:

    群組名稱:就是群組的名稱了。

    群組密碼:通常不需設定,因為我們很少使用群組登入。不過這個密碼也被記錄在/etc/gshadow中了。

    群組ID:也就是組ID了。

    支援帳號的名稱:這個群組的所有帳號。如果你想讓使用者qiuri也屬於root這個群組,就在第一行最後加上“,qiuri”注意新增的時候沒

有空格。

    4. adduser新增使用者

    如果沒有特殊的要求,通常我們使用adduser 使用者名稱稱直接建立使用者帳號。例如我們建立qiuri帳戶:

    由於一般新建立的帳號都會在剛才我們說的三個檔案的最後一行新增一行內容,我們驗證一下:

    我們使用這條命令是通過/etc/login.defs和/etc/default/useradd這兩個預設帳號設定檔案來實現建立使用者的。

    這個檔案中我們有必要了解一下,SKEL這個選項,使用者的根目錄內容是從/etc/skel這個目錄下複製過去的。在手動新增使用者的時候有用。

檢視一下這個目錄下的內容:

    這條命令還有好多的引數舉例幾個,供大家參考一下:

    adduser [-u uid][-g group][-d home][-s shell]

    -u:直接給出userID -g:直接給出GID

    -d:直接將根目錄建立在已存在目錄 -s:定義shell

    5.passwd設定使用者密碼

    預設的情況下,在新增完使用者後並沒有設定使用者的密碼,因此建立的使用者帳號即使存在也不能登陸系統。需要使用passwd命令對使用者帳號

設定密碼才可以用於登陸系統。這條命令分為管理員給使用者修改密碼和使用者自己登入系統自己修改密碼。

    管理員root給使用者修改密碼,例如:建立使用者qiuri,然後設定密碼

    管理員給使用者設定密碼以命令passwd [使用者名稱]來設定密碼,在輸入密碼的過程中為了避免輸入錯誤,將連續輸入兩次。如果兩次輸入的密

碼相同,表示輸入的密碼正確,同時將密碼以加密的方式儲存到了shadow檔案中。設定完以後我們可以使用使用者qiuri登入。qiuri使用者自己修

改一下密碼。

    . 增加一個新使用者 

    以下是操作一些具體的語法,可以通過man useradd 檢視幫助命令

    在Linux系統中,只有root使用者才能夠建立一個新使用者,如下的命令將新建一個登入名user1的使用者。 

    # useradd user1 

    但是,這個使用者還不能夠登入,因為還沒給它設定初始密碼,而沒有密碼的使用者是不能夠登入系統的。在預設情況下,將會在/home目錄下

新建一個與使用者名稱相同的使用者主目錄。如果需要另外指定使用者主目錄的話,那麼可以使用如下命令: 

    # useradd -d /home/xf user1 

    同時,該使用者登入時將獲得一個Shell程式:/bin/bash,而假如你不想讓這個使用者登入,也就可以指定該使用者的Shell程式為:/bin/false

,這樣該使用者即使登入,也不能夠執行Linux下的命令: 

    # useradd -s /bin/false user1 

    在Linux中,新增一個使用者的同時會建立一個新組,這個組與該使用者同名,而這個使用者就是該組的成員。如果你想讓新的使用者歸屬於一個已

經存在的組,則可以使用如下命令: 

    # useradd -g user user1 

    這樣該使用者就屬於user組的一員了。而如果只是想讓其再屬於一個組,那麼應該使用: 

    # useradd -G user user1 

    完成了這一操作後,你還應該使用passwd命令為其設定一個初始密碼。 

    

    2. 刪除一個使用者 

    刪除使用者,只需使用一個簡單的命令“userdel 使用者名稱”即可。不過最好將它留在系統上的檔案也刪除掉,你可以使用“userdel -r 使用者

名”來實現這一目的。 

    

    3. 修改使用者屬性 

    在前面我們看到了在新建一個使用者的時候如何指定它的使用者主目錄,如何指定它的Shell,如何設定它所屬的組…等等。在Linux中提供了

一個命令來實現: 

    usermod -g組名 -G 組名 -d 使用者主目錄 -s 使用者Shell 

    還有一種直接的方法,那就是修改/etc/passwd檔案,在這個檔案中每個使用者佔用一行,它的內容為: 

    使用者名稱:密碼:使用者ID:組ID:使用者全名:使用者主目錄:使用者Shell 

    不過值得注意的是,密碼這一項通常是用一個*號代替的,你是看不到的。 

    

    4. 增加一個組 

    還記得Linux的檔案可以為同組的人、非同組的人設定不同的訪問許可權嗎?我們可以根據自己的需要建立使用者組: 

    groupadd 組名 

    

    5. 刪除一個組 

    同樣的,我們有時會需要刪除一個組,它的命令就是groupdel 組名。 

    

    6. 修改組成員 

    如果我們需要將一個使用者加入一個組,只需編輯/etc/group檔案,將使用者名稱寫到組名的後面。例如將newuser使用者加入到softdevelop組,

只需找到softdevelop這一行: 

    softdevelop:x:506:user1,user2 

    然後在後面加上newuser,形成: 

    softdevelop:x:506:user1,user2,newuser 

    另外,在Red Hat Linux中還提供一個圖形化的使用者管理工具:userconf,通過它可以更直接地進行使用者管理。

本文轉自zh888 51CTO部落格,原文連結:http://blog.51cto.com/zh888/637397,如需轉載請自行聯絡原作者


相關文章