Combinato NFS, server Samba con utenti di Active Directory


8

Voglio costruire un server che esporta le home directory degli utenti su SMB / CIFS e NFS. Questo server verrebbe unito a un controller di dominio AD Win2k3 che contiene il nostro database utenti. A quanto ho capito, winbind inventerà gli UID per questi utenti al volo. Questa mappatura nome utente-UID deve essere disponibile per i client NFS che montano le home directory o la proprietà del file non verrà presentata correttamente.

Presumo che ciò possa essere ottenuto utilizzando SFU, ma per quanto ne so SFU è fuori produzione e non sarà supportato nelle versioni recenti di Windows, quindi preferirei non usarlo.

Come posso fornire al meglio questo mapping ai client NFS?

(Penseresti che questo sia un caso d'uso comune, ma non riesco a trovare un howto pertinente. Il mio Google-fu potrebbe essere debole.)

EDIT: A parte questo, sarebbe possibile in questo scenario per un utente connettersi tramite NFS senza prima essersi connesso tramite SMB / CIFS?

Risposte:


4

(Modifica per il 05-07-2017) In genere consiglierei di usare sssd ora. Lasciando la risposta originale qui sotto per riferimento storico. Le mie note attuali per Ubuntu sono:

apt-get install openssh-server sssd-ad realmd packagekit
realm -v join example.com --computer-ou="OU=someOU,DC=example,DC=com" --user=someuser
  • In /etc/sssd/sssd.conf, [sssd]sezione, aggiungi default_domain_suffix = example.come full_name_format = %1$s. Nella [domain/example.com]sezione, modifica fallback_homedir = /home/%d/%ue aggiungi ignore_group_members = True. Per domini di dimensioni maggiori, aggiungere enumerate = falseper impedire a sssd di attraversare tutto il mondo AD alla ricerca di appartenenze a gruppi (e ritardare gli accessi non memorizzati nella cache di un minuto o due ciascuno).
  • Aggiungi session required pam_mkhomedir.so skel=/etc/skel/ umask=0076alla fine di /etc/pam.d/common-session. (o qualunque altra umask tu voglia usare).
  • Riavviare il sssdservizio con service sssd restart.
  • Prova ad accedere su una seconda console di testo o GUI o con ssh localhost.

winbindcostituirebbe gli UID di default nelle versioni precedenti di Samba o dovrebbe fare riferimento a un negozio LDAP per mantenere tutto coerente. Questo non è il caso da qualche tempo (novembre 2004, se le mie informazioni sono corrette) - idmap_ridè un backend che può generare UID dal RID di Active Directory (identificatore relativo, parte del SID dell'utente).

Ho scritto la mia configurazione per legare i sistemi Debian in un annuncio esistente qui - usa Puppet, ma se lo leggi solo per un punto di partenza su configurazioni Samba e PAM, dovrebbe funzionare su qualsiasi sistema UNIX comparabile.

Nota che non sto usando SFU, o modificando lo schema AD in alcun modo. Tutto quello che volevo era un insieme coerente di UID per i miei utenti.


Questo post mi ha portato sulla strada giusta. Vedi sotto per una descrizione completa di ciò che ho fatto.
Bittrance

2

Il componente NFS di Services for Unix fa ora parte del ruolo Services for Network File System in Server 2003 R2 e versioni successive.

Esiste un ottimo blog Microsoft su SFU: http://blogs.msdn.com/b/sfu/ . La voce di blog pertinente che spiega come configurarlo e l'articolo Technet definitivo è qui .

È possibile utilizzare l'estensione dello schema di Identity Management for UNIX Active Directory per eseguire la mappatura consentendo ai client NFS di connettersi al server senza dover prima CIFS (se potevano CIFS, non ha molto senso per NFS?).


1

Come suggerito da Mike Renfro sopra, idmap_rid è il componente centrale. Di seguito è riportato un elenco di comandi shell che mettono in funzione un box, dato un nuovo box 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.