BLOGTIMES
2010/11/12

Linux から ActiveDirectory の管理下にあるファイルサーバに接続する

  windowsserver  linux 
このエントリーをはてなブックマークに追加

Linux で Windows の共有フォルダを使いたい場合には、下記のように mount -t cifs を使うと思うのですが、ファイルサーバが Active Directory の管理下にあると同じようにマウントすることはできません。

mount -t cifs //fileserver/share_dir /home/someuser/foo -o user=linuxuser

始めは単純にuserを DOMAIN\user のようにすればいいのかなと思っていたのですが、そんな単純な問題ではなく、そもそも認証の方法からまったく違っていました。 Linux から Active Directory にアクセスするには Kerberos 認証の設定をする必要があります。具体的な設定方法については英語ですが 「Interoperability with Windows using CIFS File Sharing with Kerberos Authentication(PDF)」 が要点がまとまっていて分かりやすいです。この資料は 2010 Red Hat Summit and JBoss World で発表された内容みたいですね。

以下、設定メモ。

† Linux側の Kerberos 認証の設定

Linuxの Kerberos 認証の設定は /etc/krb5.conf にあります。
以下の設定はActive Directory のドメイン名が EXAMPLE.JP 、ドメインコントローラーの名前が domaincontroller.example.jp の場合です。
ドメイン名は大文字の部分と小文字の部分がありますが、以下の通りに設定する必要があります。

--- krb5.conf.org 2007-06-25 14:59:51.000000000 +0900 +++ krb5.conf 2010-11-12 20:39:08.000000000 +0900 @@ -4,22 +4,21 @@ admin_server = FILE:/var/log/kadmind.log [libdefaults] - default_realm = EXAMPLE.COM + default_realm = EXAMPLE.JP dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h forwardable = yes [realms] - EXAMPLE.COM = { - kdc = kerberos.example.com:88 - admin_server = kerberos.example.com:749 - default_domain = example.com + EXAMPLE.JP = { + kdc = domaincontroller.example.jp } [domain_realm] - .example.com = EXAMPLE.COM - example.com = EXAMPLE.COM + .example.jp = EXAMPLE.JP + example.jp = EXAMPLE.JP [appdefaults] pam = {

mount コマンドを使う場合には /etc/request-key.conf に下記の部分を追記する必要があります。

--- request-key.conf.org 2007-01-06 16:55:36.000000000 +0900 +++ request-key.conf 2010-11-12 20:39:36.000000000 +0900 @@ -35,3 +35,5 @@ create user debug:loop:* * |/bin/cat create user debug:* * /usr/share/keyutils/request-key-debug.sh %k %d %c %S negate * * * /bin/keyctl negate %k 30 %S +create cifs.spnego * * /usr/sbin/cifs.upcall %k +create dns_resolver * * /usr/sbin/cifs.upcall %k

† マウントしてみる

設定が済んだらマウント早速マウントしてみます。
下記の例はユーザーが linuxuser@EXAMPLE.JP *1 で接続する場合。
始めの kinit は Kerberos 認証のためのコマンドで、これが済んでいればマウント時にパスワードを聞かれずにそのままマウントされます。

kinit linuxuser@EXAMPLE.JP mount -t cifs //fileserver/share_dir /home/someuser/foo -o sec=krb5,user=linuxuser@EXAMPLE.JP
  • *1: WindowsではEXAMPLE\linuxuserと表記されているかも。

トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/3899
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form

コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。

OpenID を使ってログインすることができます。

Identity URL: Yahoo! JAPAN IDでログイン