在 AMI 機器上設置腳本以創建目錄 - vsftpd、pam、mysql
我正在嘗試在亞馬遜 ami 64 位機器上設置 vsftpd,免費層微型。
按照這些說明,http://wiki.centos.org/HowTos/VirtualVsFtpd我已經成功地啟動並執行了我的 ftp。只要我手動創建使用者主目錄,它就可以完美執行。
需要幫助自動設置使用者主目錄。對於 ftp 客戶端
我想做的下一件事是設置一個腳本來自動設置使用者主目錄,而不是手動設置。我在這裡找到了一些文件,http ://t3chnick.blogspot.com/2011/12/vsftp-mysql-virtual-with-auto-create.html我花了幾個小時試圖讓它工作但沒有任何成功。
像 nicks 文件一樣,我修改了我的
/etc/pam.d/vsftpd
文件以包含以下程式碼行。#%PAM-1.0 session optional pam_keyinit.so force revoke # Auth in MySQL auth requisite pam_mysql.so user=vsftpd-ro passwd=readonly host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=0 auth required pam_script.so onerr=success dir=/etc/pam-script**
現在我的困惑
由於我缺乏知識,我不確定我是否應該創建腳本文件,或者它是否已經包含在盒子中,我只需要修改它。我假設當尼克發布他的範例時,他在 32 位機器上創建了腳本,但在他的文章底部,他談到了 64 位腳本。
無論如何,當我嘗試導航到時,
$ cat /etc/pam-script/pam_script_auth
我發現腳本和pam-script
目錄都不存在。如果我嘗試創建它,我會收到權限被拒絕錯誤,除非我使用sudo vi /etc/pam-script/pam_script_auth
現在再一次,我不確定手動創建腳本是解決這個問題的正確方法。我不確定我是否應該下載一些東西,或者如果它們是一個現有的腳本,或者是否在一個 64 位的盒子中需要修改。無論如何,在手動創建它並授予腳本讀取、寫入、執行的權限後,我最終得到了這個。
$ cat /etc/pam-script/pam_script_auth
pam_script_auth
#!/bin/sh if [ ! -d "/opt/ftp/$PAM_USER" ]; then /usr/bin/env mkdir /opt/ftp/$PAM_USER /usr/bin/env chown ftp:ftp /opt/ftp/$PAM_USER fi
現在我仍然可以登錄該框,但它似乎無法對數據庫進行身份驗證,而且我沒有看到使用者文件的創建位置。我猜他們的腳本有問題。我還發現了以下 ubuntu 問題,其中尼克回答了類似的問題。
提前致謝。
編輯
jayhendren 建議使用 pam_mkhomedir.so 而不是腳本。
如果我錯了,請糾正我,但我的假設是這樣配置我
/etc/pam.d/vsftpd
的#%PAM-1.0 session optional pam_keyinit.so force revoke # Auth in MySQL auth requisite pam_mysql.so user=vsftpd-ro passwd=readonly host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=0 session required pam_mkhomedir.so skel=/opt/ftp/ umask=0022 debug account required pam_mysql.so user=vsftpd-ro passwd=readonly host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=0
有人可以驗證此配置嗎?
以下是一些想法:
1)您可能需要使用 pam_script 模組或類似的東西來創建使用者主目錄。pam 模組 pam_mkhomedir 基於在 passwd 文件(或 ldap 等)中看到的主目錄,並假設多個 uid/gid/homedir 映射。您的使用者在 mysql 中是虛擬的,而不是基於系統知道的密碼條目,並且可以在 vsftp 世界中玩得很好。
pam_script 模組很可能不包含在您的發行版中,您可能需要查找外部包或從原始碼編譯包。
$PAM_USER 是傳遞給 pam 模組的環境變數: 使用 pam_script,如何在所有情況下傳遞 PAM_AUTHTOK 和 PAM_USER?
當您進入腳本部分時,檢查 selinux 錯誤,因為 /etc/pam-script/pam_script_auth 可能會被打屁股寫入您的發行版的非標準位置。
將 /etc/pam-script/pam_script_auth 中的輸出發送到日誌文件,以便查看是否收到與命令相關的錯誤。
$ cat /etc/pam-script/pam_script_auth #!/bin/sh echo "I got here" >> /tmp/script.out 2>&1 if [ ! -d "/opt/ftp/$PAM_USER" ]; then /usr/bin/env mkdir /opt/ftp/$PAM_USER >> /tmp/script.out 2>&1 /usr/bin/env chown ftp:ftp /opt/ftp/$PAM_USER >> /tmp/script.out 2>&1 fi
祝你好運,
缺口