Sambaサーバ構築、5つのべからず:2008年版
− 若葉マーク管理者に捧げる −オープンソース・ソリューション・テクノロジ株式会社
代表取締役 チーフアーキテクト 小田切 耕司
2008/4/22
smbpasswdファイルは使うべからず
WindowsとLinux/UNIXとでは認証方式が異なるため、Sambaは内部で独自のパスワードを格納しています。この情報はSamba 2.2まで「smbpasswd」というテキストファイルに格納されてきましたが、Winbind機能をはじめ、Samba 3.0で拡張された機能のいくつかをサポートできません。
特に、Sambaをドメインコントローラにするときは、パスワードポリシーなどの機能がsmbpasswdファイルには格納できないため、「TDB」というSamba独自の内部データベース、もしくはLDAPのような汎用的なディレクトリサービスを利用する形が推奨となります。
Sambaのパスワードデータベースの形式を簡単に分類すると、以下のようになります(smb.confの[global]セクションに「passdb backend=」で指定します)。
■smbpasswdファイル:passdb backend=smbpasswd
- Samba 2.2から移行するための一時利用に限定。今後利用は推奨されません。
- pdbeditコマンドでTDBやLDAPに移行できます。
■TDBファイル:passdb backend=tdbsam
- スタンドアロンサーバやドメインメンバにするときに利用します。
- TDBファイルは複数のサーバで共有不可能、複製不可能なうえに、スケーラビリティがないためです。
■LDAP:passdb backend=ldapsam
- Sambaをドメインコントローラにする場合やユーザー数が多いシステムで利用します。
- 初心者には敷居が高く感じられるのが難点ですが、業務で利用するなら拡張性を考えて、LDAPを使うようにしましょう。
smbpasswdコマンドは使うべからず
前項で「smbpasswdファイルは使うべからず」と書きましたが、同様にsmbpasswdコマンドも、Samba 2.2のころとは用途が変わってきています。
Samba 2.2のころは、smbpasswdコマンドがユーザーの追加・削除などの機能も持っていました。しかし現在は、以前と同じ機能を持っているものの、パスワード管理専用コマンドとして使うことが推奨になります。
■Samba 2.2のころのユーザー追加方法
# smbpasswd -a user01 |
■Samba 3.0のユーザー追加方法
# pdbedit -a user01 |
これは、先ほど触れたように、smbpasswdコマンドではパスワードポリシーなどの新しい機能が利用できないからです。
そしてこのpdbeditも、もしかしたらSamba 3.2では時代遅れになってしまうかもしれません。Samba 3.2からはnetコマンドが充実してきており、Sambaサーバに対してもWindowsサーバに対しても実行できるnetコマンドが推奨になりそうだからです。
なおSamba 3.0では現在でも、ユーザーや管理者がパスワードを変更する場合は、このsmbpasswdコマンドを使います。Samba 3.0においてsmbpasswdコマンドは、ユーザーが自身のパスワードを変更するためのコマンドであって、管理者がユーザーの管理(追加/削除など)をするためのコマンドではないということです。
security=share/server/domainは使うべからず
Samba 3.0には、security=user/ads/share/server/domainという5つの認証方式(セキュリティモデル)が用意されています。
security=user | ユーザー単位でパスワード認証を行う |
security=ads | Active Directoryドメインで認証を行う |
security=share | 共有単位で認証を行う |
security=server | Windows NTもしくはSambaで認証を行う |
security=domain | Windowsドメインで認証を行う |
表1 Samba 3.0のセキュリティモデル |
Windows XPまでは上記のどれを使っても問題は出なかったのだと思います。しかしながらWindows 2003 R2やVista、Windows 2008、XP 64ビットエディションでは、security=share/server/domainを使うと、うまく接続できない場合が増えてきました。Kerberos認証やNTLMv2認証などの新しい認証方式では、セキュリティ強化のために、代理認証やパスワードのリダイレクトを許さないためです。
これらには、Windowsクライアント側のレジストリを変更したり、netコマンドで接続するといった回避方法があります。しかし今後は、管理者やユーザーの手間を考えると、Samba側でsecurity=share/server/domainは使わないようにするのが賢明です。
推奨される2つの方式について説明しておきましょう。
- security=userを使うケース
Sambaをスタンドアロンサーバやドメインコントローラとして使う場合。ただし、スタンドアロンサーバでもsecurity=shareは使わない方がいいでしょう。
- security=adsを使うケース
SambaをWindows Active Directoryドメインのメンバとして使うケース。ただし、この場合にsecurity=server/domainを使うと、Windows Vistaなどから利用できないことがあります。
Sambaがドメインコントローラとなっている場合に、別のSambaサーバをsecurity=serverやdomainで利用するケースも考えられますが、可能ならばsecurity=userとして、同じLDAPサーバを認証データベースとして利用する方が効率がいいでしょう。
一方、security=serverやdomainで利用する場合、認証サーバ(password serverで指定)はドメインコントローラであることが前提になります(古いSambaではスタンドアロンサーバも認証サーバにできましたが、現在はスタンドアロンサーバを認証サーバにすると認証に時間がかかる場合があります)。
ほかのサーバに認証を依頼するユーザーとローカル認証ユーザーを混在させたい、というニーズがある場合も、security=domainで動かす特殊なケースになりますが、今後は、security=serverやdomainはできる限り利用しない方がいいでしょう。
smb.confを編集して共有の作成をするべからず
Sambaで共有を作成する場合は、通常、設定ファイルの「smb.conf」を修正する必要があります。
しかしながら多数の共有があり、管理者が複数人いる場合、皆で同時にsmb.confを編集してしまうと問題が生じる可能性があります。セキュリティの面からも、smb.confを多数の管理者が編集できるようになっているのは問題といえるでしょう。
そこで現在のSambaには、smb.confを編集しなくても共有の追加や削除ができる機能が備わっているのです。これは「usershare」機能と呼ばれるもので、smb.confの[global]セクションに
usershare path = /var/samba/shares |
というように、共有設定ファイルを置くディレクトリを指定するだけで利用できます。これを使うと、共有の作成、削除、変更のたびにsmb.confを編集する必要がなくなります。
例えば、「/home/sales」というディレクトリを「営業資料」という共有として公開する場合は、以下のようなコマンドを実行します。
net usershare add "営業資料" /home/sales |
上記のコマンドは、usershare pathで指定したディレクトリ(/var/samba/shares)に更新権限のあるユーザー(グループ)ならば、rootユーザーでなくても実行できます。設定情報は、usershare pathで指定したディレクトリ(/var/samba/shares)に、共有名(営業資料)と同じファイル名(/var/samba/shares/営業資料)で作成されます。
このファイルを編集したり削除したりすれば、共有の設定を変更したり削除することができますし、
net usershare delete "共有名" |
で共有を削除することもできます。
この機能はすでにアップルのMac OS X Leopardで採用されており、「Mac OSは操作が簡単!」という評判を裏で支えているSambaの新機能になります。
当然のことながら、いま現在もsmb.confを編集して共有を作成することができますが、今後はこの新機能の利用を検討してみてください。共有の管理が安全に、しかも簡単にできるようになるでしょう。
オープンソースの情報はソースや日付に注意
繰り返しになりますが、OSSは誰でも無償で利用でき、情報もインターネットで簡単に得られるため大変有用なものです。しかし一方で、多過ぎる情報と進化の速さが初心者泣かせ(上級者も大変ですが)でもあります。OSSを利用する際は、情報ソースの出所や日付に注意し、古い情報や間違った情報に振り回されないようにしましょう。
2/2 |
|
|
||||
|
Linux Square全記事インデックス |
Linux Squareフォーラム サーバ構築・運用関連記事 |
連載:Heartbeatでかんたんクラスタリング(連載中) オープンソースソフトウェアの「Heartbeat」を使ってHAクラスタを実現し、サービスを「落とさない」仕組みを実現します |
|
特集:Apache 2.2でWebサイトをパフォーマンスアップ! 最新安定版Apache 2.2は、何が変わったのか? 最新のApacheを新機能の使い方とともに解説する |
|
連載:実用 Apache 2.0運用・管理術(全8回) 本連載では、Apache 2.0の運用や管理方法を解説する。まず必須設定と基本的なセキュリティ対策を行い今後の運用に備える |
|
連載:実用
BIND 9で作るDNSサーバ(全15回) 本連載では、BIND 9の構築/運用方法を解説していく。実際に役立つことを目的に、セキュリティや大規模運用などのテーマを取り上げていく |
|
連載:実用qmailサーバ運用・管理術(全14回) 本連載を通して、qmailによるメールサーバの高度な構築・運用・管理術を紹介。SPAM対策やML管理からサーバでのウイルスチェックなどまで |
|
特集:Samba
3.0の全貌 改訂版 Samba 3.0リリースから8カ月。ここであらためて、Samba 3.0系列の新機能、インストール方法、国際化の現状を解説する |
|
|
- 【 pidof 】コマンド――コマンド名からプロセスIDを探す (2017/7/27)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、コマンド名からプロセスIDを探す「pidof」コマンドです。 - Linuxの「ジョブコントロール」をマスターしよう (2017/7/21)
今回は、コマンドライン環境でのジョブコントロールを試してみましょう。X環境を持たないサーバ管理やリモート接続時に役立つ操作です - 【 pidstat 】コマンド――プロセスのリソース使用量を表示する (2017/7/21)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、プロセスごとのCPUの使用率やI/Oデバイスの使用状況を表示する「pidstat」コマンドです。 - 【 iostat 】コマンド――I/Oデバイスの使用状況を表示する (2017/7/20)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、I/Oデバイスの使用状況を表示する「iostat」コマンドです。
|
|