AMIシステムにスクリプトを設定してディレクトリを作成する(vsftpd、pam、mysql)

AMIシステムにスクリプトを設定してディレクトリを作成する(vsftpd、pam、mysql)

Amazon 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**

今私は混乱しています。

知識が不足してスクリプトファイルを作成する必要があるのか​​、それとも既にボックスに含まれていて修正すればよいのか分かりません。私はNickが自分の例を公開したときに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

今すぐボックスにログインできますが、データベースに対して認証されていないようで、ユーザーファイルが作成された場所は表示されません。私の考えでは、彼らの台本に何か問題があると思います。 nickが同様の質問に回答し、Ubuntuの質問も見つけました。

https://askubuntu.com/questions/406486/vsftpd-hanging-when-using-pam-exec-or-pam-script/408346#408346?newreg=bd1b0e5dec104d1abe5e91800d3a773

よろしくお願いします。

編集する

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

以下はいくつかのアイデアです。

1) ユーザー homedir を生成するには、pam_script モジュールまたは同様のモジュールを使用する必要があるかもしれません。 pamモジュールpam_mkhomedirは、passwdファイル(またはldapなど)に表示される内容に基づいてホームディレクトリに基づいており、複数のuid / gid / homedirマッピングを想定しています。あなたのユーザーはシステム認識パスワードエントリに基づいていませんが、mysqlで仮想でvsftpの世界でうまく動作します。

pam_script モジュールはディストリビューションに含まれていない可能性が高く、外部パッケージを検索するか、ソースからパッケージをコンパイルする必要があります。

2) $PAM_USER は pam モジュールに渡される環境変数です。 pam_scriptを使用して、どのような場合でもPAM_AUTHTOKとPAM_USERをどのように渡すことができますか?

3)スクリプトセクションに達すると、/etc/pam-script/pam_script_authがディストリビューションの非標準の場所に書き込まれる可能性があるため、selinuxエラーを確認してください。

4) コマンドに関連するエラーを受け取るかどうかを確認できるように、 /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

頑張って、

ギャップ

おすすめ記事