Ubuntu 10.04サーバーを使用しています。
[編集]私はこれからUbuntu 10.04 Server(21/May/2010)の完全なリリースをテストしてきました。
私はUbuntu 10.04 Server LTSを構成して、Active Directoryを使用してログインを認証し、Windows共有をマウントしてホームとして機能させるディレクトリ。
これは、Ubuntuの初期インストールから始めたものです。
アップデートを入手する
_# Sudo apt-get update && Sudo apt-get upgrade
_
SSHサーバーをインストールする(sshd
)
_# Sudo apt-get install openssh-server
_
Rootログインを無効にして「sshdをロックダウン」する必要があると主張する人もいます。 rootパスワードのsshセッションをハッキングできるほど賢い人なら、_PermitRootLogin no
_ファイルに_/etc/ssh/sshd_config
_を追加しても邪魔にならないでしょう。偏執狂的であるか、単に納得していない場合は、ファイルを編集するか、以下を試してください。
# (grep PermitRootLogin /etc/ssh/sshd_config && Sudo sed -ri 's/PermitRootLogin ).+/\1no/' /etc/ssh/sshd_conifg) || echo "PermitRootLogin not found. Add it manually."
必要なパッケージをインストールする
_# Sudo apt-get install winbind samba smbfs smbclient ntp krb5-user
_
来る特定のパッケージ構成に備えて、いくつかの基本的なネットワークのハウスクリーニングを実行します。
Windowsドメイン名、DNSサーバー名、およびActive Directoryサーバー(Samba用)のIPアドレスを決定します。便宜上、WindowsドメインとDNSサーバーの環境変数を設定しました。私にとっては(私のADのIPアドレスは192.168.20.11でした):
_# WINDOMAIN=mydomain.local && WINDNS=srv1.$WINDOMAIN && WINDNS_IP=192.168.20.11
_
ドメインとDNSサーバーが何であるかを知りたい場合(私は請負業者であり、ネットワークを知りませんでした)、この役立つ 参照 を確認してください。
新しいネットワークでLinuxボックスに名前を付ける必要があります。これは、Hostファイルを編集して行います(DNSをWindows DNSのFQDNに置き換えます)。# Sudo sed -ri "s/^(127\.0\.[01]\.1[ \t]).*/\1$(hostname).$WINDOMAIN localhost $(hostname)/" /etc/hosts
私たちはまた、彼らがリーダーを見つけることができる場所を次のインストール済みサービスに伝える必要があります:一部のネットワークはnetbios名前検索サービスを持っていますが、念のため、_/etc/hosts
_ファイルに明示的なエントリーを追加します。 3番目の(3)行:
_# Sudo sed -ri "3 i $WINDNS_IP $WINDNS" /etc/hosts
_
WindowsおよびLinuxボックスの認証およびファイル共有プロセスは、時計を一致させる必要があります。 NTPサービスでこれを行います。Ubuntuのサーバーバージョンでは、NTPサービスがインストールされ、one(1)NTP=切断。Ubuntuの前に追加します(または完全に置き換えます)。私が参加していたネットワークでは、DNSサーバーがNTPサービスも。# Sudo sed -ri "s/^(server[ \t]+)(.+)/\1$WINDNS\n\1\2/" /etc/ntp.conf
NTPデーモンを再起動します:
_# Sudo /etc/init.d/ntp restart
_
Kerberos構成。
以下の説明は文字どおりに行われるものではありません。_MYDOMAIN.LOCAL
_および_srv1.mydomain.local
_の値は、ファイルを編集するときに、ネットワークに適した値に置き換える必要がありますが、大文字を使用する場合は大文字が必要です。
Kerberosの_apt-get install
_の実行中に「デフォルトドメイン」の質問に正しく回答する洞察力があった場合は、それで問題ありません。それ以外の場合は、次の手順を実行する必要があります。
(以前にインストールされた)_/etc/krb5.conf
_ファイルを編集します。
_[libdefaults]
_セクションを見つけて、キーと値のペアを変更します。
_[libdefaults]
_
_default_realm = MYDOMAIN.LOCAL
_
ファイルの_[realms]
_セクションに以下を追加します。
_MYDOMAIN.LOCAL = {
_
_kdc = srv1.mydomain.local
_
_admin_server = srv1.mydomain.local
_
_default_domain = MYDOMAIN.LOCAL
_
_}
_
ファイルの_[domain_realm]
_セクションに以下を追加します。
_.mydomain.local = MYDOMAIN.LOCAL
_
_mydomain.local = MYDOMAIN.LOCAL
_
この時点での素晴らしいテストは、ADコントローラーがKerberosチケットを発行するかどうかを確認することです。これは必須ではありませんが、一部の人はめまいがすることがあります:
_# kinit <some_windows_domain_user>
_
次に、チケットを確認します。
_# klist
_
チケットのキャッシュや有効期限、更新に関する情報が表示されます。めまいが収まれば、チケットを解放/破棄することもできます。
_# kdestroy
_
Sambaを構成します。
以下によると: CIFSを使用できないか、別のネットワークファイルシステムを選択する方がよい場合があります。セキュリティを強化するためにKerberos(krb5/SPNEGO)認証サポートが必要な場合は、Sambaのsmbclientまたはsmbfsをcifsの代わりに使用する必要があります
残念ながら、ubuntu 10.04のカーネルでのcifs
サポート(カーネルバージョン2.6.32.9に基づく)はバージョン1.61であり、カーネルのドキュメントによると、実験的なkerberosの実装はバージョン1.54以降にあります。
それで、あなたはそうです。 cifs
が機能するかどうかわからないので、sambaの構成を紹介します。
_/etc/samba/smb.conf
_を置き換えます(私はUbuntuのクリーンなディストリビューションから作業していたので、何かを壊す心配はしていませんでした):
_[global]
_
_security = ads
_
_realm = MYDOMAIN.LOCAL
_
_password server = 192.168.20.11
_
_workgroup = MYDOMAIN
_
_idmap uid = 10000-20000
_
_idmap gid = 10000-20000
_
_winbind enum users = yes
_
_winbind enum groups = yes
_
_template homedir = /home/%U
_
_template Shell = /bin/bash
_
_client use spnego = yes
_
_client ntlmv2 auth = yes
_
_encrypt passwords = yes
_
_winbind use default domain = yes
_
_restrict anonymous = 2
_
さまざまなサービスを開始および停止します。
_# Sudo /etc/init.d/winbind stop
_
_# Sudo service smbd restart
_
_# Sudo /etc/init.d/winbind start
_
認証を設定します。
_/etc/nsswitch.conf
_を編集します。次のコマンドを実行して、必要なものを取得できました。# sed -ri 's/(compat)/\1 winbind/' /etc/nsswitch.conf
これが私の_/etc/nsswitch.conf
_ファイルの内容です。
_passwd: compat winbind
_
_group: compat winbind
_
_shadow: compat winbind
_
_hosts: files dns
_
_networks: files
_
_protocols: db files
_
_services: db files
_
_ethers: db files
_
_rpc: db files
_
さまざまなサービスを開始および停止します。
_# Sudo /etc/init.d/winbind stop
_
_# Sudo service smbd restart
_
_# Sudo /etc/init.d/winbind start
_
コンピューターをドメインに参加させます。これが必要だとは思いません。特に、_smb.conf
_ファイル(_security = ads
_)のセキュリティオプションが原因です。おそらく誰かがこれを検討することができます...
_# Sudo net ads join -U any_domain_user_account
_
_DNS update failed!
_エラーが発生する可能性がありますが、ドメインに参加します。サーバーが見つからないというエラーが発生した場合は、DNSレコードを変更する必要があります。 Ubuntuのインストール中、ネームサーバーはゲートウェイを指すことがよくあります。ほとんどのルーターはDNSサービスを実行します。 Windowsサーバー管理のベストプラクティスは、ADCもDNSを実行することです。私の場合、_/etc/resolve.conf
_は次のようになります。
_nameserver 192.168.20.11
_
_nameserver 8.8.8.8
_
_8.8.8.8
_はGoogle DNSであり、ウィンドウがダウンした場合のかなり信頼できるバックアップです。
この時点で(おそらく再起動後に)ログインできましたが、ホームディレクトリは存在しませんでしたが、ログインできました。
ログイン時のCIFSマウント
この次のステップは私にとってチェリーでした。私は全員の作業ディレクトリをバックアップする責任を負いたくなかったし、Ubuntuを実行する予定だったボックスは信頼性の点で疑わしかった。次のようにすると、ユーザーはログインしてWindowsユーザーディレクトリを自動的に表示できます。
_pam_mount
_モジュールをダウンロードします。
_# Sudo apt-get install libpam-mount
_
マウントポイントを従来の_/home/<user>
_の場所に指定したいのですが、この部分は_/etc/samba/smb.conf
_ファイル(_template homedir = /home/%U
_)で構成されています。しかし、共有をドリルスルーして、独自のWindowsディレクトリをポイントするために必要でした。これは、_/etc/security/pam_mount.conf.xml
_ファイルを編集することで実現されます(このファイルの意図はありますが、XMLは人間が読み取れない)。
以下を_/etc/security/pam_mount.conf.xml
_に追加し、必要に応じて変更します。
_<volume
_
_user="*"
_
_server="srv1.mydomain.local"
_
_path="UserShares"
_
_mountpoint="home"
_
_fstype="cifs"
_
_/>
_<cifsmount>mount -t cifs //%(SERVER)/%(VOLUME)/%(USER) %(MNTPT)/%(USER) -o "user=%(USER),uid=%(USERUID),gid=%(USERGID)%(before=\",\" OPTIONS)"</cifsmount>
間抜けなマウントポイントのため、次の行も追加する必要がありました。
<umount>umount %(MNTPT)/%(USER)</umount>
そして、(マウントポイント用の)ユーザーディレクトリが自動的に作成されるように、行を見つけて、次のようにします。
_<mkmountpoint enable="1" remove="false" />
_
_remove="false"
_ビットは非常に重要です。trueに設定されている場合、_pam_mount.so
_は、ユーザーが複数回ログインした場合に実行できないディレクトリマウントポイントを削除しようとします。その場合、最終的にシステムに多数の浮遊マウントができます。
_pam_mount.so
_は、まだ約束どおりに配信されません。現在の形式では、マウントが積み重なっていき、ホームディレクトリは作成されていません。ここと10.04サーバーの以前のベータ2リリースの間のどこかで、それは機能していました。これを再現することはできません。
その間、私は_pam_mkhomedir.so
_に依存しており、対応するために_pam_mount.so
_行の直前の行をスタックしています。
まだ複数のマウントの問題を解決していません。しかし、_pam_mount.so
_が修正されるまで、これは私の_/etc/pam.d/common-session
_ファイルにあるものです:
_session [default=1] pam_permit.so
session requisite pam_deny.so
session required pam_permit.so
session required pam_unix.so
session optional pam_winbind.so
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
session optional pam_mount.so
_
それでおしまい。それは私にとってはうまくいきました、そしてあなたがそれが役に立つことを望んでいます。
多くのリソースが考慮されたので、これを理解することができました。以下に短いリストを示します(これらのリンクの多くは、トピックに関する自分自身の質問を指します)。