来自Active Directory的NFS,Samba服务器组合在一起的用户

我想build立一个服务器,通过SMB / CIFS和NFS导出用户主目录。 这个服务器将被join到一个Win2k3 AD域控制器,它拥有我们的用户数据库。 据我了解,winbind将在飞行中为这些用户发明UID。 此用户名-UID映射需要可用于挂载主目录的NFS客户端,否则文件所有权将无法正确显示。

我认为这可以使用SFU来实现,但是据我所知,SFU已经停止使用,并且在最新版本的Windows上不支持,所以我不想使用它。

如何最好地将此映射提供给NFS客户端?

(你会认为这是一个常见的用例,但我找不到相关的howto,我的Google-fu可能很弱)

编辑:顺便说一下,在这种情况下,用户可以通过NFS进行连接,而无需先通过SMB / CIFS进行连接吗?

(编辑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.comfull_name_format = %1$s 。 在[domain/example.com]部分,编辑fallback_homedir = /home/%d/%u并添加ignore_group_members = True 。 对于较大的域,添加enumerate = false以防止sssd遍历AD查找组成员资格(并延迟非cachinglogin一两分钟)。
  • /etc/pam.d/common-session结尾添加session required pam_mkhomedir.so skel=/etc/skel/ umask=0076 。 (或者任何你想使用的umask)。
  • service sssd restart重新启动sssd服务。
  • 尝试login第二个文本或GUI控制台,或使用ssh localhost

winbind默认会在旧版本的Samba上构成UID,或者必须引用LDAP存储以保持一致。 现在还没有这样的情况(2004年11月,如果我的信息是正确的) – idmap_rid是可以从Active Directory RID(相对标识符,用户的SID的一部分)生成UID的后端。

我写了一个configuration,将Debian系统绑定到现有的AD中 – 它使用Puppet,但是如果您只是通过它来读取Samba和PAMconfiguration的起点,那么它应该在任何类似的UNIX系统上工作。

请注意,我没有使用SFU,也没有以任何方式修改AD模式。 所有我想要的是为我的用户提供一套一致的UID。

Services for Unix的NFS组件现在是Server 2003 R2及更高版本中的networking文件系统服务的一部分。

有一个伟大的微软博客关于SFU – http://blogs.msdn.com/b/sfu/ 。 解释如何设置它的相关博客条目以及最终的Technet文章就在这里 。

您可以使用Identity Management for UNIX Active Directory架构扩展来执行映射,从而允许NFS客户端连接到您的服务器,而无需首先使用CIFS(如果它们可以使用CIFS,对NFS没有多大意义)。

正如上面Mike Renfro所build议的那样,idmap_rid是中心组件。 下面是一个shell命令的列表,在一个新的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" 

桑巴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客户端

 172.18.0.2:/users /cpy/users nfs4 defaults 0 0 172.18.0.2:/shared /cpy/shared nfs4 defaults 0 0