SMB/CIFSおよびNFSを介してユーザーのホームディレクトリをエクスポートするサーバーを構築したいと考えています。このサーバーは、ユーザーデータベースを保持するWin2k3 ADドメインコントローラーに参加します。私が理解しているように、winbindはこれらのユーザーのUIDをその場で発明します。このユーザー名とUIDのマッピングは、ホームディレクトリをマウントするNFSクライアントで使用できる必要があります。そうしないと、ファイルの所有権が正しく表示されません。
これはSFUを使用して達成できると思いますが、SFUは廃止され、最近のバージョンのWindowsではサポートされないことがわかるので、使用しないことをお勧めします。
このマッピングをNFSクライアントに提供するにはどうすればよいですか?
(これは一般的な使用例だと思うかもしれませんが、関連するhowtoを見つけることができません。私のGoogle-fuは弱いかもしれません。)
編集:余談ですが、このシナリオでは、ユーザーが最初にSMB/CIFS経由で接続していなくてもNFS経由で接続することは可能ですか?
(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 = false
を追加して、sssdがAD全体を横断してグループメンバーシップを検索しないようにします(キャッシュされていないログインをそれぞれ1〜2分遅らせます)。session required pam_mkhomedir.so skel=/etc/skel/ umask=0076
の末尾に/etc/pam.d/common-session
を追加します。 (または使用したい任意のumask)。sssd
サービスをservice sssd restart
で再起動します。ssh localhost
を使用してログインしてください。winbind
は、古いバージョンのSambaではデフォルトでUIDを構成するか、またはすべての整合性を保つためにLDAPストアを参照する必要があります。これはしばらくの間そうではありません(2004年11月、私の情報が正しければ)-idmap_rid
は、Active Directory RID(相対識別子、ユーザーのSIDの一部)からUIDを生成できるバックエンドです。
Debianシステムを既存のADに結び付けるための構成をここに記述しました -Puppetを使用しますが、SambaおよびPAM構成の開始点についてのみそれを読んだ場合、同等の機能で動作するはずです。 UNIXシステム。
SFUを使用したり、ADスキーマを変更したりしていないことに注意してください。私が欲しかったのは、ユーザー向けの一貫したUIDのセットだけでした。
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にはあまり意味がありませんか?)。
上記の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