结合了NFS,Samba服务器和Active Directory中的用户


8

我想构建一个通过SMB / CIFS和NFS导出用户主目录的服务器。该服务器将加入一个包含我们的用户数据库的Win2k3 AD域控制器。据我了解,winbind会即时为这些用户发明UID。此用户名-UID映射必须对安装主目录的NFS客户端可用,否则文件所有权将无法正确显示。

我认为这可以使用SFU来实现,但是据我所知SFU已停产,并且在Windows的最新版本中将不支持SFU,所以我宁愿不使用它。

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

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

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

Answers:


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.comfull_name_format = %1$s。在该[domain/example.com]部分中,编辑fallback_homedir = /home/%d/%u并添加ignore_group_members = True。对于较大的域,请添加enumerate = false以防止sssd在整个AD上遍历,以查找组成员身份(并使非缓存的登录名每次延迟一两分钟)。
  • 附加session required pam_mkhomedir.so skel=/etc/skel/ umask=0076/etc/pam.d/common-session。(或您要使用的任何umask)。
  • 使用重新启动sssd服务service sssd restart
  • 尝试在第二个文本或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

Unix服务的NFS组件现在是Server 2003 R2及更高版本中“ 网络文件系统服务”角色的一部分。

关于SFU的Microsoft博客非常棒-http: //blogs.msdn.com/b/sfu/。有关说明如何设置它的相关博客条目和权威的Technet文章在此处

您可以使用Identity Manager for UNIX Active Directory架构扩展来进行映射,以允许NFS客户端连接到服务器而不必先连接CIFS(如果可以使用CIFS,那么对NFS没有多大意义?)。


1

正如上面的Mike Renfro所建议的那样,idmap_rid是中心组件。以下是给定新RHEL5.5框的shell命令列表,这些命令可启动并运行:

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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.