[轉貼][心得] proftpd 如何建立獨立帳號

常言道:『飲水思源』,在 Open Source 的世界裡,我們常常需要別人的幫助,但是在您有所心得的時候請記得分享給大家,『幫助人是快樂的喔』。歡迎您在使用 debian 的過程中的任何心得分享給大家。

[轉貼][心得] proftpd 如何建立獨立帳號

文章moto » 週四 2月 13, 2003 1:30 pm

※ 本文轉錄自 [LinuxApps] 看板

作者: Admin (我是誰..) 看板: LinuxApps
標題: [心得] proftpd 如何建立獨立帳號
時間: Sun Nov 4 11:48:48 2001


小弟最近無聊想架個 FTP 給同學上來, 但是又不想在系統上開帳號,
經過前輩指點, 可以使用 proftpd 來達成, 以下就是小弟最近的安裝設定心得,
可以不用在系統上開帳號, 直接建立獨立的使用者的範例, 還請各位前輩指教..

1.先用 tarball 安裝 proftpd 程式, 因為前輩指點 rpm package 是有針對系統的,
每個有使用 rpm 的 linux dist 所使用命名的 rpm 機制都不同, 所以不能混用亂裝..
(安裝步驟就不多做介紹, 網路上已經有很多中文說明)

2.安裝完成後, 主要就是設定 /etc/proftpd.conf 這個檔案,

# 目錄架構
# [/home/ftp]
# .
# |-- proftpd.group
# |-- proftpd.user
# `-- pub
# |-- Download
# |-- Filebase
# `-- Upload
#
# proftpd.group, proftpd.user, /home/ftp 請設定權限為 400 以防別人看到密碼檔案,

# 其他目錄設為 755 即可, 但是所有目錄檔案使用者與群組都要改成 ftp, 才能正確執行
.

# ----[proftpd.user]----
# 匿名使用者
ftp::14:50:FTP User:/home/ftp/pub:

# 系統上的使用者 (這裡也要設才能登陸)
admin:QJ.6M9I5hvBFs:501:503:user1:/home/admin:/bin/tcsh

# 只屬於 proftpd 的使用者
dog:ncZR71xl5BOZU:14:60:guest1:/home/ftp/pub:/bin/tcsh
cat:RAPG3VDhTP3cs:14:60:guest2:/home/ftp/pub:bin/tcsh
# -=-=[EOF]=-=-

# ----[proftpd.group]----
guest:x:50:
user:x:60:
# -=-=[EOF]=-=-

# ----[ /etc/proftpd.conf ]----
ServerName "Magic ABC FTP Site"
ServerType inetd
DefaultServer on
DefaultRoot ~

# 使用者與群組認證檔案的位置.
AuthUserFile /home/ftp/proftpd.user
AuthGroupFile /home/ftp/proftpd.group

# Port 21 is the standard FTP port.
Port 21

# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask 022

# 設成 30 可以防止 DoS 攻擊, 但是只有 standalone 模式下有效.
MaxInstances 30

# 這裡最好設定 ftp 來啟動 proftpd, 有些範例都是用 nobody 還啟動,
# 但是這樣的話, 就必須把目錄設使用者, 群組設成 nobody 才能把權限開為 400,
# 不讓其他使用者可以看到密碼檔案內容.
User ftp
Group ftp

# 開啟覆寫還有續傳的功能.
<Directory /*>
AllowOverwrite on
AllowStoreRestart on
</Directory>

# 設定匿名且免密碼的登陸帳號.
<Anonymous ~ftp>
User ftp
Group guest
AnonRequirePassword off
RequireValidShell off

# 讓使用者用 anonymous 帳號登陸等於用 ftp 帳號登陸.
UserAlias anonymous ftp

# 一次同時最多匿名登陸上限.
MaxClients 5

# 設定登陸時的訊息檔名稱, 還有切換目錄的訊息檔名稱.
DisplayLogin welcome.msg
DisplayFirstChdir .message

# 先關閉所有目錄的讀寫權限, 細部稍後再做設定.
<Directory *>
<Limit WRITE READ>
DenyAll
</Limit>
</Directory>

# 允許使用者在 Upload 目錄上傳.
<Directory Upload>
<Limit STOR MKD>
AllowAll
</Limit>
<Limit READ RMD DELE>
DenyAll
</Limit>
</Directory>

# 允許使用者在 Download 目錄下載.
<Directory Download>
<Limit READ>
AllowAll
</Limit>
</Directory>
</Anonymous>

# 設定系統之外的使用者帳號 (只限 proftpd 登陸)
<Anonymous ~guest>
User ftp
Group user

# 開啟密碼檢查.
AnonRequirePassword on
RequireValidShell off

# 允許讀寫所有目錄.
<Directory *>
<Limit WRITE READ>
AllowAll
</Limit>
</Directory>
</Anonymous>
# -=-=[EOF]=-=-

3. 經過以上的範例, 使用者可以用匿名登陸, 並且不檢查密碼, 但是只能讀寫限定的目錄,

如果使用者以 dog 或是 cat 帳號登陸, 需要輸入密碼, 但是就可以讀寫所有目錄,
如果使用者以 admin 帳號登陸需要輸入密碼, 然後就會跑到自己家的目錄下面...

4. 這篇只是教學建立獨立帳號的範例, 我那讀寫權限設定很陽春, 不要照著模仿喔..:)
其他 proftpd 還可以設定很多種全限, 像是鎖ip, 鎖user, 容量, 流量, 等等..
就先不在這多做介紹, 還請大家多多見諒...

by Admin 2001/11/3
頭像
moto
摩托學園站長
摩托學園站長
 
文章: 2808
註冊時間: 週二 9月 03, 2002 3:37 am
來自: 台北

Re: [轉貼][心得] proftpd 如何建立獨立帳號

文章iceman » 週一 2月 17, 2003 3:25 pm

moto 寫:※ 本文轉錄自 [LinuxApps] 看板

作者: Admin (我是誰..) 看板: LinuxApps
標題: [心得] proftpd 如何建立獨立帳號
時間: Sun Nov 4 11:48:48 2001


小弟最近無聊想架個 FTP 給同學上來, 但是又不想在系統上開帳號,
經過前輩指點, 可以使用 proftpd 來達成, 以下就是小弟最近的安裝設定心得,
可以不用在系統上開帳號, 直接建立獨立的使用者的範例, 還請各位前輩指教..

1.先用 tarball 安裝 proftpd 程式, 因為前輩指點 rpm package 是有針對系統的,
每個有使用 rpm 的 linux dist 所使用命名的 rpm 機制都不同, 所以不能混用亂裝..
(安裝步驟就不多做介紹, 網路上已經有很多中文說明)

2.安裝完成後, 主要就是設定 /etc/proftpd.conf 這個檔案,

# 目錄架構
# [/home/ftp]
# .
# |-- proftpd.group
# |-- proftpd.user
# `-- pub
# |-- Download
# |-- Filebase
# `-- Upload
#
# proftpd.group, proftpd.user, /home/ftp 請設定權限為 400 以防別人看到密碼檔案,

# 其他目錄設為 755 即可, 但是所有目錄檔案使用者與群組都要改成 ftp, 才能正確執行
.

# ----[proftpd.user]----
# 匿名使用者
ftp::14:50:FTP User:/home/ftp/pub:

# 系統上的使用者 (這裡也要設才能登陸)
admin:QJ.6M9I5hvBFs:501:503:user1:/home/admin:/bin/tcsh

# 只屬於 proftpd 的使用者
dog:ncZR71xl5BOZU:14:60:guest1:/home/ftp/pub:/bin/tcsh
cat:RAPG3VDhTP3cs:14:60:guest2:/home/ftp/pub:bin/tcsh
# -=-=[EOF]=-=-

# ----[proftpd.group]----
guest:x:50:
user:x:60:
# -=-=[EOF]=-=-

# ----[ /etc/proftpd.conf ]----
ServerName "Magic ABC FTP Site"
ServerType inetd
DefaultServer on
DefaultRoot ~

# 使用者與群組認證檔案的位置.
AuthUserFile /home/ftp/proftpd.user
AuthGroupFile /home/ftp/proftpd.group

# Port 21 is the standard FTP port.
Port 21

# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask 022

# 設成 30 可以防止 DoS 攻擊, 但是只有 standalone 模式下有效.
MaxInstances 30

# 這裡最好設定 ftp 來啟動 proftpd, 有些範例都是用 nobody 還啟動,
# 但是這樣的話, 就必須把目錄設使用者, 群組設成 nobody 才能把權限開為 400,
# 不讓其他使用者可以看到密碼檔案內容.
User ftp
Group ftp

# 開啟覆寫還有續傳的功能.
<Directory /*>
AllowOverwrite on
AllowStoreRestart on
</Directory>

# 設定匿名且免密碼的登陸帳號.
<Anonymous ~ftp>
User ftp
Group guest
AnonRequirePassword off
RequireValidShell off

# 讓使用者用 anonymous 帳號登陸等於用 ftp 帳號登陸.
UserAlias anonymous ftp

# 一次同時最多匿名登陸上限.
MaxClients 5

# 設定登陸時的訊息檔名稱, 還有切換目錄的訊息檔名稱.
DisplayLogin welcome.msg
DisplayFirstChdir .message

# 先關閉所有目錄的讀寫權限, 細部稍後再做設定.
<Directory *>
<Limit WRITE READ>
DenyAll
</Limit>
</Directory>

# 允許使用者在 Upload 目錄上傳.
<Directory Upload>
<Limit STOR MKD>
AllowAll
</Limit>
<Limit READ RMD DELE>
DenyAll
</Limit>
</Directory>

# 允許使用者在 Download 目錄下載.
<Directory Download>
<Limit READ>
AllowAll
</Limit>
</Directory>
</Anonymous>

# 設定系統之外的使用者帳號 (只限 proftpd 登陸)
<Anonymous ~guest>
User ftp
Group user

# 開啟密碼檢查.
AnonRequirePassword on
RequireValidShell off

# 允許讀寫所有目錄.
<Directory *>
<Limit WRITE READ>
AllowAll
</Limit>
</Directory>
</Anonymous>
# -=-=[EOF]=-=-

3. 經過以上的範例, 使用者可以用匿名登陸, 並且不檢查密碼, 但是只能讀寫限定的目錄,

如果使用者以 dog 或是 cat 帳號登陸, 需要輸入密碼, 但是就可以讀寫所有目錄,
如果使用者以 admin 帳號登陸需要輸入密碼, 然後就會跑到自己家的目錄下面...

4. 這篇只是教學建立獨立帳號的範例, 我那讀寫權限設定很陽春, 不要照著模仿喔..:)
其他 proftpd 還可以設定很多種全限, 像是鎖ip, 鎖user, 容量, 流量, 等等..
就先不在這多做介紹, 還請大家多多見諒...

by Admin 2001/11/3

多謝分享.........thx
試了一下,user的建立,是用"ftpasswd"這個perl script
簡單的用法如下:
sudo ftpasswd --passwd --name=$virtual_user --gid=$real_user_gid --uid=$real_user_uid --home=$virtual_user_home --shell=/bin/false --file=/output_file/proftpd.passwd

如果用system的ftp,當ftp uid = 101, ftp gid = 102,建立virtual_user,在/home/virtual_user登陸......................

mkdir -p /home/virtual_user && chown -R ftp:ftp /home/virtual_user
sudo ftpasswd --passwd --name=virtual_user --uid=101 --gid=102 --home=/home/virtual_user --shell=/bin/false --file=/etc/proftpd.passwd
打兩次默碼

vi proftpd.conf
----------------------------------------------------------------------------------
ServerName "Magic ABC FTP Site"
ServerType inetd
DefaultServer on
DefaultRoot ~
............................
.............................
#不要張默碼檔,放在/home/ftp裹呀
AuthUserFile /etc/proftpd.passwd
.............................
.............................
<Anonymous ~virtual_user>
# user是virtual_user,不是ftp
#否則如下的WRITE/READ=DenyAll會無效
User virtual_user
Group ftp
AnonRequirePassword on
RequireValidShell off

<Directory *>
<Limit WRITE READ>
DenyAll
</Limit>
</Directory>
</Anonymous>
------------------------------------------------------------------------------------
cat /etc/ftpuser
---------------------------------------------------------------------------------
root
someuser
.......
........
ftp
-----------------------------------------------------------------------------------
ftp | root | someuser就無法用ftp登入,
但virtual_user一樣可以用ftp的身份登入
iceman
可愛的小學生
可愛的小學生
 
文章: 15
註冊時間: 週五 11月 22, 2002 11:52 pm

文章slog » 週五 3月 04, 2005 9:01 am

那依照以上的方式, 是否, 原系統的使用者就不能用 ftp 囉?
slog
懵懂的國中生
懵懂的國中生
 
文章: 133
註冊時間: 週四 12月 02, 2004 12:18 am
來自: 水深火熱的地方

文章ricky » 週五 3月 04, 2005 12:48 pm

slog 寫:那依照以上的方式, 是否, 原系統的使用者就不能用 ftp 囉?


我這兩天試的結果是沒問題的....
不過登入時候稍微慢一點.....
ricky
可愛的小學生
可愛的小學生
 
文章: 72
註冊時間: 週五 10月 10, 2003 8:17 pm

文章slog » 週五 3月 04, 2005 2:17 pm

我一直試不太出來..@@"
我的 proftpd.conf 如下:
代碼: 選擇全部
#
# /etc/proftpd.conf -- This is a basic ProFTPD configuration file.
# To really apply changes reload proftpd after modifications.
#

ServerName         "SD FTP"
ServerType         standalone
DeferWelcome         off

MultilineRFC2228      on
DefaultServer         on
ShowSymlinks         on

TimeoutNoTransfer      600
TimeoutStalled         600
TimeoutIdle         1200

DisplayLogin                    welcome.msg
DisplayFirstChdir               .message
ListOptions                   "-l"

DenyFilter         \*.*/

# 使用者與群組設定檔的位置
AuthUserFile         /home/ftp/proftpd.user
#AuthGroupFile         /home/ftp/proftpd.group

# Port 21 is the standard FTP port.
Port            21

# To prevent DoS attacks, set the maximum number of child processes
# to 30.  If you need to allow more than 30 concurrent connections
# at once, simply increase this value.  Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd)
MaxInstances         30

# Set the user and group that the server normally runs at.
User            nobody
Group            nogroup

# Umask 022 is a good standard umask to prevent new files and dirs
# (second parm) from being group and world writable.
Umask            022  022

# 覆寫與續傳的功能
AllowOverwrite         on
AllowStoreRestart      on

# FTP 的使用者帳號
<Anonymous ~ftp>
User            ftp
Group            ftp

# 檢查密碼
AnonRequirePassword      on
RequireValidShell      off

# 關閉所有目錄寫的權限
<Directory *>
<Limit WRITE>
DenyAll
</Limit>
</Directory>

# 允許 upload 上傳
<Directory upload>
<Limit STOR MKD RMD DELE>
AllowAll
</Limit>
</Directory>

</Anonymous>


另外我用
ftpasswd --passwd --name=aaa --uid=103 --gid=1001 --home=/home/ftp --shell=/bin/false --file=/home/ftp/proftpd.user
加了一個 aaa 的帳號, 不過還是沒辦法登入..

另外我系統是開了一個 ftp 的帳號和 ftp 的群組,
其 uid 是 103 , gid 是 1001 ..

還有一個問題, 若是 User 已經有一個叫 slog 的話, 那是不是
ftp 的 vitual 的 user 就不能有 slog 這個帳號?
slog
懵懂的國中生
懵懂的國中生
 
文章: 133
註冊時間: 週四 12月 02, 2004 12:18 am
來自: 水深火熱的地方

文章ricky » 週五 3月 04, 2005 3:07 pm

slog 寫:我一直試不太出來..@@"
我的 proftpd.conf 如下:

另外我用
ftpasswd --passwd --name=aaa --uid=103 --gid=1001 --home=/home/ftp --shell=/bin/false --file=/home/ftp/proftpd.user
加了一個 aaa 的帳號, 不過還是沒辦法登入..

另外我系統是開了一個 ftp 的帳號和 ftp 的群組,
其 uid 是 103 , gid 是 1001 ..

還有一個問題, 若是 User 已經有一個叫 slog 的話, 那是不是
ftp 的 vitual 的 user 就不能有 slog 這個帳號?


第一個問題,你可能要自己試試看
檢查一下權限的問題,我也不是很清楚

第二個問題
根據我試的結果....
virtual user可以跟system user同名...
不過有個蠻有趣的情況
我替virtual user設了一個新的密碼
在登入的時候,竟然兩個密碼都可以work
不過access時是以ftp中設定的user

如果沒設同名的virturl user 則access ftp的user就是自己
ricky
可愛的小學生
可愛的小學生
 
文章: 72
註冊時間: 週五 10月 10, 2003 8:17 pm

文章slog » 週六 3月 05, 2005 12:32 am

權限是指 ftp 的權限否?
我懷疑是這個部份
代碼: 選擇全部
# Set the user and group that the server normally runs at.
User            nobody
Group            nogroup

是否要將 User 和 Group 都改為 ftp , 但是感覺這個寫 normally runs
應該是指 system user 的部份..

喔..我的 proftpd 是 debian 本身的, 非原文說的用 tarball 的方式安裝的, 這樣會有差嗎? fO.o
slog
懵懂的國中生
懵懂的國中生
 
文章: 133
註冊時間: 週四 12月 02, 2004 12:18 am
來自: 水深火熱的地方

文章ricky » 週六 3月 05, 2005 1:52 am

代碼: 選擇全部
ServerName "Private Ftpd"
ServerType standalone

LogFormat awstats "%t   %h      %u      %m      %f      %s      %b"

<Global>
Umask 022
AuthUserFile /home/ftp/proftpd.passwd
AuthGroupFile /etc/group
</Global>

<VirtualHost AAA.BBB.CCC.DDD>
ServerName "Common"
ServerIdent off
Port 21
PassivePorts 49149 65534
MaxClients 30 "The server is full, hosting %m users"
MaxClientsPerHost 2 "MaxClientsPerHost 2"
DefaultRoot ~ ftpgroup

ExtendedLog /var/log/xferlog read,write awstats
TransferLog none

<Limit LOGIN>
Allow from all
</Limit>

<Directory /pub>
  HideNoAccess on
</Directory>
<Directory /pub/pub1/upload>
  <Limit Write>
    AllowAll
  </Limit>
</Directory>
#MasqueradeAddress None
ServerAdmin Admin@this.domain
Umask 022
TimesGMT off
MaxLoginAttempts 3
TimeoutLogin 300
TimeoutNoTransfer 120
TimeoutIdle 120
User nobody
Group nogroup
DirFakeUser on nobody
DirFakeGroup on nobody
DefaultTransferMode binary
AllowForeignAddress on
DeleteAbortedStores off
AllowRetrieveRestart on
AllowStoreRestart on
TransferRate RETR 500
</VirtualHost>


這是我的設定參考看看....
ricky
可愛的小學生
可愛的小學生
 
文章: 72
註冊時間: 週五 10月 10, 2003 8:17 pm

文章lueo » 週六 3月 05, 2005 3:48 pm

可以找一套叫 gproftpd 的圖形設定程式來用用
裡面的選項改了之後可以同時查看文字檔設定的更動
lueo
懵懂的國中生
懵懂的國中生
 
文章: 121
註冊時間: 週六 1月 31, 2004 11:52 pm

文章slog » 週一 3月 07, 2005 9:35 am

ricky 大大的設定檔我直接套用也沒有辦法..@@"
不過, 您的設定檔內, 設定了兩次 ServerName ..
這樣好像會有 message 跑出來..說 port 21 已經被第一個 ServerName 給使用了..

gproftpd 的圖形設定..
可是, 小弟我沒有裝 X-window ..^^"
slog
懵懂的國中生
懵懂的國中生
 
文章: 133
註冊時間: 週四 12月 02, 2004 12:18 am
來自: 水深火熱的地方

文章ricky » 週一 3月 07, 2005 10:19 pm

請確認一下你的 password檔的權限能不能讓proftpd讀取...
我剛才測了一下...權限沒打開時...
只有system user可以登入
ricky
可愛的小學生
可愛的小學生
 
文章: 72
註冊時間: 週五 10月 10, 2003 8:17 pm

文章slog » 週四 3月 10, 2005 12:12 pm

我的 password 檔的 owner 和 group 都是用 ftp 啊..@@"
slog
懵懂的國中生
懵懂的國中生
 
文章: 133
註冊時間: 週四 12月 02, 2004 12:18 am
來自: 水深火熱的地方

文章slog » 週六 3月 12, 2005 1:30 pm

ricky 大大..
我想請問一下..
你的 proftpd 是透過 apt-get 做 install 的還是跟首文一樣,
是利用 tarball 的方式自己安裝呢?

And, 我剛剛把 tar.gz 檔抓回來看看, 發現 make 好後, 沒有 ftpasswd 這個 script 說, 那這樣, proftpd.user 的密碼該要怎麼設定勒? fO.o

一直搞不出來很煩, 想把自己電腦的東西移到那台 Debian 上面, 不然電腦只有 P-II 500 , 再加上 Serv-U , 電腦都快掛點了..@@"
slog
懵懂的國中生
懵懂的國中生
 
文章: 133
註冊時間: 週四 12月 02, 2004 12:18 am
來自: 水深火熱的地方


回到 share

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客

cron