|
發表者 |
討論內容 |
冷日 (冷日) |
發表時間:2009/7/20 4:13 |
- Webmaster

- 註冊日: 2008/2/19
- 來自:
- 發表數: 15773
|
- [分享]VSFTP 參數大全
VSFTP 參數大全 3.2 VSFTP 安全與效能兼備的ftp 伺服器 3.2.1 VSFTP 概述 FTP,file transfer protocol,這是檔案傳輸的通訊傳輸協定,也是一般最常用來傳送檔案的方式。讀者在使用RedHat9 的時候,可能會感受到ftp server 有一些改變:第一,就是ftp server 只剩下vsftp,原有的wuftp 等都沒放入第二,就是vsftp 從XINETD 中獨立出來,並將設定檔從/etc/vsftpd.conf 之中移到/etc/vsftpd/vsftpd.conf。 為什麼做這樣的改變?可以想見的是vsftp 已有獨立運作的能力,不需要XINETD 來做更進一步的管控,並且類似sendmail、httpd、ssh、samba 等,將設定文件的放入/etc 下獨立的目錄。 FTP 分為兩類,一種為PORT FTP,也就是一般的FTP 另一類是PASVFTP,分述如下: PORT FTP 這是一般形式的FTP,首先會建立控制頻道,預設值是port 21,也就是跟port 21 建立連線電腦,並透過此連線電腦下達指令。第二,由FTP server 端會建立資料傳輸頻道,預設值為20,也就是跟port 20 建立連線電腦,並透過port 20 作資料的傳輸。 PASV FTP 跟PORT FTP 類似,首先會建立控制頻道,預設值是port 21,也就是跟port 21 建立連線電腦,並透過此連線電腦下達指令。第二,會由client 端做出資料傳輸的請求,包括資料傳輸port 的數字。 這兩者的差異為何?PORT FTP 當中的資料傳輸port 是由FTP server 指定,而PASV FTP 的資料傳輸port 是由FTP client 決定。通常我們使用PASV FTP,是在有防火牆的環境之下,透過client 與server 的溝通,決定資料傳輸的port。 3.2.2 範例 3.2.1. 直接啟動VSFTP 服務 這個範例是套用RedHat 的預設範例,直接啟動vsftp。 [root@relay vsftpd]# /sbin/service vsftpd start
Starting vsftpd for vsftpd: OK ] 3.2.2. 更換port 提供服務:將預設的port 21 更換為2121 為了安全,或是以port 來區隔不同的ftp 服務,我們可能會將ftp port 改為21 之外的port,那麼,可參考以下步驟。 Step1. 修改/etc/vsftpd/vsftpd.conf 新增底下一行 listen_port=2121 Step2. 重新啟動vsftpd [root@home vsftpd]# /sbin/service vsftpd restart Shutting down vsftpd: OK ] Starting vsftpd for vsftpd: OK ] 3.2.3. 特定使用者peter、john 不得變更目錄 使用者的預設目錄為/home/username,若是我們不希望使用者在ftp 時能夠 切換到上一層目錄/home,則可參考以下步驟。 Step1. 修改/etc/vsftpd/vsftpd.conf 將底下三行 #chroot_list_enable=YES # (default follows) #chroot_list_file=/etc/vsftpd.chroot_list 改為 chroot_list_enable=YES # (default follows) chroot_list_file=/etc/vsftpd/chroot_list Step2. 新增一個檔案: /etc/vsftpd/chroot_list 內容增加兩行: peter john Step3. 重新啟動vsftpd [root@home vsftpd]# /sbin/service vsftpd restart Shutting down vsftpd: OK ] Starting vsftpd for vsftpd: OK ] 若是peter 欲切換到根目錄以外的目錄,則會出現以下警告: ftp> cd /home
550 Failed to change directory. 3.2.4. 取消anonymous 登入 若是讀者的主機不希望使用者匿名登入,則可參考以下步驟。 Step1. 修改/etc/vsftpd/vsftpd.conf 將 anonymous_enable=YES 改為 anonymous_enable=NO Step2. 重新啟動vsftpd [root@home vsftpd]# /sbin/service vsftpd restart Shutting down vsftpd: OK ] Starting vsftpd for vsftpd: OK ] 3.2.5. 安排歡迎話語 若是我們希望使用者在登入時,能夠看到歡迎話語,可能包括對該主機的說明,或是目錄的介紹,可參考以下步驟。 首先確定在/etc/vsftpd/vsftpd.conf 當中是否有底下這一行 dirmessage_enable=YES RedHat9 的預設值是有上面這行的。 接著,在各目錄之中,新增名為.message 的檔案,再這邊假設有一個使用者test1,且此使用者的根目錄下有個目錄名為abc,那首先我們在/home/test1 之下新增.message,內容如下: Hello~ Welcome to the home directory This is for test only... 接著,在/home/test1/abc 的目錄下新增.message,內容如下: Welcome to abc's directory This is subdir... 那麼,當使用者test1 登入時,會看到以下訊息: 230- Hello~ Welcome to the home directory 230- 230- This is for test only... 230- 若是切換到abc 的目錄,則會出現以下訊息: 250- Welcome to abc's directory 250- 250- This is subdir ...
3.2.6. 對於每一個連線電腦,以獨立的process 來運作 一般啟動vsftp 時,我們只會看到一個名為vsftpd 的process 在運作,但若是讀者希望每一個連線電腦,都能以獨立的process 來呈現,則可執行以下步驟。 Step1. 修改/etc/vsftpd/vsftpd.conf 新增底下一行 setproctitle_enable=YES Step2. 重新啟動vsftpd [root@home vsftpd]# /sbin/service vsftpd restart Shutting down vsftpd: OK ] Starting vsftpd for vsftpd: OK ] 使用ps -ef 的指令,可以看告不同使用者連線電腦的情形,如下圖所顯示: [root@home vsftpd]# ps -ef|grep ftp root 2090 1 0 16:41 pts/0 00:00:00 vsftpd: LISTENER nobody 2120 2090 0 17:18 ? 00:00:00 vsftpd: 192.168.10.244: connected test1 2122 2120 0 17:18 ? 00:00:00 vsftpd: 192.168.10.244/test1: IDLE nobody 2124 2090 0 17:19 ? 00:00:00 vsftpd: 192.168.10.244: connected test2 2126 2124 0 17:19 ? 00:00:00 vsftpd: 192.168.10.244/test2: IDLE root 2129 1343 0 17:20 pts/0 00:00:00 grep ftp [root@home vsftpd]# 3.2.7. 限制傳輸檔案的速度: 本機的使用者最高速度為200KBytes/s,匿名登入者所能使用的最高速度為50KBytes/s Step1. 修改/etc/vsftpd/vsftpd.conf 新增底下兩行 anon_max_rate=50000
local_max_rate=200000 Step2. 重新啟動vsftpd [root@home vsftpd]# /sbin/service vsftpd restart Shutting down vsftpd: OK ] Starting vsftpd for vsftpd: OK ] 在這邊速度的服務機構為Bytes/s,其中anon_max_rate 所限制的是匿名登入的 使用者,而local_max_rate 所限制的是本機的使用者。VSFTPD 對於速度的限 制,範圍大概在80%到120%之間,也就是我們限制最高速度為100KBytes/s, 但實際的速度可能在80KBytes/s 到120KBytes/s 之間,當然,若是頻寬不足 時,數值會低於此限制。 3.2.8. 針對不同的使用者限制不同的速度: 假設test1 所能使用的最高速度為250KBytes/s,test2 所能使用的最高速度為500KBytes/s。 Step1. 修改/etc/vsftpd/vsftpd.conf 新增底下一行 user_config_dir=/etc/vsftpd/userconf Step2. 新增一個目錄:/etc/vsftpd/userconf mkdir /etc/vsftpd/userconf Step3. 在/etc/vsftpd/userconf 之下新增一個名為test1 的檔案 內容增加一行: local_max_rate=250000 Step4. 在/etc/vsftpd/userconf 之下新增一個名為test2 的檔案 內容增加一行: local_max_rate=500000 Step5. 重新啟動vsftpd [root@home vsftpd]# /sbin/service vsftpd restart Shutting down vsftpd: OK ] Starting vsftpd for vsftpd: OK ] 3.2.9-1. 建置一個防火牆下的ftp server,使用PORT FTP mode:
預設的ftp port:21 以及ftp data port:20 啟動VSFTPD 之後執行以下兩行指令,只允許port 21 以及port 20 開放,其它關閉。 iptables -A INPUT -p tcp -m multiport --dport 21,20 -j ACCEPT iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset 3.2.9-2. 建置一個防火牆下的ftp server,使用PORT FTP mode: ftp port:2121 以及ftp data port:2020 Step1. 執行以下兩行指令,只允許port 2121 以及port 2020 開放,其它關閉。 iptables -A INPUT -p tcp -m multiport --dport 2121,2020 -j ACCEPT iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset Step2. 修改/etc/vsftpd/vsftpd.conf 新增底下兩行 listen_port=2121 ftp_data_port=2020 Step3. 重新啟動vsftpd [root@home vsftpd]# /sbin/service vsftpd restart Shutting down vsftpd: OK ] Starting vsftpd for vsftpd: OK ] 在這邊要注意,8、9 兩個例子中,ftp client(如cuteftp)的連線電腦方式不能夠選項passive mode,否則無法建立資料的連線電腦。也就是讀者可以連上ftp server,但是執行ls、get 等等的指令時,便無法運作。 3.2.10. 建置一個防火牆下的ftp server,使用PASS FTP mode: ftp port:2121 以及ftp data port 從9981 到9986。 Step1. 執行以下兩行指令,只允許port 2121 以及port 9981-9990 開放,其它關閉。
iptables -A INPUT -p tcp -m multiport --dport 2121,9981,9982,9983,9984,9985,9986,9987,9988,9989,9990 -j ACCEPT iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset Step2. 修改/etc/vsftpd/vsftpd.conf 新增底下四行 listen_port=2121 pasv_enable=YES pasv_min_port=9981 pasv_max_port=9986 Step3. 重新啟動vsftpd [root@home vsftpd]# /sbin/service vsftpd restart Shutting down vsftpd: OK ] Starting vsftpd for vsftpd: OK ] 在這邊要注意,在10 這個例子中,ftp client(如cuteftp)的連線電腦方式必須選項passive mode,否則無法建立資料的連線電腦。也就是讀者可以連上ftp server,但是執行ls,get 等等的指令時,便無法運作。 3.2.11. 將vsftpd 與TCP_wrapper 結合 若是讀者希望直接在/etc/hosts.allow 之中定義允許或是拒絕的來源位址,可執行以下步驟。這是簡易的防火牆設定。 Step1. 確定/etc/vsftpd/vsftpd.conf 之中tcp_wrappers 的設定為YES,如下圖所 示: tcp_wrappers=YES 這是RedHat9 的預設值,基本上不需修改。 Step2. 重新啟動vsftpd [root@home vsftpd]# /sbin/service vsftpd restart Shutting down vsftpd: OK ] Starting vsftpd for vsftpd: OK ] Step3. 設定/etc/hosts.allow,譬如提供111.22.33.4 以及10.1.1.1 到10.1.1.254 連
線,則可做下圖之設定: vsftpd : 111.22.33.4 10.1.1. : allow ALL : ALL : DENY 3.2.12. 將vsftpd 並入XINETD 若是讀者希望將vsftpd 並入XINETD 之中,也就是7.x 版的預設設定,那 麼讀者可以執行以下步驟。 Step1. 修改/etc/vsftpd/vsftpd.conf 將 listen=YES 改為 listen=NO Step2. 新增一個檔案: /etc/xinetd.d/vsftpd 內容如下: service vsftpd { disable = no socket_type = stream wait = no user = root server = /usr/sbin/vsftpd port = 21 log_on_success += PID HOST DURATION log_on_failure += HOST } Step3. 重新啟動xinetd [root@home vsftpd]# /sbin/service xinetd restart Stopping xinetd: OK ] Starting xinetd: OK ] 3.2.3 設定檔說明 在範例中,有些省略的設定可以在這邊找到,譬如連線電腦的總數、同一個位址的連線電腦數、顯示檔案擁有者的名稱等等,希望讀者細讀後,可以做出最適合自己的設定。 格式 vsftpd.conf 的內容非常單純,每一行即為一項設定。若是空白行或是開頭為#的一行,將會被忽略。內容的格式只有一種,如下所顯示 option=value 要注意的是,等號兩邊不能加空白,不然是不正確的設定。 ===ascii 設定===================== ascii_download_enable 管控是否可用ASCII 模式下載。預設值為NO。 ascii_upload_enable 管控是否可用ASCII 模式上傳。預設值為NO。
===個別使用者設定=================== chroot_list_enable 如果啟動這項功能,則所有的本機使用者登入均可進到根目錄之外的資料夾,除了列 在/etc/vsftpd.chroot_list 之中的使用者之外。預設值為NO。 userlist_enable 用法:YES/NO 若是啟動此功能,則會讀取/etc/vsftpd.user_list 當中的使用者名稱。此項功能可以在詢問密碼前就出現失敗訊息,而不需要檢驗密碼的程序。預設值為關閉。 userlist_deny 用法:YES/NO 這個選項只有在userlist_enable 啟動時才會被檢驗。如果將這個選項設為YES,則在/etc/vsftpd.user_list 中的使用者將無法登入 若設為NO , 則只有在 /etc/vsftpd.user_list 中的使用者才能登入。而且此項功能可以在詢問密碼前就出現錯誤訊息,而不需要檢驗密碼的程序。 user_config_dir 定義個別使用者設定文件所在的目錄,例如定義user_config_dir=/etc/vsftpd/userconf,且主機上有使用者test1, test2,那我們可以在user_config_dir 的目錄新增檔案名為test1 以及test2。若是test1 登入,則會讀取user_config_dir 下的test1 這個檔案內的設定。預設值為無。 ===歡迎語設定===================== dirmessage_enable 如果啟動這個選項,使用者第一次進入一個目錄時,會檢查該目錄下是否有.message這個檔案,若是有,則會出現此檔案的內容,通常這個檔案會放置歡迎話語,或是對該目錄的說明。預設值為開啟。 banner_file 當使用者登入時,會顯示此設定所在的檔案內容,通常為歡迎話語或是說明。預設值為無。 ftpd_banner 這邊可定義歡迎話語的字串串,相較於banner_file 是檔案的形式,而ftpd_banner 是字串的格式。預設為無。 ===特殊安全設定==================== chroot_local_user
如果設定為YES,那麼所有的本機的使用者都可以切換到根目錄以外的資料夾。預設值為NO。 hide_ids 如果啟動這項功能,所有檔案的擁有者與群組都為ftp,也就是使用者登入使用ls -al之類的指令,所看到的檔案擁有者跟群組均為ftp。預設值為關閉。 ls_recurse_enable 若是啟動此功能,則允許登入者使用ls -R 這個指令。預設值為NO。 write_enable 用法:YES/NO 這個選項可以控制FTP 的指令是否允許更改file system,譬如STOR、DELE、 RNFR、RNTO、MKD、RMD、APPE 以及SITE。預設是關閉。 setproctitle_enable 用法:YES/NO 啟動這項功能,vsftpd 會將所有連線電腦的狀況已不同的process 呈現出來,換句話說,使用ps -ef 這類的指令就可以看到連線電腦的狀態。預設值為關閉。 tcp_wrappers 用法:YES/NO 如果啟動,則會將vsftpd 與tcp wrapper 結合,也就是可以在/etc/hosts.allow 與/etc/hosts.deny 中定義可連線電腦或是拒絕的來源位址。 pam_service_name 這邊定義PAM 所使用的名稱,預設為vsftpd。 secure_chroot_dir 這個選項必須指定一個空的資料夾且任何登入者都不能有寫入的權限,當vsftpd 不需要file system 的權限時,就會將使用者限制在此資料夾中。預設值為/usr/share/empty ===紀錄文件設定===================== xferlog_enable 用法:YES/NO 如果啟動,上傳與下載的信息將被完整紀錄在底下xferlog_file 所定義的檔案中。預設為開啟。 xferlog_file 這個選項可設定紀錄文件所在的位置,預設值為/var/log/vsftpd.log。 xferlog_std_format 如果啟動,則紀錄文件將會寫為xferlog 的標準格式,如同wu-ftpd 一般。預設值為關閉。
===逾時設定====================== accept_timeout 接受建立連線電腦的逾時設定,服務機構為秒。預設值為60。 connect_timeout 回應PORT 方式的資料連線電腦的逾時設定,服務機構為秒。預設值為60。 data_connection_timeout 建立資料連線電腦的逾時設定。預設值為300 秒。 idle_session_timeout 發呆的逾時設定,若是超出這時間沒有資料的傳送或是指令的輸入,則會強迫斷線,服務機構為秒。預設值為300。 ===速率限制====================== anon_max_rate 匿名登入所能使用的最大傳輸速度,服務機構為每秒多少bytes,0 表示不限速度。預設值為0。 local_max_rate 本機使用者所能使用的最大傳輸速度,服務機構為每秒多少bytes,0 表示不限速度。預設值為0。 ===新增檔案權限設定================== anon_umask 匿名登入者新增檔案時的umask 數值。預設值為077。 file_open_mode 上傳檔案的權限,與chmod 所使用的數值相同。預設值為0666。 local_umask 本機登入者新增檔案時的umask 數值。預設值為077。 ===port 設定====================== connect_from_port_20 用法:YES/NO 若設為YES,則強迫ftp-data 的資料傳送使用port 20。預設值為YES。 ftp_data_port 設定ftp 資料連線電腦所使用的port。預設值為20。 listen_port FTP server 所使用的port。預設值為21。 pasv_max_port 建立資料連線電腦所可以使用port 範圍的上界,0 表示任意。預設值為0。 pasv_min_port 建立資料連線電腦所可以使用port 範圍的下界,0 表示任意。預設值為0。 ===其它========================
anon_root 使用匿名登入時,所登入的目錄。預設值為無。 local_enable 用法:YES/NO 啟動此功能則允許本機使用者登入。預設值為YES。 local_root 本機使用者登入時,將被更換到定義的目錄下。預設值為無。 text_userdb_names 用法:YES/NO 當使用者登入後使用ls -al 之類的指令查詢該檔案的管理權時,預設會出現擁有者的UID,而不是該檔案擁有者的名稱。若是希望出現擁有者的名稱,則將此功能開啟。預設值為NO。 pasv_enable 若是設為NO,則不允許使用PASV 的模式建立資料的連線電腦。預設值為開啟。 ===更換檔案所有權=================== chown_uploads 用法:YES/NO 若是啟動,所有匿名上傳資料的擁有者將被更換為chown_username 當中所設定的使用者。這樣的選項對於安全及管理,是很有用的。預設值為NO。 chown_username 這裡可以定義當匿名登入者上傳檔案時,該檔案的擁有者將被置換的使用者名稱。預設值為root。 ===guest 設定===================== guest_enable 用法:YES/NO 若是啟動這項功能,所有的非匿名登入者都視為guest。預設值為關閉。 guest_username 這裡將定義guest 的使用者名稱。預設值為ftp。 ===anonymous 設定================== anonymous_enable 用法:YES/NO 管控使否允許匿名登入,YES 為允許匿名登入,NO 為不允許。預設值為YES。 no_anon_password 若是啟動這項功能,則使用匿名登入時,不會詢問密碼。預設值為NO。 anon_mkdir_write_enable 用法:YES/NO 如果設為YES,匿名登入者會被允許新增目錄,當然,匿名使用者必須要有對上層目錄的寫入權。預設值為NO。 anon_other_write_enable 用法:YES/NO
如果設為YES,匿名登入者會被允許更多於上傳與建立目錄之外的權限,譬如刪除或是更名。預設值為NO。 anon_upload_enable 用法:YES/NO 如果設為YES,匿名登入者會被允許上傳目錄的權限,當然,匿名使用者必須要有對上層目錄的寫入權。預設值為NO。 anon_world_readable_only 用法:YES/NO 如果設為YES,匿名登入者會被允許下載可閱讀的檔案。預設值為YES。 ftp_username 定義匿名登入的使用者名稱。預設值為ftp。 deny_email_enable 若是啟動這項功能,則必須提供一個檔案/etc/vsftpd.banner_emails,內容為email address。若是使用匿名登入,則會要求輸入email address,若輸入的email address 在此檔案內,則不允許連線電腦。預設值為NO。 ===Standalone 選項================== listen 用法:YES/NO 若是啟動,則vsftpd 將會以獨立運作的方式執行,若是vsftpd 獨立執行,如RedHat9的預設值,則必須啟動 若是vsftpd 包含在xinetd 之中,則必須關閉此功能,如RedHat8。在RedHat9 的預設值為YES。 listen_address 若是vsftpd 使用standalone 的模式,可使用這個參數定義使用哪個IP address 提供這項服務,若是主機上只有定義一個IP address,則此選項不需使用,若是有多個IP address,可定義在哪個IP address 上提供ftp 服務。若是不設定,則所有的IP address均會提供此服務。預設值為無。 max_clients 若是vsftpd 使用standalone 的模式,可使用這個參數定義最大的總連線電腦數。超過這個數目將會拒絕連線電腦,0 表示不限。預設值為0。 max_per_ip 若是vsftpd 使用standalone 的模式,可使用這個參數定義每個ip address 所可以連線電腦的數目。超過這個數目將會拒絕連線電腦,0 表示不限。預設值為0。
============================= 3.2.4 FTP 數字程式碼的意義 110 重新啟動標記回應。 120 服務在多久時間內ready。 125 資料鏈路埠開啟,準備傳送。 150 文件狀態正常,開啟資料連接連接埠。 200 指令執行成功。 202 指令執行失敗。 211 系統狀態或是系統求助回應。 212 目錄的狀態。 213 文件的狀態。 214 求助的訊息。 215 名稱系統類型。 220 新的連線電腦服務ready。 221 服務的控制連接埠關閉,可以註銷。 225 資料連結開啟,但無傳輸動作。 226 關閉資料連接連接埠,請求的文件操作成功。 227 進入passive mode。 230 使用者登入。 250 請求的文件操作完成。 257 顯示目前的路徑名稱。 331 用戶名稱正確,需要密碼。 332 登入時需要帳號信息。 350 請求的操作需要進一部的指令。 421 無法提供服務,關閉控制連結。 425 無法開啟資料鏈路。 426 關閉連線電腦,終止傳輸。 450 請求的操作未執行。 451 指令終止:有本機的錯誤。 452 未執行指令:磁牒空間不足。 500 格式錯誤,無法識別指令。 501 參數語法錯誤。 502 指令執行失敗。 503 指令順序錯誤。 504 指令所接的參數不正確。 530 未登入。 532 儲存文件需要賬戶登入。 550 未執行請求的操作。 551 請求的指令終止,類型未知。 552 請求的文件終止,儲存位溢出。 553 未執行請求的的指令,名稱不正確。
|
|
冷日 (冷日) |
發表時間:2010/9/20 15:07 |
- Webmaster

- 註冊日: 2008/2/19
- 來自:
- 發表數: 15773
|
- [轉貼]鳥哥對 vsftpd 裡面 chroot 的說明
- chroot 的使用
假設你的系統當中有許多帳號,但是 dmtsai 以及 bird1 這兩個帳號是開放給一般客戶的, 你不想讓這兩個帳號可以離開他的家目錄,這個時候就得使用 chroot 的設定了。設定的方式很簡單, 你先要修改 vsftpd.conf ,增加這幾個項目:
[root@linux ~]# vi /etc/vsftpd/vsftpd.conf
# 增加是否設定針對某些使用者來 chroot 的相關設定呦!
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
[root@linux ~]# /etc/init.d/vsftpd restart
然後建立要被 chroot 的使用者檔案:
[root@linux ~]# vi /etc/vsftpd.chroot_list
dmtsai
bird1
不要懷疑!這樣就能夠將這兩個使用者限制在家目錄內了,有夠簡單吧!
--------------------------------------------------------------------------------
更嚴格的 chroot 環境 上面提到的是預設實體用戶沒有 chroot 而特定人士被 chroot 的環境,那如果我想要的是: 所有使用者預設為 chroot ,但某些使用者可不受限制的環境呢? 那你就得要這樣做了:
[root@linux ~]# vi /etc/vsftpd/vsftpd.conf
# 預設所有實體用戶被 chroot 而開放某些人可完整存取 (不 chroot) 的情況
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
[root@linux ~]# /etc/init.d/vsftpd restart
由於多了 chroot_list_enable=YES 這個參數,因此寫入 /etc/vsftpd.chroot_list 內的使用者反而是被認為可以不受 chroot 的帳號!假設系統中的 nikky 這個使用者為被信任的,所以你要這樣:
[root@linux ~]# vi /etc/vsftpd.chroot_list
nikky
則未來所有新增的用戶都是預設被 chroot 的,除非該用戶被寫入 /etc/vsftpd.chroot_list 才能夠不會被 chroot 呢!這不是比較嚴格嗎?
原文出處:鳥哥的 Linux 私房菜 -- vsFTPd 檔案伺服器
|
|
|
冷日 (冷日) |
發表時間:2010/9/20 16:53 |
- Webmaster

- 註冊日: 2008/2/19
- 來自:
- 發表數: 15773
|
- [分享]vsftp 的 umask 意義!
- 相信平常大家懶惰,都是用預設 vsftp 設定對吧!?
但是某些特定的服務,就不能用 644 來運作了!
所以 vsftp 中,是有一個參數叫做『umask』可以設定低! 請看 /etc/vsftpd.conf
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=022
上述的預設值,會讓系統用戶上傳的檔案權限變成 644,新增目錄權限會是 755 (謎:還有一個 anon_umask 則是設定匿名用戶的權限
但為啥檔案是 644 呢?目錄又為何是 755 呢?
因為『umask=022』
說明: umask決定目錄和文件被建立時的到的初始權限 當 umask = 022 時 新建目錄 權限是 755 文件的 權限是 644
測試: 在 linux console 用 umask 命令查看或設定我們系統預設的 umask
你可以改變一下系統的 umask 然後創建目錄或是文件,看一下新目錄、新文件的權限
還有,umask 是 unix 操作系统的概念,vsftpd 只是把他借來分別引用到:local_umask、anon_umask
|
|
冷日 (冷日) |
發表時間:2012/6/20 7:22 |
- Webmaster

- 註冊日: 2008/2/19
- 來自:
- 發表數: 15773
|
- [分享]vsftp 的 userlist_enable 詳細說明
- userlist_enable
用法:YES/NO 若是啟動此功能,則會讀取/etc/vsftpd.user_list 當中的使用者名稱。此項功能可以在詢問密碼前就出現失敗訊息,而不需要檢驗密碼的程序。預設值為關閉。
userlist_deny 用法:YES/NO 這個選項只有在userlist_enable 啟動時才會被檢驗。如果將這個選項設為YES,則在/etc/vsftpd.user_list 中的使用者將無法登入 若設為NO , 則只有在 /etc/vsftpd.user_list 中的使用者才能登入。而且此項功能可以在詢問密碼前就出現錯誤訊息,而不需要檢驗密碼的程序。
vsftpd.user_list文件 vsftpd.user_list文件位於「/etc」目錄中,具有與vsftpd.ftpusers文件類似的訪問控制功能,但是使用起來更加靈活。
(1)設置登陸的用戶帳號 當vsftpd.conf配置文件中包括以下設置時,vsftpd.user_list文件中的用戶帳號被禁止進行ftp登陸。
userlist_enable=YES
userlist_deny=YES
userlist_deny設置項設置使用vsftpd.user_list文件,userlist_deny設置為YES表示vsftpd.user_list文件用於設置禁止登陸的用戶帳號。
(2)設置只允許登陸的用戶帳號 當vsftpd.conf配置文件中包括以下設置時,只有vsftpd.user_list文件中的用戶帳號能夠進行ftp登陸
userlist_enable=YES
userlist_deny=YES
userlist_enable設置項設置使用vsftpd.user_list文件,userlist_deny設置為NO表示vsftpd.user_list文件用於設置只允許登陸的用戶帳號,文件中未包括的用戶帳號被禁止ftp登陸
範例:
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.usr_list
usr_list中放可以登錄的用戶
vsftpd.user_list官方說明:
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd.ftpusers
# for users that are denied.
vsftpd.ftpusers官方說明:
# Users that are not allowed to login via ftp
詳細出處參考:http://www.jb51.net/os/RedHat/1263.html
|
|
冷日 (冷日) |
發表時間:2012/7/4 8:28 |
- Webmaster

- 註冊日: 2008/2/19
- 來自:
- 發表數: 15773
|
- [轉貼]VSFTPD的菜鳥篇
- VSFTPD的菜鳥篇:
作者:歡樂1982 2007-09-03 23:34 星期一 晴 版權聲明:可以任意轉載,轉載時請務必以超鏈接形式標明文章原始出處和作者信息及本聲明 http://www.5ilinux.com/vsftp01.html VSFTPD的菜鳥篇: 這是我這個菜鳥學習LINUX所寫的第一篇文章,是比較基礎的FTP架設的應用,如果我寫有什麼問題請大家多指教,我後續會陸續出進階篇把FTP中各種詳細的配置跟大家一起進行探討。 我所用的是LINUX AS+VSFTPD-1.2.0-4的系統架構,在這裡說明的是如果對配置文件不是很熟悉,最好做個備份,以免誤操作: 1. 匿名服務器的連接(獨立的服務器) 在/etc/vsftpd/vsftpd.conf配置文件中添加如下幾項:
Anonymous_enable=yes (允許匿名登陸)
Dirmessage_enable=yes (切換目錄時,顯示目錄下.message的內容)
Local_umask=022 (FTP上本地的文件權限,默認是077)
Connect_form_port_20=yes (啟用FTP數據端口的數據連接)*
Xferlog_enable=yes (激活上傳和下傳的日誌)
Xferlog_std_format=yes (使用標準的日誌格式)
Ftpd_banner=XXXXX (歡迎信息)
Pam_service_name=vsftpd (驗證方式)*
Listen=yes (獨立的VSFTPD服務器)*
功能:只能連接FTP服務器,不能上傳和下傳 註:其中所有和日誌歡迎信息相關連的都是可選項,打了星號的無論什麼帳戶都要添加,是屬於FTP的基本選項
2. 開啟匿名FTP服務器上傳權限 在配置文件中添加以下的信息即可:
Anon_upload_enable=yes (開放上傳權限)
Anon_mkdir_write_enable=yes (可創建目錄的同時可以在此目錄中上傳文件)
Write_enable=yes (開放本地用戶寫的權限)
Anon_other_write_enable=yes (匿名帳號可以有刪除的權限)
3. 開啟匿名服務器下傳的權限 在配置文件中添加如下信息即可:
Anon_world_readable_only=no
註:要注意文件夾的屬性,匿名帳戶是其它(other)用戶要開啟它的讀寫執行的權限 (R)讀-----下傳 (W)寫----上傳 (X)執行----如果不開FTP的目錄都進不去 4.普通用戶FTP服務器的連接(獨立服務器) 在配置文件中添加如下信息即可:
Local_enble=yes (本地帳戶能夠登陸)
Write_enable=no (本地帳戶登陸後無權刪除和修改文件)
功能:可以用本地帳戶登陸vsftpd服務器,有下載上傳的權限 註:在禁止匿名登陸的信息後匿名服務器照樣可以登陸但不可以上傳下傳 5. 用戶登陸限制進其它的目錄,只能進它的主目錄 設置所有的本地用戶都執行chroot
Chroot_local_user=yes (本地所有帳戶都只能在自家目錄)
設置指定用戶執行chroot
Chroot_list_enable=yes (文件中的名單可以調用)
Chroot_list_file=/任意指定的路徑/vsftpd.chroot_list
注意:vsftpd.chroot_list 是沒有創建的需要自己添加,要想控制帳號就直接在文件中加帳號即可 6. 限制本地用戶訪問FTP
Userlist_enable=yes (用userlistlai 來限制用戶訪問)
Userlist_deny=no (名單中的人不允許訪問)
Userlist_file=/指定文件存放的路徑/ (文件放置的路徑)
註:開啟userlist_enable=yes匿名帳號不能登陸 7. 安全選項
Idle_session_timeout=600(秒) (用戶會話空閒後10分鐘)
Data_connection_timeout=120(秒) (將數據連接空閒2分鐘斷)
Accept_timeout=60(秒) (將客戶端空閒1分鐘後斷)
Connect_timeout=60(秒) (中斷1分鐘後又重新連接)
Local_max_rate=50000(bite) (本地用戶傳輸率50K)
Anon_max_rate=30000(bite) (匿名用戶傳輸率30K)
Pasv_min_port=50000 (將客戶端的數據連接端口改在
Pasv_max_port=60000 50000—60000之間)
Max_clients=200 (FTP的最大連接數)
Max_per_ip=4 (每IP的最大連接數)
Listen_port=5555 (從5555端口進行數據連接)
8. 查看誰登陸了FTP,並殺死它的進程
ps –xf |grep ftp
kill 進程號
作者:龍磊 ------------------------ Quick Setup for Impatient ------------------------ This document tends to be 10 minutes "grab & use" guide for Pure-FTPd ==== INSTALATION ==== If you don't have pure-ftpd installed on your system, grab latest source package from http://www.pureftpd.org. Let's say we have downloaded file 'pure-ftpd-1.0.20.tar.bz2'
$ tar -xjvf pure-ftpd-1.0.20.tar.bz2
$ cd pure-ftpd-1.0.20
Now configure, build and install package like this:
$ ./configure --with-everything
$ make
$ make install
Everything should be at the right place in /usr/local ==== CREATE NEW USER ACCOUNT ==== First thing to do: create group named "ftpgroup" and system user "ftpuser" with following commands:
$ groupadd ftpgroup
$ useradd -g ftpgroup -d /dev/null -s /etc ftpuser
Create directory "/home/ftpgroup"
Now, let's create "joe", whoose home directory will be /home/ftpusers/joe
$ pure-pw useradd joe -u ftpuser -d /home/ftpusers/joe -m
Joe's password is asked twice.
==== LAUNCH THE SERVER ==== Type following command to start pure-ftpd server:
$ /usr/local/sbin/pure-ftpd -j -lpuredb:/etc/pureftpd.pdb &
Don't forget & at the end! Now try to ftp://localhost and log as "joe". IMPORTANT NOTICE: By default, /etc/pureftpd.passwd and /etc/pureftpd.pdb files matter for authentification. If you have installed binary version of Pure-FTPd from your disto package management system (rpm,deb,..) these files can have different location. (eg. /etc/pure-ftp/pureftpd.passwd) There is no need to restart server when another new user is created. You can create "mike" now:
$ pure-pw useradd mike -u ftpuser -d /home/ftpusers/mike -m
and log as "mike". ==== SETTING UP ANONYMOUS FTP ==== Well, let's create system user named "ftp"
If "ftp" user already exists, check your /etc/passwd what his homedir is. (can be /var/ftp or whatever) Home directory of "ftp" user MUST be readable. Now, pure-ftpd should accept login "anonymous" or "ftp". Anonymous user will see directory /home/ftp FEW THINGS TO NOTICE: If server is run with "-i", anonymous users will not be able upload/delete files whatever directory permissions are. If you wish to create writeable "incomming", run server without "-i" and set appropriate permissions. Writeable directories must have owner set to 'ftp'. Don't chown the public files to 'ftp', just writable directories. Example:
chmod 555 /home/ftp
chown ftp /home/ftp/incomming
chgrp ftp /home/ftp/incomming
chmod 755 /home/ftp/incomming
If you want to allow users to create directories, run server with "-M" switch. TIP: Place ".banner" file with some text in /home/ftp (user will see this text when logging) ==== STOPPING Pure-FTPd SERVER ==== We need to find PID of pure-ftpd process and kill it. 1) search in process table
and look for line like this:
root 3954 0.0 0.1 3992 620 pts/3 S 20:43 0:00 pure-ftpd (SERVER)
PID is 3954 2) /var/run/pure-ftpd.pid This file is created always when server is launched and contains the PID we need Now simple kill this process:
$ kill 3954 (or whatever PID you've got)
==== Other Quick Usefull Info ==== - if you want pure-ftpd to start automatically on boot, add "launch command" (eg. /usr/local/sbin/pure-ftpd -j -lpuredb:/etc/pureftpd.pdb &) to file /etc/rc.d/rc.local - use command 'pure-ftpwho' to see actual ftp activity - add '-O clf:/var/log/pureftpd.log' when starting server and transfers will be logged into /var/log/pureftpd.log ==== Other not Quick Usefull Info ==== Can be found in documentation files, README (at least recognised switches) and README.Virtual-Users are recommended. Feel free to send your comments to sector[`at`]ynet[`dot`]sk [轉貼]Pure-ftpd on FreeBSD之攻略(中文簡體版) 作者:leolee761128 發表時間:2002/12/22 11:57am 此貼(繁體原版)MaxBSD以前已經貼出來過,個人感覺看起來不方便,就把它弄成了簡體的,希望對大家有點幫助。 有錯漏的地方請指正,謝過! ******************************************************************************** Pure-ftpd on FreeBSD之攻略 ----[作者]far <一>;PureFTPD介紹 顧名思義.他是純粹的一套FTPD.(-.-"廢話).她好用在哪裡?唔...就是 好用.用了就對了.問那麼多幹嘛.^_^!! -------------------------------------------------------------- <二>;安裝PureFTPD FreeBSD的ports裡面也有.如果你偷懶的話.可以直接到ports下安裝即 可(/usr/ports/ftp/pure-ftpd).不過我建議你去他的官方網站抓 新版的(http://www.pureftpd.org/).我用的是1.0.12版.用起來還不錯. 以往我都是懶人安裝法:到ports目錄下打make install clean.完成!! 後來.發現用ports裝並不能將pure-ftpd的強大體現出來.(其實是舊版 fxp支持上有問題.)所以...難得...這麼懶的我.也就用source裝了. 廢話了好多.:D A。把抓下來的source解開.(建議解在/tmp下)
#tar zxvf pure-ftpd-1.0.12.tar.gz
如果沒事做.可以看看裡面的README.* 很值得看.如果你有什 麼特殊需求的話.也可以直接在裡面去找.應該是可以找到你要的東 東.(Ex: LDAP.MySQL.Virtual.......) B。開始準備依你的意願做出你想要的ftp-server.
#./configure --with-paranoidmsg --with-sysquotas --with-puredb \
--with-altlog --with-throttling --with-ratios --with-ftpwho \
--with-welcomemsg --with-uploadscript --with-largefile \
--with-virtualhosts --with-virtualchroot --with-diraliases \
--with-quotas --with-peruserlimits --with-language=traditional-chinese
在README中[ADVANCED COMPILATION]的段落中,有對上面的使用的 詳細說明.在這裡我只對常用的做簡略的解釋.
--without-standalone
不能以standalone的方式執行ftpd.
--without-inetd
不能以inetd的方式執行ftpd.
--without-iplogging
做log時不將IP 地址給log下來.
--without-shadow
不做shadow.除非是用PAM, LDAP or SQL.不然極不建議拿掉.
--without-usernames
文件列表只會列出UID & GID,不列出實際user or group name.
--without-humor
嘿嘿嘿....
--without-ascii
不支持7-bits transfers(ASCII).
--with-paranoidmsg
唔....不知該怎麼說.算是可以給特定人的信息吧.
--with-sysquotas
吃系統的quota設定.
--with-minimal
最小化安裝.
--with-pam
--with-puredb
--with-ldap
--with-mysql
--with-pgsql
以上五種都是存儲資料的格式?!(算吧?!).看你比較習慣什麼.
我是比較喜歡用puredb.
--with-altlog
留log拉....
--with-cookie
使用者進站看到的東東.類似進站畫面.
--with-ratios
上下傳比.
--with-throttling
頻寬可設限.
--with-ftpwho
可用pure-ftpwho來看線上使用者.像是Serv-u的線上狀態.
--with-uploadscript
當一個文件被完整上傳完後自動呼叫某一script去對這個文件
處理.當然.這個script得你自己寫.
--with-largefile
支持下載超過2G的文件.
--with-virtualhosts
跟http的virtualhost有異曲同工之妙.
--with-virtualchroot
配合上面的chroot.
--with-diraliases
跟Serv-U上面的link功能一樣.
--with-nonroot
不需root權限.一般user即可啟動ftpd.
--with-quotas
使用quota.(非系統下的quota)
--with-peruserlimits
enable per-user concurrency limits.Avoid this on
very loaded servers.(太難翻譯了)
--with-everything
所有功能全上.
--with-language=traditional-chinese
顯示出來的信息的語言.缺省為英語.
(意外的發現.在config.h中作者以為大陸用traditional-chinese
台灣用simplified-chinese.但不管如何,這不影響我們的使用)
C.好了就準備安裝上去吧!!
#make ; make check ; make install
D.把一些東東搬到該放的位置.
#chmod 755 configuration-file/pure-config.pl
#cp configuration-file/pure-config.pl /usr/local/sbin/
#cp configuration-file/pure-ftpd.conf /usr/local/etc/
-------OK.PureFTPD就這樣裝完了.其他Config等下回分解.:p----------- 在上一章節.我們已經成功把PureFTPD架起來了.現在我們要開始設定他的設定文件.:) -------------------------------------------------------------------------- <三>;pure-ftpd.conf的設定 *在上一次,我們把PureFTPD的default設定文件(pure-ftpd.conf)拷貝一 份在/usr/local/etc/下.(其實哪都可以,只是我習慣).建議再拷貝 一份叫pure-ftpd.xxx.conf(如果你要跑多支ftpd的話.xxx部分可以自 由替代成你要的名字.方便就好).開始編輯pure-ftpd.xxx.conf.
#vim pure-ftpd.xxx.conf (看你喜歡用什麼編輯器.自己選用)
####pure-ftpd.xxx.conf#######
ChrootEveryone yes
TrustedGID 50
#以上兩者要一起用
BrokenClientsCompatibility no
MaxClientsNumber 999
#最大鏈接數
Daemonize yes
#Fork in background
MaxClientsPerIP 5
#每個ip最多鏈接數
VerboseLog no
#是否要把所有client端的指令都log下來
DisplayDotFiles no
#顯示開頭的文件
AnonymousOnly no
#是否只讓匿名登錄
NoAnonymous yes
#不開放匿名登入
SyslogFacility ftp
DontResolve yes
#不反向解釋客戶端的ip
MaxIdleTime 5
#最大閒置時間
PureDB /ftp/etc/pureftpd.pdb
#使用者資料的DB存放地點 [由於我是用PureFTPD的內建DB.固有此選項]
UnixAuthentication yes
#如果你想要有簡單的Unix(/etc/passwd)的認證的話
LimitRecursion 1000 3
#ls最多列出1000個文件.最深3層
MaxLoad 4
#當system load超過4時.使用者將不能再下載
AntiWarez no
#上傳的文件不能被下載(owner is ftp).等到local admin確認
Bind 21
#要綁定哪個ip/port
#格式->; 127.0.0.1,21 如果只寫port表All ip,port
Umask 133:022
#上傳文件的Umask.(;:;)
MinUID 1000
# UID至少多少才能登錄
AllowUserFXP yes
#支不支持FXP
ProhibitDotFilesWrite no
ProhibitDotFilesRead no
#.開頭的文件能不能被讀寫
AutoRename no
#上傳文件若有相同文件名自動改名(file.1,file.2...)
TrustedIP 10.1.1.1
#鎖IP.
AltLog stats:/ftp/etc/log/pureftpd.log
#log存放地點
NoChmod yes
#不給Chmod指令的權限
KeepAllFiles yes
#使用者可續傳.但不可刪除文件
CreateHomeDir no
#如果user的home不存在自動建立
PIDFile /ftp/etc/log/pure-ftpd.pid
#記錄pure-ftpd的PID文件
Quota 1000:10
#<文件數:Megabytes>;
CallUploadScript yes
#呼叫UploadScript
MaxDiskUsage 99
#當硬盤使用率到多少時將停止上傳
NoRename yes
#不給改文件名
PerUserLimits 3:20
#<每個賬號最多可登入幾次:Anonymous最多可同時登入幾次>;
#############################
----------------------------------------------------------- <四>;建立賬號 有了ftp.理所當然得也要有賬號才行.
#vipw
ftpuser:$1$rEO39XEq$kRMKuch12ugYu3hCh/sPA.:9999:9999::0:0:ftp:/ftp:
/sbin/nologin
#vim /etc/group
ftpgroup:*:9999:
上面是ftp 客戶以什麼身份登入.
接下來我想要把pure-ftpd要吃的密碼文件選個地方放.我是選擇放在/ftp/etc/下
#pure-pw far -f pureftpd.ps -u 9999 -g 9999 -d /ftp/far -y 2
#pure-pw mkdb pureftpd.pdb -f pureftpd.ps
useradd ; [-f <密碼文件>;] -u ; [-g ;]
-D/-d <主目錄>; [-c ;]
[-t <下載頻寬>;] [-T <上傳頻寬>;]
[-n <最多下載文件數>;] [-N <最多下載Mb>;]
[-q ;] [-Q ;](上下傳比)
[-r ;/;] [-R ;/;]
[-i ;/;] [-I ;/;]
[-y <同時最多鏈接數>;]
[-z ;-;](可登入時間24小時制) [-m]
pure-pw usermod ; -f ; -u ; [-g ;]
-D/-d ; -[c ;]
[-t ;] [-T ;]
[-n ;] [-N ;]
[-q ;] [-Q ;]
[-r ;/;] [-R ;/;]
[-i ;/;] [-I ;/;]
[-y ;]
[-z ;-;] [-m]
pure-pw userdel ; [-f ;] [-m]
pure-pw passwd ; [-f ;] [-m]
pure-pw show ; [-f ;]
pure-pw mkdb [; [-f ;]]
-d ; : chroot user (建議值) -D ; : don't chroot user -y 0 : 同時最多鏈接數不限 -m : 同時更新/etc/pureftpd.pdb文件.(如果PureDB不放置在此的請不要加) For a 1:10 ratio, use -q 1 -Q 10 To allow access only between 9 am and 6 pm, use -z 0900-1800 **************************************************************** 關於文件權限部份.(需要將可Upload的使用者改成ftpuser:ftpgroup.可 下載的文件權限也要是644)
#chown -R ftpuser:ftpgroup Upload/
------------------------------------------------------------------ <五>;啟動 到/usr/local/bin/rc.d/下編輯一個pure-ftpd.sh
#############################
#!/bin/sh
case "$1" in
start)
if [ -f /usr/local/etc/pure-ftpd.xxx.conf ]; then
/usr/local/sbin/pure-config.pl /usr/local/etc/pure-
ftpd.xxx.conf >; /dev/null 2>;&1 && echo -n 'pure-ftpd Begin!'
fi
;;
stop)
/usr/bin/killall pure-ftpd >; /dev/null 2>;&1 && echo -n 'pure-
ftpd Stop!'
;;
*)
echo ""
echo "Usage: `basename $0` { start | stop }"
echo ""
exit 64
;;
esac
#############################
#chmod +x pure-ftpd.sh
#./pure-ftpd.sh start
ok...開始測試看看吧 ftp xxx.far2.net 21 Connected to ftp.far2.net. 220-=(<*>;)=-.:. (( 歡迎來到 PureFTPd 1.0.12 )) .:.-=(<*>;)=- 220-您是第 48 個使用者,最多可達 999 個連線 220-現在本地時間是 19:52 負載是 1.37。服務器端口: 21。 220-這是私用系統 - 不開放匿名登入 220 在 5 分鐘內沒有活動,您會被斷線。 Name (xxx.far2.net:far):far 331 使用者 far OK. 需要密碼. Password: 230-使用者 far 有群組存取於: ftpgroup 230-這個服務器支持FXP傳輸 230 OK. 目前限制的目錄是 / Remote system type is UNIX. Using binary mode to transfer files. ftp>; 當你看到以上信息時.恭喜你.你已經成功的架起一個ftp了.:) -------------------------------------------------------------------- 是不是很簡單呢.現在你可以好好享用你的FTP Server了.:) -------------------------------------------------------------------- ps.如果你是超超超超超超大的b3k站.PureFTPD下面有幾點建議. * Compile with :
#env CFLAGS="-O2 -fomit-frame-pointer -fgcse -Os"
#./configure --with-minimal --without-inetd --without-pam
#make install-strip
-=特殊功能都不要加.以減輕Server負擔=- *用standalone的模式去啟動.不要打開pure-ftpwho & pure-uploadscript & per-userlimits 的選項 -=因為那幾個都是很吃系統資源的工具=- ; *編輯/etc/fstab, 對所有filesystems的options增加",noatime" *在/boot/loader.conf裡增加以下兩行
hw.ata.wc="1"
kern.ipc.nmbclusters="60000"
*在/etc/sysctl.conf裡增加
vfs.vmiodirenable=1
kern.ipc.maxsockbuf=2097152
kern.ipc.somaxconn=8192
kern.ipc.maxsockets=16424
kern.maxfiles=65536
kern.maxfilesperproc=32768
net.inet.tcp.rfc1323=1
net.inet.tcp.delayed_ack=0
net.inet.tcp.sendspace=65535
net.inet.tcp.recvspace=65535
net.inet.udp.recvspace=65535
net.inet.udp.maxdgram=57344
net.local.stream.recvspace=65535
net.local.stream.sendspace=65535
vsFTP服務器的配置 VSFTPD的高手篇 版權聲明:可以任意轉載,轉載時請務必以超鏈接形式標明文章原始出處和作者信息及本聲明 [原文出處 http://www.5ilinux.com/vsftp02.html] 我可不是高手!!!^_^我只不過是個菜鳥,盡我的能力寫出了我這個菜鳥覺得的高手篇,所以有什麼錯誤請大家指正哦!!! 環境:linux as 3.0 + vsftpd -1.2.0-4的系統架構,是在獨立服務器下的哦!討厭XINETD^_^ 配置本地組訪問的FTP 首先創建用戶組 test和FTP的主目錄
groupadd test
mkdir /tmp/test
然後創建用戶
useradd -G test –d /tmp/test –M usr1
註:G:用戶所在的組 d:表示創建用戶的自己目錄的位置給予指定 M:不建立默認的自家目錄,也就是說在/home下沒有自己的目錄
useradd –G test –d /tmp/test –M usr2
接著改變文件夾的屬主和權限
chown usr1.test /tmp/test ----這表示把/tmp/test的屬主定為usr1
chmod 750 /tmp/test ----7表示wrx 5表示rx 0表示什麼權限都沒有
這個實驗的目的就是usr1有上傳、刪除和下載的權限 而usr2只有下載的權限沒有上傳和刪除的權限 當然啦大家別忘了我們的主配置文件vsftpd.conf 要確定local_enable=yes、write_enable=yes、chroot_local_usr=yes這三個選項是有的哦! 配置獨立FTP的服務器的非端口標準模式進行數據連接 這個非常容易:在VSFTPD。CONF中添加
就可以了啦! 配置單獨的虛擬FTP,使用虛擬FTP用戶,並使建立的四個帳戶中有不同的權限 (兩個有讀目錄的權限,一個有瀏覽、上傳、下載的權限,一個有瀏覽、下載、刪除和改文件名的權限) A:配置網卡 第一塊網卡地址是10.2.3.4 掩碼是255.255.0.0
ifconfig eth0:1 211.131.4.253 netmask 255.255.255.0 up
B:寫入/etc/sysconfig中(為了重起後IP地址不會丟失)
cd /etc/sysconfig/network-scripts
cp ifcfg-eth0 ifcfg-eth0:1
vi ifcfg-eth0:1在其中修改內容如下
DEVICE=eth0:1
BROADCAST=211.131.4.255
HWADDR=該網卡的MAC地址
IPADDR=211.131.4.253
NETMASK=255.255.255.0
NETWORK=211.131.4.0
onBOOT=yes
TYPE=Ethernet
wq退出 C:進入vsftpd.conf所在的文件夾
cp vsftpd.conf vsftpd2.conf
修改vsftpd.conf添加以下信息
修改vsftpd2.conf添加以下信息
Listen_address=211.131.4.253
Ftpd_banner=this is a virtual ftp test
到此虛擬的FTP服務器建立好了 D:建立logins.txt
添加入下信息:
longlei------------用戶名
longlei------------密碼
zhangweibo
zhangweibo
jinhui
jinhui
lxp
lxp
格式要按照我的來哦,一個用戶名,一個密碼啦 E:建立訪問者的口令庫文件,然後修改其權限
db_load –T –t hash –f /tmp/logins.txt /etc/vsftpd_login.db
F:進如/etc/pam.d/中創建ftp.vu 在此文件中添加如下信息
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
G:在/var/ftp/創建目錄並改變其屬性和它的屬主
useradd -d /var/ftp/test qiang
chmod 700 /var/ftp/test
在目錄中添加test_file測試文件 H:進入vsftpd2.conf修改其中的信息
Listen_yes
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=qiang------將虛擬用戶映射為本地用戶
Listen_port=5555
Max_client=10
Max_per_ip=1
Ftpd_banner=this is a virtual server and users
Pam_service_name=ftp.vu
註:在主配置文件中給的權限越低,在後面分用戶管理的時候對擁護的權限劃分的空間就越大,因為主配置文件最高的限制服務先讀主配置文件,然後再讀用戶的配置文件 重起服務。到此虛擬USER就建好了 I:在vsftpd.comf所在的目錄中創建virtaul文件目錄並在文件目錄中創建以你用戶名命名的配置文件
Longlei zhangweibo jinhui lxp
在longlei中添加:
Anon_world_readable_only=no
在lxp中添加
Anon_world_readable_only=no
這樣此兩個用戶就有了瀏覽目錄的權限了 在jinhui中添加
Anon_world_readable_only=no
Write_enable=yes
Anon_upload_enable=yes
此用戶就有了上傳、下載和瀏覽的權限 在zhangweibo中添加
Anon_world_readable_only=no
Write_enable=yes
Anon_upload_enable=yes
Anon_other_write_enable=yes
此用戶就有了上傳、下載、刪除文件目錄、修改文件名和瀏覽的權限 J:修改vsftpd2.conf 加入user_config_dir=/vsftpd.conf所在的目錄/virtual 重起服務器就搞定了 vsftpd.conf中的所有配置信息
vsftpd.conf的參數: Anonymous_enable=yes 允許匿名登陸
Dirmessage_enable=yes 切換目錄時,顯示目錄下.message的內容
Local_umask=022 FTP上本地的文件權限,默認是077
Connect_form_port_20=yes 啟用FTP數據端口的數據連接 *
Xferlog_enable=yes 激活上傳和下傳的日誌
Xferlog_std_format=yes 使用標準的日誌格式
Ftpd_banner=XXXXX 歡迎信息
Pam_service_name=vsftpd 驗證方式 *
Listen=yes 獨立的VSFTPD服務器 *
Anon_upload_enable=yes 開放上傳權限
Anon_mkdir_write_enable=yes 可創建目錄的同時可以在此目錄中上傳文件
Write_enable=yes 開放本地用戶寫的權限
Anon_other_write_enable=yes 匿名帳號可以有刪除的權限
Anon_world_readable_only=no 放開匿名用戶瀏覽權限
Ascii_upload_enable=yes 啟用上傳的ASCII傳輸方式
Ascii_download_enable=yes 啟用下載的ASCII傳輸方式
Banner_file=/var/vsftpd_banner_file 用戶連接後歡迎信息使用的是此文件中的相關信息
Idle_session_timeout=600(秒) 用戶會話空閒後10分鐘
Data_connection_timeout=120(秒) 將數據連接空閒2分鐘斷
Accept_timeout=60(秒) 將客戶端空閒1分鐘後斷
Connect_timeout=60(秒) 中斷1分鐘後又重新連接
Local_max_rate=50000(bite) 本地用戶傳輸率50K
Anon_max_rate=30000(bite) 匿名用戶傳輸率30K
Pasv_min_port=50000 將客戶端的數據連接端口改在
Pasv_max_port=60000 50000—60000之間
Max_clients=200 FTP的最大連接數
Max_per_ip=4 每IP的最大連接數
Listen_port=5555 從5555端口進行數據連接
Local_enble=yes 本地帳戶能夠登陸
Write_enable=no 本地帳戶登陸後無權刪除和修改文件
下面這是一組
Chroot_local_user=yes 本地所有帳戶都只能在自家目錄
Chroot_list_enable=yes 文件中的名單可以調用
Chroot_list_file=/任意指定的路徑/vsftpd.chroot_list 前提是chroot_local_user=no
這又是一組
Userlist_enable=yes 在指定的文件中的用戶不可以訪問
Userlist_deny=yes
Userlist_file=/指定的路徑/vsftpd.user_list
又開始單的了
Banner_fail=/路徑/文件名 連接失敗時顯示文件中的內容
Ls_recurse_enable=no
Async_abor_enable=yes
one_process_model=yes
Listen_address=10.2.2.2 將虛擬服務綁定到某端口
Guest_enable=yes 虛擬用戶可以登陸
Guest_username=所設的用戶名 將虛擬用戶映射為本地用戶
User_config_dir=/任意指定的路徑/為用戶策略自己所建的文件夾 指定不同虛擬用戶配置文件的路徑
又是一組
Chown_uploads=yes 改變上傳文件的所有者為root
Chown_username=root
又是一組
Deny_email_enable=yes 是否允許禁止匿名用戶使用某些郵件地址
Banned_email_file=//任意指定的路徑/xx/
又是單的
Pasv_enable=yes 服務器端用被動模式
User_config_dir=/任意指定的路徑//任意文件目錄 指定虛擬用戶存放配置文件的路徑
vsFTP服務器的維護 現在這裡還沒有關於維護vsftp服務器的資料。歡迎大家編輯2 vsFTP使用的一些補充 補充一:如何有選擇的把用戶限制在家目錄中呢? 我們要自己建一個文件,在/etc目錄中
#touch /etc/vsftpd.chroot_list
以beinan和nanbei這兩個用戶限制在他們所在的家目錄中,而其它的FTP用戶不做此限制。 在vsftpd.chroot_list這個文件中,把beinan和nanbei添上去就行,注意,每個用戶占一行。
然後改/etc/vsftpd/vsftpd.conf文件,找如下的兩行
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd.chroot_list
把前面的#號去掉,也就是這樣的
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
如果沒有這樣的兩行,就可以自己添加上去也是一樣的。 設置好後,重新vsFTPD服務器。 補充一之補充:如何把系統內所有的FTP用戶都限制在家目錄中呢??經juliaugong兄的提示,我查找了vsFTPd的洋文說明,證明這個選項是一刀切的解決所有的用戶都能限制在家目錄中 我們可以通過更改vsftpd.conf文件,加入如下的一行
改完配製文件,不要忘記重啟vsFTPd服務器
[root@linuxsir001 root]# /etc/init.d/vsftpd restart
關閉 vsftpd: [ 確定 ]
為 vsftpd 啟動 vsftpd: [ 確定 ]
[root@linuxsir001 root]#
補充二:打開vsFTP服務器的日誌功能 把下面xferlog_file前面的#號對掉,也就是把vsftp的log功能打開,這樣我們就能在/var/log目錄下查看vsftpd.log。這是vsFTP的日誌功能,這對於我們來說是極為重要的。
#xferlog_file=/var/log/vsftpd.log
補充三:如何讓綁定IP到vsFTP? 也就是說,如何讓用戶只能通過某個IP來訪問FTP。其實這個功能很有意思。如果綁定的是內網的IP,外部是沒有辦法訪問的。如果綁定的是對外服務的IP,內網也只能通過對外服務的IP來訪問FTP 在/etc/vsftpd/vsftpd.conf中加一行,以我的局域網為例,請看第一帖中的操作環境,這樣外網就不能訪問我的FTP了,內網也可能通過192.168.0.2來訪問FTP
listen_address=192.168.0.2
加完後,要重啟vsFTP服務器
[root@linuxsir001 root]# /etc/init.d/vsftpd restart
關閉 vsftpd: [ 確定 ]
為 vsftpd 啟動 vsftpd: [ 確定 ]
[root@linuxsir001 root]#
補充四:如何讓vsFTP服務器限制鏈接數,以及每個IP最大的鏈接數?? 答:應該改vsFTP服務器的配製文件vsftpd.conf,加入下面的兩行:
max_clients=數字
max_per_ip=數字
舉例:我想讓我的vsFTP最大支持鏈接數為100個,每個IP,最多能支持5個鏈接,所以我應該在vsftpd.conf中加上如下的兩行:
max_clients=100
max_per_ip=5
改好了配製文件,不要忘記啟動vsftp服務器。 補充五:如何限制下載的速度?
anon_max_rate=數字 註:這是匿名的下載速度 local_max_rate=數字 註:這是vsFTP服務器上普通用戶的下載速度
註:這個數字的單位是字節,所以我們要計算一下。比如我想讓匿名用戶和vsFTP上的用戶都以80KB下載,所以這個數字應該是1024x80=81920 所以我們要在vsftpd.conf中加入下面的兩行
anon_max_rate=81920
local_max_rate=81920
不要忘記重啟vsftpd服務 補充六:我的硬盤空間有限,怎麼辦? 我的硬盤空間有限,如何把帳號ftp默認的路徑/var/ftp更改到別處?或者是,我的linux所有的目錄都放在/根分區,因為空間緊張,我能否把ftp這個用戶的默認路徑放到別的分區? 可以,應該如下操作! 首先要把ftp這個用戶刪除
會有錯誤信息,不過不用理,這是正常的。 然後我們再把這個用戶添加上,比如我想為帳號ftp的家目錄設置在/mnt/LinG/ftp,我們就可以如下操作
[root@linuxsir001 root]# mkdir /mnt/LinG
[root@linuxsir001 root]# adduser -d /mnt/LinG/ftp -g ftp -s /sbin/nologin ftp
僅僅是這樣做還不行,因為這樣還是不能讓匿名用戶找到它的家目錄,所以我們必須改變/mnt/LinG/ftp這個目錄的權限。
[root@linuxsir001 root]# chmod 755 /mnt/LinG/ftp/
[root@linuxsir001 root]# chown -R root.root /mnt/LinG/ftp/
補充七:如何定制歡迎信息 如何在我們登入有些FTP之後,會出現類似:歡迎您來到LinuxSir FTP,在這裡,您會得到最真誠的幫助,如果有什麼問題和建議,請來信,多謝。 實現這個並不難,我們可以查看vsftpd.cof文件中,是否有這行。
如果沒有就加上,如果dirmessage_enable=YES前面有#號,就把#號去掉。 然後我們制定一個.message文件,寫上您想要寫的東西,比如是.message的內容是如下的:
歡迎您來到LinuxSir FTP!
在這裡,您會得到最真誠的幫助;
如果有什麼問題和建議,請來信,多謝。
我們可以用編輯器來寫這個.message,我想這個過程就不用說了吧。 然後我們把.message這個文件複製到各個用戶的家目錄中。比如我的FTP的一個用戶是beinan,這個用戶所在的家目錄是/home/beinan 我們就要把.message放在/home/beinan這個目錄下。如果系統用戶ftp,他的目錄就是/var/ftp這個目錄,這個是默認的,當匿名用戶登入時就訪問的是/var/ftp這個目錄。我們要讓匿名用戶能看到歡迎信息。就要把.message放在/var/ftp目錄中。其它的用戶,也無非就是類似的操作。 補充八:如何實現虛擬路徑? 比如: /home/a 映射為ftp://localhost/a /home/b/c 則為ftp://localhost/c 其實這個不能說是vsFTPd的內容,其實我們早就接觸過了,可能我們沒有注意,我們可以通過如下的方法來實現。
#mount --bind [原有的目錄] [新目錄]
比如我的ftp的默認目錄是/var/ftp,我想把/mnt/LinG/WinSoft文件夾,映射到/var/ftp目錄中,我就如下操作 我們要先在/var/ftp目錄中建一個目錄
然後執行mount命令
#mount --bind /mnt/LinG/WinSoft /var/ftp/WinSoft
這樣就OK了。 補充九:如何上匿名訪問、上傳,並支持下載和執行? 在默認的情況下,vsftp是不支持匿名用戶的訪問的,所以我們要自己打開相應的選項。現在我針對這個問題,我們要打開如下的選項。
anonymous_enable=YES 註:允許匿名訪問
anon_upload_enable=YES 註:允許上傳
anon_mkdir_write_enable=YES 註:允許建立相應的目錄
anon_umask=022 把上傳到FTP的文件或者目錄改變權限
當然打開這些選項還是不行的,我們還要讓匿名寫入文件的上一級目錄有寫入權,以我所做的FTP為例,我所做的FTP的匿名訪問的目錄是 /var/ftp,在vsFTPd中,/var/ftp這個目錄是不能讓匿名用戶有寫入權限的,這是為了安全考慮,所以我們必須自己在/var/ftp目錄中建一個目錄,讓這個目錄有寫入權。 比如:我在/var/ftp目錄建一個upload目錄,然後把它的權限設置成777,這樣匿名用戶就能寫入了。
#mkdir /var/ftp/upload
#chmod 777 /var/ftp/upload
改了一系列的文件,不要忘記重啟vsFTPd服務器 我是用standalone模式的,當然用下面的方法
[root@linuxsir001 root]# service vsftpd restart
關閉 vsftpd: [ 確定 ]
為 vsftpd 啟動 vsftpd: [ 確定 ]
[root@linuxsir001 root]#
如果您用的是xinetd模式來啟動vsFTPd,我們要重啟xinetd服務器
[root@linuxsir001 root]# service xinetd restart
停止 xinetd: [ 確定 ]
啟動 xinetd: [ 確定 ]
[root@linuxsir001 root]# ]
補充十:通過pam認證方式,添加虛擬用戶 通過pam認證,用db_load添加用戶,是真正的虛擬用戶。現在我們簡單的介紹一下,通過以後的學習,我們再深入補充: 1。在/etc/pam.d/目錄中創建一個文件ftp
[root@linuxsir001 root]# touch /etc/pam.d/ftp
2。在/etc/pam.d/ftp裡面加上如下的兩行
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
3。創建一系統的用戶名用密碼的文件logins.txt
[root@linuxsir001 root]# touch logins.txt
在logins.txt文件中,輸入如下的內容。這個內容您可以自己來定。比如我下面的。其實linuxsir007是FTP的虛擬用戶名, 123456是linuxsir007的密碼;linuxsir008是虛擬用戶名,234567是linuxsir008的密碼,以此類推,您想加入幾個就是幾個;下面是我添加的FTP的虛擬用戶名和密碼。
linuxsir007
123456
linuxsir008
234567
linuxsir009
567890
linuxsir010
678901
linuxsir011
789012
4。創建一個真實的用戶名linuxsir006,這個linuxsir006的用戶,所在的家目錄由您來定。我在這裡不多說了。我是按系統默認的來添加的。
[root@linuxsir001 root]# useradd linuxsir006
5。把/etc/hosts複製到/home/linuxsir006,並改變它的屬主
[root@linuxsir001 root]#cp /etc/hosts /home/linuxsir006/hosts
[root@linuxsir001 root]#chown linuxsir006.linuxsir006 /home/linuxsir006/hosts
6。通過db_load來創建虛擬用戶的庫文件。我們在前面建的logins.txt文件,我是放在了/root用戶目錄下。所以咱們得把目錄切換到/root目錄來創建虛擬用戶的庫文件。
[root@linuxsir001 root]# db_load -T -t hash -f logins.txt /etc/vsftpd_login.db
7。更改vsftpd.conf文件,加入如下的幾行
pam_service_name=ftp
guest_enable=YES
guest_username=linuxsir006
anon_world_readable_only=NO
8。重啟vsFTPd服務器;改了一系列的文件,不要忘記重啟vsFTPd服務器 我是用standalone模式的,當然用下面的方法
[root@linuxsir001 root]# service vsftpd restart
關閉 vsftpd: [ 確定 ]
為 vsftpd 啟動 vsftpd: [ 確定 ]
[root@linuxsir001 root]#
如果您用的是xinetd模式來啟動vsFTPd,我們要重啟xinetd服務器
[root@linuxsir001 root]# service xinetd restart
停止 xinetd: [ 確定 ]
啟動 xinetd: [ 確定 ]
[root@linuxsir001 root]#
9。如果您想讓用戶登入FTP時,登入成功的相應的信息,請把您製作的.message複製到您的用戶的家目錄中,這方面的請參考前面的補充。 10。測試:
[root@linuxsir001 root]# ftp 192.168.0.1
Connected to 192.168.0.1.
220 (vsFTPd 1.1.3)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.0.1:root): linuxsir007
331 Please specify the password.
Password:
230-歡迎光臨LinuxSir自由FTP
230-在這裡,您將得到最真誠的幫助!
230-本站限度為30KB!
230-每個IP限四個線程
230-請大家遵守FTP的有關規定。
230-多謝合作!
230-
230-LinuxSir管理部
230 Login successful. Have fun.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,0,1,85,171)
150 Here comes the directory listing.
-rw-r--r-- 1 ftp ftp 174 Jun 01 12:59 hosts
drwxr-xr-x 3 ftp ftp 4096 Jun 01 13:29 linuxsir008
drwxr-xr-x 2 ftp ftp 4096 Jun 01 13:24 sun
226 Directory send OK.
ftp>
補充十一:如何把系統默認用standalone啟動改為用xinetd啟動? 如何把Redhat 9.0中系統默認安裝的vsftpd-1.1.3-8.i386.rpm,系統默認vsFTPd是用standalone啟動方式,改為xinetd啟動方式 ?如果是用源碼包安裝的,安裝後就是xinetd模式,如果是用RPM包安裝的,在Redhat 9.0中,應該用下面的方法來解決。 1.在/etc/xinetd.d/目錄中創建一個文件vsftpd
[root@linuxsir001 root]# touch /etc/xinetd.d/vsftpd
/etc/xinetd.d/vsftpd內容如下:
service ftp
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/vsftpd
# server_args =
# log_on_success += DURATION USERID
# log_on_failure += USERID
nice = 10
disable = no
}
2。複製vsftpd.conf到/etc/目錄下,因為xinetd對vsFTPd配製文件應該在/etc目錄下,所以我們就必須把這個文件複製到/etc目錄下,否則會出現系統中local用戶無法登入,也就是說,不複製這個文件會出現ftp非匿名用戶無法訪問,只能用匿名用戶訪問。
[root@linuxsir001 root]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd.conf
3。更改配製文件/etc/vsftpd.conf,把如下的項注掉:也就是把
改為
或者是把這行刪除也行。 4。把/etc/init.d/vsftpd這個文件刪除。其實最好的備份到別處,因為我們有時實驗來實驗去,可能還會轉到standalone模式啟動。我就直接移動到別的目錄,比如是/root下面的backup目錄。
[root@linuxsir001 root]#mkdir /root/backup
[root@linuxsir001 root]# mv /etc/init.d/vsftpd /root/backup
5。運行ntsysv,把vsftpd的服務取消
[root@linuxsir001 root]#ntsysv
[ ] vsftpd
6。重啟xinetd服務
[root@linuxsir001 root]# service xinetd restart
原文出處:VSFTPD的菜鸟篇:_天涯博客_有见识的人都在此_天涯社区
|
|
|
|