複合NFS、Sambaサーバー、Active Directoryのユーザー


8

SMB / CIFSおよびNFSを介してユーザーのホームディレクトリをエクスポートするサーバーを構築したいと考えています。このサーバーは、ユーザーデータベースを保持するWin2k3 ADドメインコントローラーに参加します。私が理解しているように、winbindはこれらのユーザーのUIDをその場で発明します。このユーザー名とUIDのマッピングは、ホームディレクトリをマウントするNFSクライアントで使用できる必要があります。そうしないと、ファイルの所有権が正しく表示されません。

これはSFUを使用して実現できると思いますが、SFUは廃止され、最近のバージョンのWindowsではサポートされないことがわかるので、使用しないことをお勧めします。

このマッピングをNFSクライアントに提供するにはどうすればよいですか?

(これは一般的な使用例だと思うかもしれませんが、関連するhowtoを見つけることができません。私のGoogle-fuは弱いかもしれません。)

編集:余談ですが、このシナリオでは、ユーザーが最初にSMB / CIFS経由で接続していなくても、NFS経由で接続することは可能ですか?

回答:


4

(2017-07-05用に編集)私は今、sssdを使用することをお勧めします。以下の元の回答は、歴史的な参照のために残しています。Ubuntuに関する現在の注意事項は次のとおりです。

apt-get install openssh-server sssd-ad realmd packagekit
realm -v join example.com --computer-ou="OU=someOU,DC=example,DC=com" --user=someuser
  • /etc/sssd/sssd.conf[sssd]セクションの追加、default_domain_suffix = example.comおよびfull_name_format = %1$s。では[domain/example.com]セクション、編集fallback_homedir = /home/%d/%uおよびアドオンignore_group_members = True。大規模なドメインの場合は、enumerate = falsesssdがグループメンバーシップを探してAD全体をトラバースしないように(さらに、キャッシュされていないログインを1〜2分遅らせるように)追加します。
  • の末尾に追加session required pam_mkhomedir.so skel=/etc/skel/ umask=0076/etc/pam.d/common-sessionます。(または使用したい任意のumask)。
  • sssdサービスを再起動しservice sssd restartます。
  • 2番目のテキストコンソール、GUIコンソール、またはでログインしてみてくださいssh localhost

winbind古いバージョンのSambaでは、デフォルトでUIDを構成するか、LDAPストアを参照してすべての整合性を保つ必要があります。しばらくの間(2004年11月、私の情報が正しければ)idmap_rid、Active Directory RID(相対識別子、ユーザーのSIDの一部)からUIDを生成できるバックエンドです。

Debianシステムを既存のADに結び付けるための設定をここに書きました -Puppetを使用しますが、SambaとPAMの設定の開始点としてそれを読むだけであれば、同等のUNIXシステムで動作するはずです。

SFUを使用したり、ADスキーマを変更したりしていないことに注意してください。私が欲しかったのは、ユーザー向けの一貫したUIDのセットだけでした。


この投稿は私を正しい軌道に乗せました。私がしたことの完全なダンプについては、以下を参照してください。
Bittrance、2011

2

Services for UnixのNFSコンポーネントは、Server 2003 R2以降のServices for Network File System役割の一部になりました。

SFUについてのすばらしいMicrosoftブログがあります-http://blogs.msdn.com/b/sfu/設定方法と決定的なTechnet記事を説明する関連ブログエントリはこちらです。

Identity Management for UNIX Active Directoryスキーマ拡張を使用してマッピングを行うと、最初にCIFSを使用しなくてもNFSクライアントがサーバーに接続できるようになります(CIFSが可能である場合、NFSにはあまり意味がありませんか?)。


1

上記のMike Renfroが提案したように、idmap_ridが中心的なコンポーネントです。以下は、新しいRHEL5.5ボックスが与えられたときに、ボックスを起動して実行するシェルコマンドのリストです。

client_packages:

yum -y install samba3x-winbind krb5-workstation nfs-utils portmap pam_krb5
chkconfig --add winbind
chkconfig winbind --level 345 on
chkconfig --add rpcidmapd
chkconfig rpcidmapd --level 345 on
chkconfig --add portmap
chkconfig portmap --level 345 on
chkconfig --add nfslock
chkconfig nfslock --level 345 on

client_setup:

umount /cpy/shared || true
umount /cpy/users || true

install samba-winbind.conf /etc/samba/smb.conf
install krb5.conf /etc/krb5.conf
install idmapd.conf /etc/idmapd.conf

if ! net -S ad.example.com ads testjoin ; then
    net -S ad.example.com ads join -UAdministrator
fi

if ! grep -q winbind /etc/nsswitch.conf ; then
    sed -r  -e 's/^(passwd|shadow|group):.*$/& winbind/g' \
        -e 's/^hosts:.*$/& wins/g' -i /etc/nsswitch.conf
fi

( grep -v '172.18.0.2:' /etc/fstab && cat fstab.nfs-client ) \
    > /tmp/fstab.new && mv /tmp/fstab.new /etc/fstab

service winbind restart
service rpcidmapd restart
install -d /cpy/shared
install -d /cpy/users
mount -a
authconfig --enablewinbind --enablewinbindauth --enablekrb5 --update
echo "Make sure that /etc/hosts has an entry with .example.com"

samba-winbind.conf:

[global]
unix charset = LOCALE
workgroup = EXAMPLE
realm = example.com
security = ADS
log level = 2
syslog = 0
log file = /var/log/samba/%m
max log size = 50
idmap backend = idmap_rid:EXAMPLE=10000-20000
idmap uid = 10000-20000
idmap gid = 10000-20000
template shell = /bin/bash
template homedir = /cpy/users/%u
winbind separator = +
winbind cache time = 60
winbind enum groups = yes
winbind enum users = yes
winbind use default domain = yes

krb.conf:

[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]

 default_realm = EXAMPLE.COM
 dns_lookup_realm = false
 dns_lookup_kdc = false
 ticket_lifetime = 24h
 forwardable = yes

[realms]
 PILOTFISH.SE = {
  kdc = ad.example.com
  admin_server = ad.example.com
  default_domain = example.com
 }

[domain_realm]
 .pilotfish.se = EXAMPLE.COM
 pilotfish.se = EXAMPLE.COM

[appdefaults]
 pam = {
   debug = false
   ticket_lifetime = 36000
   renew_lifetime = 36000
   forwardable = true
   krb4_convert = false
 }

idmapd.conf

[General]

Verbosity = 1
Pipefs-Directory = /var/lib/nfs/rpc_pipefs
Domain = example.com

[Mapping]

Nobody-User = nfsnobody
Nobody-Group = nfsnobody

[Translation]
Method = nsswitch

fstab.nfs-client

172.18.0.2:/users       /cpy/users              nfs4    defaults        0 0
172.18.0.2:/shared      /cpy/shared             nfs4    defaults        0 0
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.