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でログイン