SUSE LinuxでのSambaのトラブルシューティング
This document (7001492) is provided subject to the disclaimer at the end of this document.
環境
Novell SUSE Linux Enterprise Server 10サポートパック1
Novell SUSE Linux Enterprise Server 10サポートパック2
Novell SUSE Linux Enterprise Desktop 10
Novell Open Enterprise Server 2 (OES 2)
Samba
問題の状況
このドキュメント(TID)は作成中で、今後内容および詳細が追加されます。更新内容を定期的に確認してください。
注:すべてのインストールおよびセットアップの問題と同様、サーバに最新のコードのパッチを適用してください。ソフトウェアには常に改良がなされています。たとえば、このTIDでの問題およびエラーの一部は、OES 2 SP1では解決されています。(このTIDは当初、サポートパックのリリース前にOES 2中に作成されたものです)
解決策
- iManagerでSambaを管理しようとしたときのエラー
- 存在しない、または正しくない共有、および正しくないドメイン/ワークグループ名
- サーバにパッチを適用した後のさまざまな障害およびエラー
- NSS上でSambaにクラスタを有効にした場合のヒント
iManagerでユーザにSambaを有効にしようとしたときのエラー
修正:ここで参照されるUIDはeDirectoryのグループのGUIDを処理していない可能性があります。その代り、ドメイン/ローカルSIDを参照しています。「net getlocalsid」または「net getdomainsid」のSIDのリストを試してください。リストにない場合は、手動で「net setlocalsid S-1-5-21-50262416-1819788181-674066204」に設定してください。左側のSIDは一例です。環境にWindowsドメインコントローラがある場合は、そのSIDを見つけ、Windowsで指定される値に設定します。SIDが設定されない場合、Sambaパッケージが破損している可能性があります。Sambaパッケージを削除して再インストール(再インストール後にSambaの再構成が必要となることがあります)するか、またはパッケージを強制的にアップデートします。SIDのリストをもう一度試します。これで動作するようになります。ローカルSIDとドメインSIDがあることに注意してください。環境に応じて適切な方を使用します。netの詳細はマニュアルページ(man net)を参照してください。
修正:マニュアルに従って、ユーザにSamba準拠のパスワードポリシーを割り当て、Sambaを有効にする前にユニバーサルパスワードを設定する必要があります。
エラー:<UserName>:グループ<ServerName>-W-SambaUserGroupのユーザに対してSambaを有効にできませんでした。グループ<ServerName>-W-SambaUserGroupのユーザに対してLinuxを有効にできませんでした。エラー:プライマリLUMグループIDを取得できませんでした。
修正:ユーザがLUM(Linux User Management)が有効になっていないグループに属している場合、ユーザにSambaを有効にしようとするとこのエラーが表示されます。Linuxが有効ではないグループをユーザグループメンバシップから削除するか、またはユーザが属する各グループにLUMを有効にする必要があります。
エラー: <UserName>:グループ<ServerName>-W-SambaUserGroupのユーザに対してSambaを有効にできませんでした。グループ<ServerName>-W-SambaUserGroupのユーザに対してLinuxを有効にできませんでした。エラー:(エラー-609)作成されているオブジェクトの1つ以上の必須プロパティがありません。
修正:古いeDirectoryツリーの一部に、必須属性の一部が不足しているユーザオブジェクトがあります。特に、uniqueID属性がユーザオブジェクトにない可能性があります。uniqueIDにはusernameと同一の値があります。たとえば、usernameがnovell123の場合、uniqueIDには同じnovell123の値が設定されます。これは、ConsoleOneやiManagerなどの、さまざまなユーティリティで追加できます。属性はユーザオブジェクトの[other(その他)]タブで設定されます。この特定のエラーについては、uniqueID属性がユーザオブジェクトに存在し、属性値が正しいことを確認します。
注:多数のユーザを修正する必要がある管理者は、ICEインポート/エクスポートウィザードを検討してください。ユーザをファイルにエクスポートしたり、ファイルの修正や再インポートによってユーザの修正を行えます。詳細はeDirectoryのマニュアルを参照してください。
エラー:デフォルトのSambaグループ<ServerName>-W-SambaUserGroupを取得できなかったため、続行できません。詳細はsambaユーザマニュアルを参照してください。
エラー:オブジェクトクラス違反(/var/log/samba/novell-samba-config.logより)
修正:uamPosixPAMServiceExcludeList属性がuamPosixGroupおよびuamPosixUserクラスに割り当てられていません。この属性をこれら2つのクラスに追加して、OES Sambaインストールを再実行し、<ServerName>-W-SambaUserGroup が作成されたか再確認します。また、/var/log/samba/novell-samba-config.logファイルに「オブジェクトクラス違反」エラーがないか、再確認します(先にログをクリアして、以前に失敗したインストールと混在しないようにします)。
uamPosixPAMServiceExcludeList属性をuamPosixGroupとuamPosixUserクラスに追加する、2つの方法があります。1つはConsoleOneで、もう1つはiManagerです。どちらも有効な方法です。
1. ConsoleOne:
2. iManager:
<UserName>:グループ<Default Samba Group Name>のユーザに対してSambaを有効にできませんでした。{2}考えられる原因についてはヘルプを参照してください。
説明:ユーザ1名にLUMを有効にしようとするときにも、上記のエラーが発生し、ユーザにLUMは有効になりません。
修正:古いeDirectoryツリーの一部に、必須属性の一部が不足しているユーザオブジェクトがあります。特に、uniqueID属性がユーザオブジェクトにない可能性があります。uniqueIDにはusernameと同一の値があります。たとえば、usernameがnovell123の場合、uniqueIDには同じnovell123の値が設定されます。これは、ConsoleOneやiManagerなどの、さまざまなユーティリティで追加できます。属性はユーザオブジェクトの[other(その他)]タブで設定されます。属性がない場合は追加し、ユーザにLUMを再度有効にします。
注:多数のユーザを修正する必要がある管理者は、ICEインポート/エクスポートウィザードを検討してください。ユーザをファイルにエクスポートしたり、ファイルの修正や再インポートによってユーザの修正を行えます。詳細はeDirectoryのマニュアルを参照してください。
エラー:このサーバでCIMエージェントに接続できません。CIMがインストールされていないか、実行されていません。
修正:Sambaが実行されているか、またはクラスタ対応リソースの場合は、リソースがオンラインでSambaサービスが開始していることを確認します。
エラー:SambaUserArrayのインスタンスを作成できませんでした。エラー:CIMサーバデータを取得できませんでした。エラー:CIM_ERR_INVALID_CLASS
修正:Sambaスキーマが正しく拡張されていることを確認します。TID 3341399を参照してください。ほとんどの場合、TID 3768604でこの問題を解決できます。
冗長性のため、各TIDの基本的なシェルコマンドを次に挙げています。コマンドの詳細な説明と、必要性については、直接TIDを参照してください。
TID 3341399:
ldapmodify -h 192.168.2.10 -p 389 -D cn=admin,o=novell -w <password> -f /usr/share/samba/LDAP/samba-nds.schema -x -c
TID 3768604:
owmofc -u https://localhost/root/cimv2 /usr/share/mof/novell-lum-providers/novell-lum-providers.mof
存在しない、または正しくない共有、および正しくないドメイン/ワークグループ名
クラスタ対応環境では、iManagerは管理目的で正しいsmb.confを参照しません。iManagerはローカルsmb.confファイルを参照するため、共有リソース上にあるsmb.confではなく、iManagerは誤ったワークグループと共有情報をユーザに提示します。
対応策:クラスタsmb.confを手動で編集します。NovellクライアントレスWindowsワークステーションでテストし、共有、ワークグループ、NetBiosの名前をチェックします。iManagerのレポート内容にかかわらず、これらは正しくなります。iManagerが誤った場所を参照していても、クラスタは正しい場所を参照します。
『Configuring OES SP2 with NSS, NCS, and Samba(NSS、NCS、SambaによるOES SP2の構成)』という優れたドキュメントがあり、初心者ユーザでもNSSでクラスタ対応Sambaリソースをセットアップできます。クラスタのセットアップに慣れていてリソースについてのみサポートが必要な場合は、ステップ22から開始します。次は、見逃しがちな注意事項です。
1. smb.confファイルのglobalセクションを編集して、次の内容を追加します。このステップを完了しないと、sambaがロードしたときにPIDファイルが/var/run/sambaに配置されます。リソースをアンロードまたはマイグレートする際、サービスが正常にシャットダウンされません。
2. 基本のリソースロードスクリプトのサンプル(ConsoleOneではなくiManagerで編集)ボリュームをマウントするときに長い名前のスペースをロードするなど、オプションを追加する方法の例については、上記で示したドキュメントを参照してください。次のスクリプトは、上記のドキュメントで説明されたようにディレクトリ構造をセットアップしたことを前提としています。
#!/bin/bash
. /opt/novell/ncs/lib/ncsfuncs
exit_on_error nss /poolact=<PoolName>
exit_on_error ncpcon mount <VolName>=<254>
exit_on_error add_secondary_ipaddress <192.168.2.10>
exit_on_error ncpcon bind --ncpservername=<VirtualServerName> --ipaddress=<192.168.2.10>
SAMBA_ROOT=/media/nss/<VolName>/samba
exit_on_error /usr/sbin/nmbd -l $SAMBA_ROOT/logs -s $SAMBA_ROOT/etc/smb.conf
exit_on_error /usr/sbin/smbd -l $SAMBA_ROOT/logs -s $SAMBA_ROOT/etc/smb.conf
exit 0
上記のスクリプトでは、<>の間をシステムに一致するものに置換します。置換する項目はPOOL、VOLUME、VOLID、2つのIP ADDRESSのインスタンス、仮想サーバ名(クラスタリソース名ではなく、実際の仮想NCPサーバオブジェクト名)です。(注:置換の後、<>を削除してください)volidは、修正する前の元のリソーススクリプトから取得できます。ロードする各ボリュームリソースには、固有のvolidがあります。上記の例では、volidは254です。
3. 基本のリソースアンロードスクリプトのサンプル(ConsoleOneではなくiManagerで編集)
#!/bin/bash
. /opt/novell/ncs/lib/ncsfuncs
SAMBA_ROOT=/media/nss/<VolName>/samba
ignore_error killproc -p $SAMBA_ROOT/locks/nmbd-smb.conf.pid /usr/sbin/nmbd
ignore_error killproc -p $SAMBA_ROOT/locks/smbd-smb.conf.pid /usr/sbin/smbd
ignore_error fuser -k $SAMBA_ROOT
ignore_error ncpcon unbind --ncpservername=<VirtualServerName> --ipaddress=<192.168.2.10>
ignore_error del_secondary_ipaddress <192.168.2.10>
ignore_error nss /pooldeact=<PoolName>
exit 0
4. 各クラスタノードが適切なロードおよびアンロードスクリプトで更新されていることを確認します。
- cd /var/opt/novell/ncs
- cat <ResourceName>.load; cat <ResourceName>.unload
- リソースを何度かオフラインとオンラインを切り替えた後にスクリプトが更新されない場合は、次のコマンドを各ノードで実行します。
- /etc/opt/novell/ncs/clstrlib.confファイルを再確認して正しいことを確認し、クラスタオブジェクトの大文字と小文字が正しいことを確認します(O(組織)とOU(組織ユニット)。
- 各ノードで"/opt/novell/ncs/bin/ncs-configd.py -init"を実行します(引用符は除きます)。注:"-init"はダッシュが1つで、2つではありません。スクリプトは、このコマンドを実行した後に取得します。
- ステップ1と2を繰り返して、ロードとアンロードのスクリプトが正しく取得されたことを再確認します。
- /media/nss/<VolName>/samba/logs/log.smbd
- /var/log/messages出力されます。
- /var/run/ncs/<ResourceName>.load.out (およびunload.out)
- /var/log/samba/novell-samba-config.log
ログファイルにあまり情報がない場合、ロードとアンロードスクリプトを手動で実行して、エラーを確認します。
- /var/opt/novell/ncs/<ResourceName>.load (およびunload)
Disclaimer
この情報は、米国Novell, Inc.およびノベル株式会社の内外から発生したものです。本文書の内容または本文書を使用した結果について、いかなる保証、表明または約束も行っていません。また、本文書の商品性、および特定目的への適合性について、いかなる黙示の保証も否認し、排除します。
本文書に記載されている会社名、製品名はそれぞれ各社の商品、商標または登録商標です。
- ドキュメントID: 7001492
- 作成年月日: 02-OCT-2008
- 修正年月日: 05-MAR-2009
- ドキュメントリビジョン:
- 分類:
- 対象NOVELL製品およびバージョン: Open Enterprise Server, SUSE Linux Enterprise Server
- カテゴリ: