sambaのパスワードをApacheから使う on CentOS
Apacheで認証をかけたいけど、そのユーザアカウントはsambaと共通にしたい。というシチュエーションがあったので調べてみると、smbuserなる方法があるらしい。というわけで早速使ってみた。
…らハマった。記事の環境はGentoo、こちらはCentOS。
下準備
libtdb, libtdb-develを入れておく。
# yum install libtdb libtdb-devel
記事の環境では、e2progsのtdbを使っているようだが、CentOSだとe2progs-develにもext2fs/tdb.hがない。ので素直にlibtdbを使う。
smbauth.cpp
コンパイル前に以下のように変更。
#include <ext2fs/tdb.h>
を
#include <signal.h> #include <tdb.h>
に。
コンパイルコマンドは
PRIVATE_DIR=`testparm -s --parameter-name="private dir"` g++ smbauth.cpp -DPRIVATE_DIR=\"$PRIVATE_DIR\" -lssl -ltdb -o smbauth
でOK。suidなどの設定も忘れずに。
unixgroup.cpp
こちらは記事のままでOK。
mod_authnz_external
こちらからインストール。INSTALLファイルに方法が書いてあるのでおとなしく従いましょう。
設定
こんな感じで書けます。
DefineExternalAuth smbauth pipe /usr/sbin/smbauth DefineExternalGroup unixgroup pipe /usr/sbin/unixgroup <DirectoryMatch "/some/dir_no[0-2]"> AuthType Basic AuthName "Samba auth" AuthBasicProvider external AuthExternal smbauth GroupExternal unixgroup Require group some_group </DirectoryMatch>