しょんぼり技術メモ

まいにちがしょんぼり

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>