好吧,我正在嘗試透過 SQL 驗證虛擬使用者並將其重定向/監禁到他們的目錄,從而複製 Web 託管公司的基本設定。我已經完成了這裡的大部分目標除了將它們重定向/監禁到其目錄之外。
目錄儲存在其中/home/ftp
,這就是DefaultRoot
設定的內容。我希望每個單獨的用戶都擁有並被監禁在自己的目錄中。homedir
SQL中的設定似乎沒有任何效果。使用任何使用者登入 FTP 後,都會登入DefaultRoot
沒有目錄限製或重定向的情況。
我該如何完成最後一項任務?
答案1
嘗試註解掉 DefaultRoot 我認為它可能會覆蓋從資料庫後端讀取的值。
編輯:
如果設定了 DefaultRoot 並且設定了除 ~ 以外的任何內容,則使用者將被監禁在以 DefaultRoot 為根的樹中。
如果 DefaultRoot 是 ~ 那麼使用者將被監禁在以其主目錄為根的樹中。
答案2
除瞭如上所述設定 DefaultRoot ~ 之外,您的 SQL 配置是什麼樣的 - 您實際上是從資料庫中提取它嗎?
DefaultRoot ~
<IfModule mod_dso.c>
LoadModule mod_sql.c
LoadModule mod_sql_mysql.c
</IfModule>
SQLLogFile /var/log/proftpd/mod_sql.log
PersistentPasswd off
AuthPAM off
AuthUserFile /some/path/to/dummy/passwd.ftp
AuthGroupFile /some/path/to/dummy/group.ftp
AuthOrder mod_sql.c mod_auth_file.c
SQLConnectInfo proftpd@localhost:3306 userdatabase password
SQLAuthTypes Backend Crypt Plaintext OpenSSL
SQLUserInfo user user_id password NULL NULL ftp_homedir NULL
SQLAuthenticate users
SQLDefaultUID 14
SQLDefaultGID 50
SQLMinUserUID 13
SQLMinUserGID 49
這是一個或多或少簡潔的範例,從資料庫進行 100% 驗證並將它們監禁到資料庫中列出的主目錄。如果您還想在他們登入時動態建立他們的主目錄(如果您將它們新增至資料庫並且不想登入伺服器來執行此操作,則很有用),您可以新增:
CreateHome on dirmode 0755
...配置。上面列出的另外兩個虛擬檔案與您在 Red Hat/Centos 伺服器上安裝的 ProFTPd 相符:
密碼檔ftp
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
組.ftp
ftp:x:50:
nobody:x:99:
這一切都使得您的虛擬使用者在硬碟上的 UID/GID 為 14:50,無論其登入使用者名稱為何。