vsftpd-PAM-ディレクトリを作成するためのMySQLおよびpam_mkhomedir


11

PAMを使用してmysql DBに接続する仮想ユーザーでvsftpdを正常に使用しています。ここで、成功したvsftpd接続でユーザーディレクトリの作成を自動化したいと思います。

/etc/pam.d/vsftpdの構成は次のとおりです。

#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
auth required pam_mysql.so verbose=1 user=root passwd=mypass host=localhost db=mydb table=mytable usercolumn=username passwdcolumn=password crypt=3
account required pam_mysql.so verbose=1 user=root passwd=mypass host=localhost db=mydb table=mytable usercolumn=username passwdcolumn=password crypt=3
session required pam_mkhomedir.so skel=/home/skel/ umask=0022 debug

pam_mkhomedirを追加すると、ログに他のメッセージがないディレクトリを作成できないことが示されるようになりました。したがって、明らかに適用されていません。他に必要なものはありますか?

私の/etc/vsftpd/vsftpd.conf:

# No ANONYMOUS users allowed
anonymous_enable=NO
# Allow 'local' users with WRITE permissions (0755)
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=NO
xferlog_enable=YES
connect_from_port_20=YES

# define a unique user on your system which the
# ftp server can use as a totally isolated and unprivileged user.
nopriv_user=vsftpd
chroot_local_user=YES
listen=YES

# here we use the authentication module for vsftpd to check users name and passw
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
userlist_deny=YES
# here the vsftpd will allow the 'vsftpd' user to login into '/home/vsftpd/$USER directory
guest_enable=YES
guest_username=vsftpd
local_root=/home/vsftpd/$USER
user_sub_token=$USER
virtual_use_local_privs=YES
download_enable=NO

force_local_data_ssl=NO
force_local_logins_ssl=NO

# PASV - passive ports for FTP 
pasv_enable=YES
pasv_min_port=14000
pasv_max_port=14100

vsftpd.confでこれが必要だと言っている投稿を見たので、これも試してみました。

session_support=YES

しかし、ログが示すように、今ではもう認証されていないようです:

Mar 24 00:46:16 ip-10-212-239-40 vsftpd[1962]: pam_keyinit(vsftpd:session): Unable to look up user "user1"
Mar 24 00:46:16 ip-10-212-239-40 vsftpd[1962]: pam_mkhomedir(vsftpd:session): User unknown.

これは、ディレクトリをすでに作成していてもです。今では誰も入ることができません。

何か案は?


こんにちは、この問題を解決できましたか?
ジョージ

@Georgeまったく違います。
トム

私は非常に異なる方法で問題を解決しました。vsftpdから離れてpureftpを使いました。これらすべての問題なしに、数時間でセットアップして実行できます。完全に動作します。
ジョージ

/ home / vsftpdはvsftpdによって所有されていますか?
ルカギベリ

回答:


0

PAMモジュールによるユーザールックアップを成功させるには、でMySQLのNSSモジュールを有効にする必要がありますnsswitch.conf(5)nss_mysqlあなたの友だちです。


これに関して提供できる参考資料はありますか?nss-mysql私の文脈で必要なことについて何も見つけられないようです?
トム

pam_mkhomedir作成するユーザーのホームディレクトリへのパスをどのように把握するのですか?ユーザーを解決するために使用するデータベースをどのように知るのですか?NSSはその情報を提供します。あなたの場合、ユーザーデータベースがMySQLデータベースに保存されていると仮定すると、nss_mysqlが必要になります。
アシッシュシュクラ

私はこのライブラリについて何かを見つけようとしています。あなたが提供したリンクは、ドキュメントのない非常に古いプロジェクトです。私がこれをインストールしても、nssswitch.confに何を入れるかについては何も示しません。3つのパラメーターを含むことができることのみ。どんな種類のガイダンスも提供できますか?pam_mysqlはnss-mysqlと同じもののように聞こえますか?mysql dbを使用してvsftpd仮想ユーザーで認証するpam_mysqlが動作しています。
トム

PAMNSSと同じではありません。PAMは認証を対象としていますが、NSSの目的は名前(ホスト名、ユーザー名など)を解決することです。ほとんどのディストリビューションはnss_mysql、例えばDebianや派生物のためにパッケージを提供していlibnss-mysqlます。そして、はい、それは半年のために更新されていませんが、うまく動作します。モジュールをインストールして構成し、に追加すると、nsswitch.conf(5)作業が開始されます。
アシッシュシュクラ

ディストリビューションからlibnss-mysqlを追加しました。箱から出してみましたが、何も機能していません。nsswitch.confで何を変更する必要があるかについてのアイデアはありますか?
トム

0

あなたは試してみることができますpam_script-それは、ユーザーセッションが開かれた後に任意のシェルスクリプトを実行できるようにするPAMモジュールです(とりわけ)。

あなたは見つけることができるpam_scriptここに:https://github.com/jeroennijhof/pam_scriptを。また、少なくともapt-getを介してインストールできたので、パッケージマネージャーを介してインストールできる必要があります。

vsftpdはそれが認証を拒否したときに、少なくともpam_scriptといくつかの問題を抱えているように見えるよう、注意してください、私の未解決の質問を参照してください。失敗したpam_script認証後にvsftpdがフリーズし。ただし、あなたの場合、それは問題ではないはずです。


0

簡単な答えは、システム資格情報とサービス資格情報を混合しているため、vsftpdの仮想ユーザーでpam_mkhomedirを使用するべきではないということです。

pam_mkhomedirは、ユーザーのローカルディレクトリを作成するためのもので、ユーザーがシステムで定義されていることを前提としています。vsftpdの仮想ユーザーは(設計上)システムユーザーではないため、vsftpdサービス以外の特権はありません(システムはこれらのユーザーを認識しません)。認証にPAMを使用することは、ユーザー資格情報(ユーザー名+パスワード==> OK)の検証のみを引き渡すことです。vsftpdはPAMでシステムユーザーを使用するように構成することもできるため、これは仮想ユーザーを使用するときに混乱を招く可能性があります。

仮想ユーザーのホームディレクトリを作成するときは、vsftpdサービスアカウント/グループをフォルダーの所有者にし、vsftpdサービスの適切な権限で、vsftpdサービスパス内に「仮想ホームディレクトリ」を配置する必要があります。どのような問題を解決しようとしているのかわかりませんが、ユーザーセッションをchrootしているので、ユーザー間の分離を作成しようとしていると思います。ログインするには、ユーザーデータベースに仮想ユーザーを作成する必要があるので、同時にホームディレクトリを生成してみませんか?仮想ユーザーデータベースとvsftpdユーザー仮想ホームフォルダーの一貫性を保つために、ユーザーの追加/変更/削除のスクリプトを使用してこれを実行しました。YMMV。

仮想ユーザーでは、vsftpd内でのみ作業しており、システムでは作業していないことを覚えておいてください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.