2010年2月23日 星期二

安裝與配置vsftpd

之前架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的第一考量了!

2010年2月8日 星期一

Windows 7 PowerShell

PowerShell是Windows 7中提供的新工具。它自帶的編輯器與許多類LINIX的指令都讓寫小程式非常的方便。這次剛好需要寫一個小小的批次檔,就順便用它來試試看。

因為我電腦中的java是用免安裝檔的,因此它的路徑也不存在系統的路徑之中,每次要執行java的程式都得手動執行,不過我是也滿習慣的。jdownloader是個最近常用的小程式,不過當每次想開它時都得要打很多指令,雖然不會花太多的時間,不過每次這樣也不是辦法。因此我的需求也出來了,就是寫一個小小批次檔,可以讓我點兩下就可以幫我直接開好程式。

但在使ps1檔案執行時,Windows會跟你說你的程式不能執行,因為它沒有簽證。

待會會修改到登錄檔,所以要先將PowerShell用系統管理者身份開啟。

輸入get-executionpolicy可以看到目前對執行程式的策略,預設為Restricted。

輸入set-executionpolicy remotesigned就可以將策略改變成為remotesigned,這樣子就可以不用簽證也可以直接執行了。

在存好ps1檔之後,按右鍵,按"用PowerShell執行",就可以了!

以上內容整理自"get-help about_signing"