之前架FTP時是選用proftpd,不過不知道為什麼,每當我連線時總是要等一下,令人感覺很差。這次剛好有機會來架一個FTP,考慮過後決定選用vsftpd。本來想用的pure-ftpd因為太多有的沒有的問題只好放棄。
這次要架FTP的要求是建立一個只能上傳的FTP。簡單的要求,卻也弄了很久才弄出來..
先安裝vsftpd
aptitude install vsftpd
加上ftp使用者及其群組
groupadd asp2010
useradd -g asp2010 -m asp2010
修改vsftpd.conf
anonymous_enable=NO
#禁止匿名使用者
local_enable=YES
#可用實體帳號登入
write_enable=YES
#可寫入
local_umask=022
#寫入檔案時的遮罩
chroot_local_user=YES
#只能在家目錄內活動
local_max_rate=800000
#最大下載速度800MB/S
max_clients=20
#最多20個人
cmds_denied=DELE,RNFR,RNTO,RETR,MKD
#這是最關鍵的一行!
#禁止使用者使用的命令
#DELE - delete a remote file
#RNFR - rename from
#RNTO - rename to
#RETR - retrieve a remote file
#MKD - make a remote directory
以上,就可以建立一個只能上傳,不能下載、更名、刪除和建立子資料夾的FTP!
最後還有一個小小的問題要處理。既然這裡使用的是實體帳號,那是否就表示它也可以用SSH登入呢?
答案是可以的,所以當然要想辦法去避免它。在ssh裡有一項設定是AllowUsers,不過我怎麼設就是沒有效。所以就採用了另一個變通的方法,我限制只能從我這個IP登入到那台裡,這樣子一來,即便另一個帳號可以使用SSH登入,它也會因為IP的關係就被擋掉。
設定的方法是在/etc/hosts.allow中加入sshd:111.222.333.444
在/etc/hosts.deny中加入sshd:all
如此便完成了!
目前使用起來是非常順,僅有一個小小的問題,就是我無法看到vsftp的狀態,不過這倒是還好,以後有機會再研究看看。
不過看來vsftpd會成為我日後架設ftp的第一考量了!
沒有留言:
張貼留言