2009年5月4日 星期一

Debian+pure-ftpd




在Debian上裝Pure-ftpd的筆記
環境介紹:
Asus L8400C Laptop computer(2000出廠)
Intel P-III 500MHz Celeron M
192MB RAM
IBM 12GB HD


安裝完成之後,先登入管理使用者,接著打開終端機:
su
passwd:
進入超級管理員的權限,然後使用我喜歡的編輯器nano打開sodoers
nano /etc/sudoers
將使用者的權限設定跟root一樣,儲存後離開。
exit(離開su)

安裝pppoeconf撥接程式
sudo apt-get install pppoeconf

接著來安裝synaptic這個軟體安裝程式
sudo apt-get install synaptic

安裝Apache2
sudo apt-get install apache2

安裝pure-ftpd
sudo apt-get install pure-ftpd

由於我使用的是中華電信的光世代,需要使用pppoe還取得固定IP!
現在把網路線到adsl的ATU-R上,然後:
sudo pppoeconf

將用戶號碼與密碼填入
username: xxxxxxxx@ip.hinet.net
passwd: xxxxxxxx
將最後幾頁的說明記錄下來
sudo poff -a (斷線)
pon dsl-provider(撥接ADSL)
這兩項最為重要

接下來是Pure-ftpd
PURE-FTPD的設定,也可以看看這一篇(我覺得寫得爆炸好 )
我的作法如下:

先確定我要他是standalone
sudo nano /etc/default/pure-ftpd-common
將狀態改好!

先在Debian下設定群組與虛擬的用戶
sudo groupadd ftpgroup
sudo useradd -g ftpgroup -d /dev/null -s /etc ftpuser
(註記:第一個是使用群組,第二個是虛擬的是使用者群組)

建立給 FTP 用戶的目錄
sudo mkdir /home/ftp
sudo chown -R ftpuser:ftpgroup /home/ftp

開一個新的虛擬用戶
sudo pure-pw useradd ftp用戶名稱 -u ftpuser -g ftpgroup -d /home/ftp/ftp用戶名稱『如果最後加上參數 -m 則可以自動編譯資料庫』
系統會要求你打入密碼,共兩次!
(如果剛才不知道ftp用戶名稱,現在可以去新建檔案夾)
sudo mkdir/home/ftp/ftp用戶名稱

建立資料庫
sudo pure-pw mkdb

將認證的資料庫連結進去登入的機制
cd /etc/pure-ftpd/auth
sudo ln -s /etc/pure-ftpd/conf/PureDB 60pdb

重新啟動pure-ftpd,使它套用新的設定
sudo /etc/init.d/pure-ftpd restart
(pure-ftpd 設定功能指令)
pure-pw usermod login [-f passwd_file] [-F puredb_file] [-u uid] [-g gid] -D/-d home_directory -[c gecos]
[-t download_bandwidth] [-T upload_bandwidth]
[-n max_number_of_files] [-N max_Mbytes]
[-q upload_ratio] [-Q download_ratio]
[-r /[,/]...] [-R /[,/]...]
[-i /[,/]...] [-I /[,/]...]
[-y ]
[-z -] [-m]
pure-pw userdel login [-f passwd_file] [-F puredb_file] [-m]
pure-pw passwd login [-f passwd_file] [-F puredb_file] [-m]
pure-pw show login [-f passwd_file] [-m]
pure-pw mkdb [ [-f passwd_file]] [-F puredb_file]
pure-pw list [-f passwd_file]
這樣就大功告成了

Pure-ftpd conf設定的資料
# Cage in every user in his home directory
ChrootEveryone    yes
# 限定每一個使用者都只能在自己家目錄下活動。當設定成 no 時,則 Real User 可切換至其他
# 目錄做存取。

# If the previous option is set to "no", members of the following group won't be caged. Others will be.
# If you don't want chroot()ing anyone,just comment out ChrootEveryone and TrustedGID.
# TrustedGID     100
# 當您將註解拿掉後,GID 100 的群組成員會被視為信任的使用者,因此可以存取家目錄外的
# 其他目錄。此時無論 ChrootEveryone 設定為何,都是一樣的結果。

# Maximum number of simultaneous users
MaxClientsNumber   10
# 限定最大連線數為 10。

# Maximum number of sim clients with the same IP address
MaxClientsPerIP     3
# 限定同一來源端位址的最大連線數為 3。

# List dot-files even when the client doesn't send "-a".
DisplayDotFiles     yes
# 這個參數設定成 yes 的話,則 Client 可以看到檔名是以 "." 作開始的隱藏檔。

# Don't allow authenticated users - have a public anonymous FTP only.
AnonymousOnly    yes
# 是否只允許匿名登入。當您希望 Real User 也能登入時,就設定成 no。

# Disallow anonymous connections. Only allow authenticated users.
NoAnonymous     no
# 是否不允許匿名登入。當設定成 no,表示允許匿名登入,但如果您希望只有 Real User 能經
# 由認證登入時,這裡就設定成 yes 吧。

# Syslog facility (auth, authpriv, daemon, ftp, security, user, local*)
# The default facility is "ftp". "none" disables logging.
SyslogFacility     ftp
# 您可以在 /etc/syslog.conf 裡使用 ftp 這個 facility,來告知 syslogd 要將 ftp 的相關訊息紀錄到
# 哪裡,比如: ftp.*   /var/log/ftplog

# Don't resolve host names in log files. Logs are less verbose, but it uses less bandwidth. Set this to "yes"
# on very busy servers or if you don't have a working DNS.
DontResolve      yes
# ftp 的紀錄檔是否不需解析主機名稱。

# Maximum idle time in minutes (default = 15 minutes)
MaxIdleTime      15
# 設定 FTP Client 端的閒置時間為 15 分鍾。

# PureDB user database (see README.Virtual-Users)
# PureDB   /etc/pure-ftpd/pureftpd.pdb
# 這是使用虛擬帳號登入時,所指定要使用的資料庫。

# If you want to enable PAM authentication, uncomment the following line.
PAMAuthentication    yes
# 是否使用 PAM 認證模組來對使用者作認證。

# If you want simple Unix (/etc/passwd) authentication, uncomment this.
# UnixAuthentication  yes
# 是否依照傳統的 /etc/passwd 來做認證。

# Are anonymous users allowed to create new directories ?
AnonymousCanCreateDirs  no
# 是否允許 anonymous 建立新目錄。如設定成 yes,則 anonymous 雖可建立目錄,但無法刪除。

# Port range for passive connections replies. - for firewalling.
# PassivePortRange 30000 50000
# 當 Client 端採用被動模式來建立資料通道時,FTP Server 預計所要使用 data channel 連接埠的範圍。
# 當您 Linux Client 端執行 ncftp 或 ftp 指令連上 FTP 站台後,可使用 passive 指令來變更連線模式。

# Upload/download ratio for anonymous users.
# AnonymousRatio   1 10
# 設定 anonymous 上傳/下載比率。
# 以 1:10 而言,如果 anonymous 上傳了 1MB 的資料後,就能夠下載 10MB 的檔案資料。

# Upload/download ratio for all users. This directive superscedes the previous one.
# UserRatio      1 10
# 設定 All User 上傳/下載比率。當 AnonymousRatio 及 UserRatio 都做設定時,是以 UserRatio 為主。

# Disallow downloading of files owned by "ftp", ie.
# files that were uploaded but not validated by a local admin.
AntiWarez       yes
# 匿名使用者要下載的檔案,如果其擁有者是 ftp 的話,則不允許下載。當您的 FTP 站台開放 anonymous 上傳時 (上
# 傳之後的檔案擁有者為 ftp),為了防止有些人會上傳一些有問題的檔案來供人下載,因此才設定這個參數 ; 而等
# 管理者確認上傳的檔案沒問題後,就可以把此檔的擁有者做個改變,這樣就能提供正常下載了。

# IP address/port to listen to (default=all IP and port 21).
# Bind       127.0.0.1,21
# 設定 FTP Server 要在哪個介面位址監聽哪個 port。預設是允許在所有介面位址監聽 21 port。

# Maximum bandwidth for anonymous users in KB/s
# AnonymousBandwidth 8
# 設定 anonymous 最大上傳、下載頻寬,單位為KB/s。

# Maximum bandwidth for *all* users (including anonymous) in KB/s.
# Use AnonymousBandwidth *or* UserBandwidth, both makes no sense.
# UserBandwidth    8
# 設定 All User 最大上傳、下載頻寬。當 AnonymousBandwidth 及 UserBandwidth 都設定時,是以 UserBandwidth 為主。

# File creation mask. : . 177:077 if you feel paranoid.
Umask        177:077
# 設定上傳檔案、目錄 (含建立新目錄) 的預設權限,177:077 表示檔案的預設權限為 600,目錄為 700。

# Minimum UID for an authenticated user to log in.
MinUID        100
# 設定能允許 Real User 認證登入的最小 UID 為 100,也就是說 UID 100 以上 (含100) 的使用者方可認證登入。
# 如您欲允許 root 登入的話,這個地方請註解起來,並且在 /etc/ftpusers 檔案中將 root 帳號移除。
# /etc/ftpusers 是用來設定拒絕登入 FTP Server 的使用者名單的。

# Users can't delete/write files beginning with a dot ('.') even if they own them. If TrustedGID is enabled,
# this group will have access to dot-files, though.
ProhibitDotFilesWrite   yes
# 是否要禁止使用者刪除或修改隱藏檔,即使使用者就是該隱藏檔的擁有者。設定 yes 就表示要禁止啦。

# Prohibit *reading* of files beginning with a dot (.history, .ssh...)
ProhibitDotFilesRead  no
# 是否要禁止使用者讀取隱藏檔內容。當以上兩個參數都設定 no 時,表示使用者對隱藏檔具有 r 及 w 的權限 (anonymous
# 為例外)。當 ProhibitDotFilesWrite 設定成 no,而 ProhibitDotFilesRead 設定成 yes 時,使用者是不能刪除檔案的。但是無論
# 如何設定,只要 TrustedGID 有設定時,則此群組的成員認證進來後是可以具有 r 及 w 的權限,並不會受到這裡的規範。

# Never overwrite files. When a file whoose name already exist is uploaded,
# it get automatically renamed to file.1, file.2, file.3, ...
AutoRename       yes
# 當上傳檔案時,若對方目錄內已經存在一個同檔名的檔案,則允許將上傳的那個檔案作自動更名的動作。

# Disallow anonymous users to upload new files (no = upload is allowed)
AnonymousCantUpload yes
# 是否要拒絕 anonymous 上傳。如要開放匿名使用者上傳檔案的話,就設定成 no。另外要允許上傳目錄時,除了這裡要
# 設定成 no 以外,AnonymousCanCreateDirs 參數需設定成 yes 才行。

# Disallow the CHMOD command. Users can't change perms of their files.
#NoChmod       yes
# 是否要拒絕使用者執行 chmod 指令來修改權限。

# Allow users to resume and upload files, but *NOT* to delete them.
#KeepAllFiles     yes
# 當設定成 yes 時,表示使用者無法刪除伺服器上的檔案。

# Automatically create home directories if they are missing
#CreateHomeDir    yes
# 當使用者家目錄不存在,是否要自動建立起來。

# This option is useful with servers where anonymous upload is allowed. As /var/ftp is in /var, it save some
# space and protect the log files. When the partition is more that X percent full,new uploads are disallowed.
MaxDiskUsage     99
# 假使我們將 anonymous 的家目錄改成 /var/ftp (修改 /etc/passwd ),然後又設定允許匿名使用者上傳,那這個參數就很好用
# 了,因為當 /var partition 的使用空間達 99% 時,就不允許匿名使用者再上傳資料,不然 /var/log 目錄下的那些記錄檔可就
# 無法持續記錄一些重要資訊了。

# Set to 'yes' if you don't want your users to rename files.
NoRename        yes
# 是否要拒絕使用者修改檔案目錄的名稱 (重新命名)。

另外,也可以將這個目錄連到apache2 web server上
sudo ln -s /home/ftp/ftp用戶名稱 /var/www

0 意見: