1.啟動 inetd 的 FTP 通訊協定
# cd /etc # vi inetd.conf
# ftp stream tcp nowait root /usr/sbin/tcpd vsftpd
去掉前面的 # 號# kill -HUP inetd
讓 inetd 重新啟動
2.設定 vsFTPd 相關檔案
# cd /etc # mkdir vsftpd
因為想把 vsftpd.conf 集中管理,所以建立一個 vsftpd 的資料夾。# mv /etc/vsftpd.conf /etc/vsftpd/ # cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf -bk
建立一份 vsftpd.conf 的備份檔# cd /etc # lm -s /etc/vsftpd/vsftpd.conf vsftpd.conf
這樣可以將 vsftpd.conf 放在 vsftpd 的資料夾內
3.建立 vsftpd.user_list 和 vsftpd.chroot_list 兩個檔案
建立 vsftpd.user_list 檔# touch vsftpd.user_list
將系統帳號輸入此檔內,就是將 /etc/passwd 內, 不是使用者的帳號,輸入此檔內,也包含root,格式如下: root bin daemon ....略# touch vsftpd.chroot_list
需要瀏覽整個 Linux 資料夾的實體帳號, 輸入在裡面,如沒有,可以留空白
4.設定 vsftpd.conf
# vi /etc/vsftpd/vsftpd.conf
這台 FTP Server 設定如下 a.不允許匿名登入 b.實體使用者只能在自己的資料夾內移動 c.特殊帳號,不能登入,如機器帳號,root等 所以在 vsftpd.conf 內找anonymous_enable=YES
改為anonymous_enable=NO
找#local_enable=YES
改為local_enable=YES
(在 /etc/passwd 內的帳號才能以實體用戶的方式登入 vsftpd)
找#write_enable=YES
改為write_enable=YES
(允許使用者具有寫入的-包括刪除與修改等功能)
[chroot_local_user],[chroot_list_enable],[chroot_list_file],這三個參數
設定 登入的帳號,是否可以瀏覽其他資料夾的權限,
這邊用表格,來說明會比較清楚:
假設有一個帳號叫:TE-USER
chroot_local_user | YES | YES | NO | NO | NO | NO | YES | YES |
chroot_list_enable | NO | YES | NO | YES | NO | YES | NO | YES |
chroot_list_file | 沒有輸入帳號或沒有設定此參數 | 有輸入TE-USER帳號 | ||||||
結果 | 有限制 | 有限制 | 無限制 | 無限制 | 無限制 | 有限制 | 有限制 | 無限制 |
有限制:TE-USER登入後,只會顯示該使用者的資料夾,並且該使用者的家目錄為根目錄。
無限制:TE-USER登入後,可以顯示全部資料夾,並且可以瀏覽全部資料夾。
---------------------------------------------------------------------------------
[userlist_deny],[userlist_enable],[userlist_file],這三個參數
設定哪些帳號可以登入此FTP Server ,這邊用表格,來說明會比較清楚:
假設有一個帳號叫:TE-USER
userlist_deny | YES | YES | NO | NO | NO | NO | YES | YES |
userlist_enable | NO | YES | NO | YES | NO | YES | NO | YES |
userlist_file | 沒有輸入帳號或沒有設定此參數 | 有輸入TE-USER帳號 | ||||||
結果 | 登入 | 登入 | 登入 | 禁止 | 登入 | 登入 | 登入 | 禁止 |
登入:TE-USER帳號可以登入
禁止:TE-USER帳號可以不可登入
5.建立可登入 FTP 的帳號
在SlackWare 13 內當你下 useradd 時,只是將帳號建立起來,但
家目錄,以及 shell 都沒有設定起來,所以在增加帳號時,必須加參數。
# useradd -m -s /bin/bash 帳號
-m:建立使用者家目錄
-s shell:接這後面輸入一個 shell 如 -s /bin/bash
這樣帳號就可以登入vsFTPd
vsftpd.conf 相關設定值:
/etc/vsftpd/vsftpd.conf 是伺服器最主要的設定檔,VSFTPD 使用者類別:
使用者類別 | 是否擁有帳號、 密碼及家目錄 |
登入後的目錄 | 是否能切換到家目錄以外的目錄 |
real | 是 | 家目錄 | 是 |
restricted | 是 | 家目錄 | 否 |
anonymous | 否 (登入使用 anonymous 或 ftp) |
/var/ftp | 否 |
布林值選項 | |
anon_mkdir_write_enable | 啟用此選項 (=YES),匿名使用者可以建立子目錄, 但必須配合 write_enable=YES。 |
anon_other_write_enable | 啟用此選項,匿名使用者具有上傳和建立子目錄之外的權限,例如刪除或更改檔名。 |
anon_upload_enable | 啟用此選項,匿名使用者可在特定情況下上傳檔案, 但必須配合 write_enable=YES。 |
anon_world_readable_only | 啟用此選項(預設), 匿名使用者僅可下載可閱讀(readable)檔案。 |
anonymous_enable | 啟用此選項(預設),允許匿名使用者登入。 |
chown_uploads | 啟用此選項,所有以匿名方式上傳的檔案, 都會套用選項「chown_username」指定的擁有人。 |
chroot_list_enable | 啟用此選項,所有列於檔案 /etc/vsftpd/chroot_list 中的使用者,都不允許切換到家目錄以外的目錄。 |
chroot_local_user | 啟用此選項,所有擁有帳號的使用者, 都不允許切換到家目錄以外的目錄。 |
dirmessage_enable | 啟用此選項(預設),當使用者第一次進入新的目錄時,伺服器會顯示該目錄下名為 .message 的檔案內容; 若有需要,可利用選項「message_file」來修改預設檔名。 |
hide_ids | 啟用此選項,目錄中所有檔案的擁有者及群組資訊都會被顯示為 ftp。 |
local_enable | 啟用此選項,允許用有帳號的使用者登入。 |
no_anon_password | 啟用此選項,匿名使用者登入時,不會被要求輸入密碼。 |
tcp_wrappers | 啟用此選項,則會將 VSFTPD 與 tcp wrapper 相結合,因此可以利用檔案 /etc/hosts.allow 及 /etc/hosts.deny 來定義可連線或拒絕的來源位址。 |
userlist_deny | 此選項與選項「userlist_enable」配合,決定檔案 /etc/vsftpd/user_list 中的使用者將被拒絕或允許登入。 |
userlist_enable | 參考選項 「userlist_deny」。 |
write_enable | 啟用此選項,允許使用者使用任何變更檔案系統的 FTP 指令,例如︰STOR、DELE、RNFR、RNTO、MKD、RMD、APPE 和 SITE 等。 |
xferlog_enable | 啟用此選項(預設),所有上傳與下載的資訊將被完整記錄在檔案 /var/log/vsftpd.log 中;若有需要,可利用選項「xferlog_file」來修改預設檔名。 |
數字選項 | |
anon_max_rate | 匿名使用者進行連線時,允許的資料傳輸上限, 單位為 Bytes/Second,預設值為 0(表示無限制)。 |
anon_umask | 匿名使用者新增檔案時的 umask 值,預設值為 077, 表示新增檔案的權限為 700。 |
idle_session_timeout | 使用者閒置超過此時間,連線將被中斷,預設值為 300(秒)。 |
local_max_rate | 擁有帳號使用者進行連線時,允許的資料傳輸上限, 單位為 Bytes/Second,預設值為 0(表示無限制)。 |
local_umask | 擁有帳號使用者新增檔案時的 umask 值,預設值為 077。 |
max_clients | 允許同時連線的用戶端數量上限,預設值為 0(表示無限制)。 |
max_per_ip | 同一 IP 位址上,允許同時連線的數量上限, 預設值為 0(表示無限制)。 |
字串選項 | |
anon_root | 指定匿名使用者的登入目錄。 |
banner_file | 指定系統歡迎訊息檔。若是啟用此選項, 檔案內容將取代選項「ftpd_banner」所定義的內容。 |
chown_username | 指定匿名使用者所上傳檔案的擁有者名稱,預設值為 root, 但須與選項「chown_uploads」配合。 |
chroot_list_file | 所有列於指定檔案中的使用者, 都不允許切換到家目錄以外的目錄,預設值為 /etc/vsftpd/chroot_list 。 |
ftp_username | 指定匿名使用者登入時所使用的帳號,預設值為 ftp。 |
ftpd_banner | 指定系統歡迎訊息字串,預設值為無。 |
local_root | 指定擁有帳號使用者的登入目錄。 |
message_file | 當使用者第一次進入新的目錄時,伺服器會顯示此指定檔案的內容,預設值為 .message,但須與選項「dirmessage_enable」配合。 |
userlist_file | 參考選項 「userlist_enable」,預設值為 /etc/vsftpd/user_list。 |
xferlog_file | 參考選項 「xferlog_enable」,預設值為 /var/log/vsftpd.log。 |