LPIC-2 試験勉強メモ その 10

LPIC-2 試験勉強メモ その 10

ファイル共有

Samba サーバーの設定

Samba サーバー概要

Samba サーバーは Windows の SMB プロトコルにより、ファイルやプリンターの共有を行うサービスである。 プライマリ、バックアップドメインコントローラー機能や、NetBIOS 名と IP アドレスの対応を提供する WINS サーバー機能がある。

SMB の下位層プロトコルは NetBIOS であり、NetBIOS over TCP/IP により 139/TCP ポートで待ち受ける。 SMB では直接 TCP/IP 層を持つ CIFS (Fommon Internet File System) を提供している。 サーバープロセスは次の 2 つがある。

サーバープロセスポート番号説明
smbd445/tcp, 139/tcpファイル共有、プリンタ共有などの SMC サービス
nmdb137/tcp, 138/tcpNetBIOS のネームサービス

デフォルトの設定ファイルは /etc/samba/smb.conf である。 ディストリビューションやインストールの仕方によっては /etc/usr/samba/lib などにも置かれる。 設定ファイルは複数のセクションで構成され、予約されたセクション名がある。 それ以外のセクションは任意の名前をつけることができ、セクション名が共有名となる。 共有するディレクトリは path パラメーターで指定する。 セクション名の最後に $ をつけた場合は Windows からは非表示になる。

セクション名説明
[global]サーバー全体に関するパラメーターを設定するセクション
[homes]ユーザーのホームディレクトリの共有に関するパラメーターを設定するセクション
[printers]プリンターの共有に関するパラメーターを設定するセクション

homes が指定されている場合、ユーザーは自分のユーザー名を共有名としてホームディレクトリにアクセスできる。 この時、書き込みをするには次のいずれかである必要がある。

  • writable = yes もしくは writeable = yes
  • readlonly = no

認証

Samba サーバー自身が認証をする場合は security=user を設定する。 その場合、パスワードデータベースの種類を指定する。 直接 Linux ユーザーのパスワードファイルで認証を行うことはできない。

Security の設定
Security の設定値説明
userユーザー名とパスワードでローカル認証を行う設定
shareパスワードだけで認証を行う設定
domainドメインコントローラーにより認証を行う設定
server他の SMB サーバーにより認証を行う設定
adsAD ドメインのドメインコントローラーで認証を行う設定
Passdb backend の設定
Passdb backend の設定値説明
tdbsamTDB (Trivial DataBase) を使用する
ldapsamLDAP を使用する
smbpasswdsmbpasswd ファイルを使用する

Samba 関連のコマンド

  • pdbedit: ユーザーの表示、登録、変更、削除
  • smbpasswd: パスワードの変更
  • testparm: 設定ファイルの構文チェック
  • smbstatus: クライアント接続情報の表示
  • nmblookup: NetBIOS 情報の検索
  • smbclient: ftp コマンドに似たクライアントコマンド
パスワード同期

unix password sync = yes とすることで Samba ユーザーのパスワードが変更された際にシステムパスワードにも同期する。

  • unix password sync = yes: パスワード同期の有効化
  • passwd program = /usr/bin/passwd %u: パスワード設定コマンドを指定 (root が実行)
  • passwd chat = * %n\n * %n\n *: パスワード設定コマンドとシステムの会話文字列を指定

pdbedit コマンド

Samba ユーザーの表示、登録、変更、削除をする。 ユーザーは事前に Linux のユーザーアカウントとして登録する必要がある。

pdbedit [オプション]
  • -a: ユーザーの登録
  • -L: ユーザーの一覧表示
  • -x: ユーザーの削除

smbpasswd コマンド

Samba ユーザーの登録、パスワード変更、削除をする。

smbpasswd [オプション]
  • -a: ユーザーの登録
  • -x: ユーザーの削除
  • -U: パスワード変更するユーザーの指定

testparm コマンド

smb.conf ファイルの書式をチェックする。

  • -s: 書式チェック後に確認を求めることなく設定内容を表示
  • -v: smb.conf に指定していないデフォルト値も表示

ユーザーマッピング

Linux ユーザー名に複数の Windows ユーザーを紐づけて共有する場合は次のようにマッピングファイルに記述する。 マッピングファイルは username map パラメーターで指定する。

[Linux ユーザー名] = [マッピングするクライアントユーザー名のリスト]

ファイルの非表示

  • veto fires = [/ファイル名]: 指定したファイルを非表示にし、アクセスできなくする
  • hide files = [/ファイル名]: 指定したファイルを非表示にするが、アクセスはできる

NW アクセス許可

  • host allow = [ホストもしくはネットワークのリスト]: アクセスを許可する
  • host deny = [ホストもしくはネットワークのリスト]: アクセスを拒否する

プリンター共有

[print] セクションにプリンタードライバーのパスを指定する。 Windows では print]セクションにプリンタードライバーのパスを指定する。Windowsではprint から最初にデバイスドライバーを検索する。

Winbind

Windows NT ドメイン、あるいは Windows Active Directory ドメインのアカウントを Samba サーバー上で UNIX アカウントとして利用する仕組みである。

  • winbindd: Windows ドメインからユーザー情報を取得するデーモン
  • wbinfo: winbindd が Windows ドメインから取得したユーザーアカウントなどを表示するコマンド
    • -u: Windows ドメインから取得したユーザーアカウントを表示
  • pam_winbind.so: winbindd が取得したユーザーの認証を行う PAM モジュール
  • libnss_winbind.so: winbindd からユーザーアカウントを取得するための NSS (Name Service Switch) 共有ライブラリ
Winbind 設定手順

手動、もしくは authconfig, authconfig-tui, authconfig-gtk などのツールを実行して設定する。

  1. /etc/nsswitch.conf にキーワードwinbind を追加する
passwd:   files winbind
group:    files winbind
  1. /etc/pam.d/system-auth に pam_winbind.so の記述を追加する
auth      sufficient pam_winbind.so use_first_pass
account   [default=bad success=ok user_unknown=ignore] pam_winbind.so
password  sufficient pam_winbind.so use_authtok
  1. 必要に応じて、/etc/samba/smb.conf に Winbind の設定を追加する
[global]
  idmap config * : range = 30000-40000

Windows Active Directory

Windows Server で提供されるディレクトリサービスである。

  • LDAP によるユーザー、グループ、コンピューター、サービスの管理
  • Kerberos によるユーザー認証
  • DNS によるドメイン内の名前解決

Kerberos 認証

MIT で開発されたユーザー認証システムである。 ネットワーク上の Kerberos サーバー (KDC) がユーザー名やユーザーキーなど、ユーザー認証情報を管理する。 クライアントはサービスを受けたいサーバーに接続する前に Kerberos サーバーに接続し、認証のためのチケットを発行する。 そのチケットを持って、サーバーとクライアント間で暗号化された通信で認証を行う。 Kerberos 認証システムによって管理される領域をレルム (realm) と呼ぶ。

  1. クライアントは TGT (Ticket Granting Ticket) の発行を認証サーバーへリクエストする
  2. 認証サーバーはユーザーの秘密鍵で暗号化した TGT をユーザーに送信する
  3. ユーザーは TGT を自分の秘密鍵で復号化し、チケット発行サーバーにサービスチケットの発行をリクエストする
  4. チケット発行サーバーは TGT のユーザー情報を KDC の TGT 秘密鍵により復号化してプリンシパルを検証し、サーバーの秘密鍵で暗号化したサービスチケットをユーザーに送信する
  5. ユーザーはサービスチケットをサーバーに送信する
  6. サーバーは自分の秘密鍵でサービスチケットを復号化し、内容を検証する
Samba サーバーをメンバーサーバーに追加
  1. 次のように smb.conf で設定する。
    • workgroup: ドメイン名の最下層要素名を指定
    • realm: ドメイン名を大文字で指定
    • netbios name: サーバーの DNS ホスト名を指定
    • server role: member server と指定
    • security: ads と指定
  2. Kerberos 認証のため設定ファイル /etc/krb5.conf を編集する。
    • [libdefaults]: kinit などのコマンド実行時のデフォルト値を指定
    • [realms]: kdc にレルムを管理する Kerberos サーバーの DNS ホスト名あるいは IP アドレスを指定
    • [domain_realm]: 左端に . をつけてドメイン名からレルム名への対応を記述
  3. Active Directory ドメインに参加する。
    1. kinit コマンドで Kerberos サーバーから管理者のチケットを取得
    2. net ads join コマンドを実行し、Active Directory ドメインに参加

NFS サーバーの設定

Network File System は Sun Microsystems で開発された UNIX 系システムのファイル共有の標準である。 ネットワーク上のサーバーのディレクトリをローカルのディレクトリに接続して共有できる。

NFSv3 サーバーは次の 2 つのサービスで構成される。

  • mountd: クライアントからのマウント要求に対するサービス
  • nfsd: マウント後のファイルアクセスに対するサービス

また、 NFSv3 まではセッション層のプロトコルである RPC (Remote Procedure Call) とプレゼンテーション層のプロトコルである XDR (eXternal Data Representation) 上で実装されている。 RPC では portmap デーモン (portmapper) が RPC プログラム番号とポート番号のマッピング情報を提供する。 クライアントは NFS サーバーにリクエストを出す前に portmap に RPC プログラム番号と対応するポート番号を問い合わせ、そのポート番号にリクエストを出す。 ポート番号と RPC プログラム番号のマッピング情報は rpcinfo コマンドで表示できる。

NFSv4 では固定的なポート番号 2049 でサービスを提供する。 これにより、NFS をファイアウォール越しにも使えるようになった。

ACL

クライアントに対するアクセス制御は /etc/exports に記述する。 NFS での共有の許可は export と呼ぶ。

ディレクトリ ホスト名(オプション,...) ホスト名(オプション,...) 
  • ディレクトリ: エクスポートするディレクトリを指定
  • ホスト名: クライアントのホスト名を指定
  • オプション: エクスポートのオプション
オプション
主なオプション説明
roread-only で共有許可する (デフォルト)
rwread と write で共有許可する
root_squashroot 権限でのアクセスを anonymous ユーザーでのアクセスにマップする (デフォルト)
no_root_squashroot 権限でのアクセスを許可する
all_squashすべてのアクセスの uid と gid を anonymous uid (65534) と gid (65534) にマップする
anonuid=uidsquash 時にマッピングする uid を指定する
anonuid=gidsquash 時にマッピングする gid を指定する
syncディスクへの書き込み後に応答を返す (デフォルト)
asyncディスクへの書き込み前に応答を返す。パフォーマンスが改善されるが障害時にデータ損失の可能性がある
fsid=0擬似ルートとしてディレクトリをマウントする

擬似ルートとしてマウントしたディレクトリは他のディレクトリを配下のディレクトリとして共有される。 擬似ルート以下は単独のファイルシステムとしてエクスポートオプションを指定可能。

exportfs コマンド

ディレクトリのエクスポート、アンエクスポートの実行及び現在のエクスポート設定を表示する。

exportfs
exportfs [-u] [-o オプション] クライアント名:ディレクトリ
exportfs -a [-u]
exportfs -r
exportfs -v
  • -a: /etc/exports ファイルに記述されたすべてのディレクトリをエクスポートする
  • -o: /etc/exports と同じ形式でオプションを指定する
  • -r: /etc/exports ファイルの記述に従って、再度エクスポート及びアンエクスポートする
  • -u: 指定されたディレクトリをアンエクスポートする
  • -v: 詳細情報を表示する

NFS サーバーのマウント

NFS サーバーのファイルシステムをマウントするには mount コマンドを使用する。 起動時に自動でマウントするには /etc/fstab に設定を記述する。

mount [-t nfs] -o [オプション] NFS サーバー名:ディレクトリ マウントポイント
  • rw: 読み書き可能でマウントする (デフォルト)
  • ro: 読み込みのみでマウントする
  • hard: サーバーから応答があるまで要求を繰り返す (デフォルト)
  • soft: サーバーから応答がなければタイムアウトとなりエラー終了する
  • fg: サーバーから応答がない場合、フォアグラウンドで mount を実行する (デフォルト)
  • bg: サーバーから応答がない場合、バックグラウンドで mount を実行する
  • intr: サーバーから応答がない場合、インタラプトシグナルにより mount を終了する
  • nfsvers=バージョン: NFS のバージョンを指定する

NFS のデーモン

プログラムv3v4説明
rpc.nfsdNFS サービスを提供
rpc.idmapdユーザー名のマッピングを提供
rpc.mountdマウントサービスを提供
rpc.statdNFS サーバー及びクライアントのリブート通知のモニタリングとリブート後のロックを回復する
idmapd の設定

設定ファイルは /etc/idmapd.conf である。

  • Mapping: ローカルアカウントに一致しないユーザー及びグループをローカルアカウント及びローカルグループにマッピングする
  • Translation: ユーザー名のマッピングメソッドを指定する (nsswitch, umich_ldap, static)
  • Static: Translation セクションで static メソッドを指定した場合の GSS 認証での プリンシパル名@レルム名 からローカルアカウントへのマッピングを指定する

nfsstat コマンド

クライアントが発行した NFS リクエストと RPC リクエスト、サーバーが受信した NFS リクエストと RPC リクエストなどについての統計情報を表示する。 オプションなしで実行した老婆愛のデフォルトは -scrn である。

nfsstat [オプション]
  • -s: サーバー側の統計表示
  • -c: クライアント側の統計表示
  • -n: NFS の統計表示
  • -r: RPC の統計表示
  • -o ファシリティ: 指定したファシリティの統計を表示する
    • nfs: NFS の統計表示
    • rpc: RPC の統計表示
    • net: ネットワーク層の統計表示
    • fh: サーバーのファイルハンドルキャッシュの統計表示
    • rc: サーバーの応答キャッシュの統計表示
    • all: すべて表示

showmount コマンド

NFS サーバーの mountd に問い合わせて NFS の共有についての情報を表示する。

showmount [オプション] [NFS サーバー]
  • -e: NSF サーバーがエクスポートしているディレクトリとクライアントの一覧を表示する
  • -a: クライアントのホスト名とマウントしているディレクトリの一覧を表示する