Samba4
Da MontelLUG WIKI.
Fonti:
- http://www.linuxtrent.it/corsi-ed-incontri/corso-sysadmin-2012 (principale)
- http://zachbethel.com/2013/04/10/linux-ldap-authentication-with-samba4/
- http://linuxcostablanca.blogspot.it/2013/04/ubuntu-client-for-samba4.html
- http://linuxcostablanca.blogspot.it/2012/02/samba-4-posix-domain-user.html
- http://linuxcostablanca.blogspot.it/p/s4bind.html
- https://help.ubuntu.com/community/NFSv4Howto
Config:
- Server: Debian 7.1.0 - Bind9.8.6 - Samba4 (IP: 192.168.1.100 - srv.agno.lan)
- Client Linux: Lubuntu 13.04
- Client Windows: Win XP Pro SP3
Server
Installazione Bind9
Configurare Bind9 dopo apt-get install bind9 (da qui: http://guide.debianizzati.org/index.php/Un_server_DNS_e_DHCP_su_Debian):
- named.conf:
File immutato.
include "/etc/bind/named.conf.options"; include "/etc/bind/named.conf.local"; include "/etc/bind/named.conf.default-zones";
- named.conf.local:
zone "agno.lan" { type master; file "/etc/bind/db.agno"; }; zone "1.168.192.in-addr.arpa" { type master; file "/etc/bind/db.192.168.1"; };
- named.conf.options:
Aggiunto i forwarders, il resto era il file di default.
options { directory "/var/cache/bind"; forwarders { 8.8.8.8; }; dnssec-validation auto; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; };
- /etc/bind/db.agno
$ORIGIN . ; ---Area 1--- $TTL 86400 ; 1 day ; ---Area 2--- agno.lan IN SOA srv.agno.lan. root.agno.lan. ( 2007081501 ; serial 86400 ; refresh (1 giorno) 28800 ; retry (8 ore) 604800 ; expire (1 settimana) 86400 ; minimum (1 giorno) ); ; ---Area 3--- IN NS srv.agno.lan. ; ---Area 4--- $ORIGIN agno.lan. srv IN A 192.168.1.100 agno IN A 192.168.1.99
- /etc/bind/db.192.168.1
$TTL 604800 @ IN SOA srv.agno.lan. root.agno.lan. ( 2007081501 ; serial 604800 ; refresh 86400 ; retry 2419200 ; expire 604800 ; negative cache ttl ); @ IN NS srv.agno.lan. 100 IN PTR srv.agno.lan. 99 IN PTR agno.agno.lan.
Installazione di Samba 4
(da qui: https://wiki.samba.org/index.php/Samba4/HOWTO)
apt-get install samba4
Se alla file da qualche errore, rimuovere il file /etc/samba/smb.conf e ripetere il comando apt-get installa samba4.
Andare in /usr/share/samba/setup e dare il comando ./provision
Rispondere:
- Realm: AGNO.LAN
- Domain: AGNO
- Server Role: dc
Il file /etc/samba/smb.conf dovrebbe contenere almeno queste direttive (notare che non sono tutte generate in automatico da provision):
[global] workgroup = AGNO realm = AGNO.LAN server role = domain controller server services = +smb -s3fs dcerpc endpoint servers = +winreg +srvsvc idmap_ldb:use rfc2307 = yes [sysvol] path = /var/lib/samba/sysvol read only = no [netlogon] path = /var/lib/samba/sysvol/AGNO.LAN/scripts read only = no
- L'ultima opzione di [global] serve per peremttere il login ai client Linux
- server services e dcerpc endpoint servers le ho dovute usare con Debian7 come server perché quando con Win impostavo il agno.lan come dominio, mi diceva che non riusciva a trovare il percorso di rete. Se si utilizza Ubuntu come server forse non servono.
A questo punto bisogna tornare a modificare i file di Bind. In partciolare:
- in named.conf commentare la riga relativa a named.conf.local e aggiungere include "/var/lib/samba/private/named.conf;":
include "/etc/bind/named.conf.options"; //include "/etc/bind/named.conf.local"; include "/var/lib/samba/private/named.conf"; include "/etc/bind/named.conf.default-zones";
- in named.conf.options aggiungere tkey-gssapi-keytab "/var/lib/samba/private/dns.keytab";:
options { directory "/var/cache/bind"; forwarders { 8.8.8.8; }; tkey-gssapi-keytab "/var/lib/samba/private/dns.keytab"; dnssec-validation auto; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; };
- scommentare la riga gisuta seconda della vostra versione di bind9 nel file /var/lib/samba/private/named.conf:
dlz "AD DNS Zone" { # For BIND 9.8.0 database "dlopen /usr/lib/i386-linux-gnu/samba//bind9/dlz_bind9.so"; # For BIND 9.9.0 # database "dlopen /usr/lib/i386-linux-gnu/samba//bind9/dlz_bind9_9.so"; };
Riavviare tutti i servizi con:
- /etc/init.d/bind9 restart
- /etc/init.d/samba restart
DNS Testing:
$ host -t SRV _ldap._tcp.agno.lan. _ldap._tcp.agno.lan has SRV record 0 100 389 srv.agno.lan. $ host -t SRV _kerberos._udp.agno.lan. _kerberos._udp.agno.lan has SRV record 0 100 88 srv.agno.lan. $ host -t A srv.agno.lan. srv.agno.lan has address 192.168.1.100
Samba testing:
smbclient4 -L localhost -U% Sharename Type Comment --------- ---- ------- homes Disk Home Directories printers Printer All Printers print$ Disk Printer Drivers sysvol Disk netlogon Disk profiles Disk IPC$ IPC IPC Service REWRITE: list servers not implemented
E la configurazione di Samba base è fatta! Ora potete provare a loggarvi con il client Windows seguendo i passi qui descritti #Logging_in
Kerberos
Installiamo:
- apt-get install krb5-user
Come deve essere /etc/krb5.conf (e /var/lib/samba/private/krb5.conf):
[libdefaults] default_realm = AGNO.LAN dns_lookup_realm = false dns_lookup_kdc = true
Init:
- kinit administrator@AGNO.LAN
Creazione utente e ticket da dare ai client, occhio che è prezioso. Questo ticket in particolare ci servirà per i servizi di LDAP:
- samba-tool user add ldap-service
- samba-tool user setexpiry ldap-service --noexpiry
- samba-tool domain exportkeytab /etc/nslcd.keytab --principal=ldap-service
NFS - Export *nix homes
Installare NFS-Server:
- apt-get install nfs-kernel-server
Aggiunge questa riga in /etc/exports:
/home/AGNO 192.168.1.0/24(rw,sync,sec=none:sys:krb5:krb5i:krb5p,no_subtree_check,insecure)
Dove dentro /home/AGNO ci sono le home degli utenti LDAP. Per far si che la home venga creata al primo avvio, aggiungere in /etc/pam.d/common-account su tutti i client:
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
Non testato.
Dare un occhio a AutoFS per risparmiare banda(?)
Client
Client Windows
Logging in
- Nella scheda di rete, nella configurazione di TCP/IP impostare come DNS il server con bind (192.168.1.100) e controllare su Avanzate che sia abilitato NetBios
- Tasto destro su Risorse del Computer - sulla seconda scheda, cliccare Cambia... e mettere come Dominio agno.lan
- Nel popup dove richiederà Utente e Password, mettere: administrator e la password scelta durante l'installa di Samba4
- Pregare
- Se dopo una decina di secondi, sentite un bel suono e vedete la scritta OK! Il gioco è fatto!!
- Provate a loggarvi con utente: administrator e la password scelta durante l'installa di Samba4
- Per aggiungere nuovi utenti, utilizzare ADUC da Win (scaricabile gratuitamente da qui: http://www.microsoft.com/en-us/download/details.aspx?id=16770 e poi lo troverete sotto: Pannello di Controllo - Tools amministrazione...) oppure dal server Samba con il comando: samba-tool user add nomeutente
Roaming profile
Guarda qui: https://wiki.samba.org/index.php/Samba_%26_Windows_Profiles#Profiles_share_on_a_Samba_4.x_server
Di base, si aggiunge questo a smb.conf sul server:
[Profiles] path = /srv/samba/Profiles/ read only = no
Verificare con esplora risorse in \\\srv la presenza delle cartelle condivise dal file smb.conf e settare in modo corretto i permessi, facendo tasto destro da Win. Chiaramente è bene farlo quando si è collegati con l'utente Administrator.
Poi:
- aprire ADUC
- cliccare con il testo destro su un account di un utente e scegliere "Proprietà"
- andare nel tab "Profilo" e riempire il path dello "User profile" tipo: \\\srv\Profiles\%USERNAME%
Queste operazioni si possono fare anche selezionando più utenti contemporaneamente, grazie alla comodità di: %USERNAME%
Client Linux
Posix User
La prima cosa da fare è aggiungere un POSIX User su LDAP (server). Se magari si ha un manager web tipo GoSA o PHPLDAPADMIN funzionante (non è il nostro caso), si riesce a fare tranquillamente da li:
- samba-tool user add samu
- samba-tool user setexpiry samu --noexpiry
- samba-tool group add linari
- mkdir /home/AGNO/samu
- vi /tmp/user.ldif
e buttarci dentro:
dn: cn=samu,cn=Users,dc=agno,dc=lan changetype: modify add: objectClass objectClass: posixAccount - add: uidNumber uidNumber: 3001 - add: gidNumber gidNumber: 3000 - add: unixHomeDirectory unixHomeDirectory: /home/samu - add: loginShell loginShell: /bin/bash
e vi /tmp/group.ldif:
dn: cn=linari, cn=Users,dc=agno,dc=lan changetype: modify add: objectclass objectclass: posixGroup - add: gidNumber gidnumber: 3000
- ldbmodify -H ldap://srv -k yes /tmp/group.ldif (se non va, date prima un kinit administrator)
- ldbmodify -H ldap://srv -k yes /tmp/user.ldif (se non va, date prima un kinit administrator)
Logging in
Installare tutti i pacchetti necessari e rispondere in modo corretto alle domande, magari prendendo spunto dai passaggi precendenti (es. realm=AGNO.LAN e domain=AGNO) e successivi (es. per nsswitch.conf):
sudo apt-get install libnss-ldapd krb5-user libsasl2-modules-gssapi-mit kstart samba4-clients
Verificare il contenuto di dei file di PAM:
- cat /etc/pam.d/common-auth | grep ldap
auth [success=1 default=ignore] pam_ldap.so minimum_uid=1000 use_first_pass
- cat /etc/pam.d/common-account | grep ldap
account [success=ok new_authtok_reqd=done ignore=ignore user_unknown=ignore authinfo_unavail=ignore default=bad] pam_ldap.so minimum_uid=1000
- cat /etc/pam.d/common-session | grep ldap
session [success=ok default=ignore] pam_ldap.so minimum_uid=1000
Controllare nsswitch:
- cat /etc/nsswitch.conf
passwd: compat ldap group: compat ldap shadow: compat ldap hosts: files dns networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis
Sistemare nslcd, demone incaricato di fare le query LDAP:
- sudo vi /etc/nslcd.conf
uid nslcd gid nslcd uri ldap://192.168.1.100 base dc=agno,dc=lan map passwd uid samAccountName map passwd homeDirectory unixHomeDirectory sasl_mech GSSAPI sasl_realm AGNO.LAN krb5_ccname /var/run/nslcd/nslcd.tkt
- sudo vi /etc/default/nslcd
K5START_START="yes" K5START_BIN=/usr/bin/k5start K5START_KEYTAB=/etc/nslcd.keytab K5START_PRINCIPAL=ldap-service
Kerberos stuff:
- sudo vi /etc/krb5.conf
[libdefaults] default_realm = AGNO.LAN dns_lookup_realm = false dns_lookup_kdc = true
- sudo scp root@192.168.1.100:/etc/nslcd.keytab /etc/nslcd.keytab
- sudo kinit -k -t /etc/nslcd.keytab -p ldap-service/srv.agno.lan@AGNO.LAN
Modificare il file di configurazione del DM:
- sudo vi /etc/lightdm/lightdm.conf
[SeatDefaults] greeter-session=lightdm-gtk-greeter user-session=Lubuntu greeter-show-manual-login = true
- sudo net ads join -UAdministrator anche se è sempre fallito questo comando...
Inizializzare Kerberos:
- kinit administrator
Modificare ldap.conf:
- sudo vi /etc/ldap/ldap.conf
BASE dc=agno,dc=lan URI ldap://srv.agno.lan TLS_CACERT /etc/ssl/certs/ca-certificates.crt
Samba:
- sudo vi /etc/samba/smb.conf:
[global] workgroup = AGNO realm = AGNO.LAN security = ADS kerberos method = system keytab
Restartare i servizi:
- sudo service nslcd restart
Aggiungere il nome e IP del dc:
- sudo vi /etc/hosts
127.0.0.1 localhost 127.0.1.1 agno-lubu-virt.agno.lan agno-lubu-virt 192.168.1.100 srv.agno.lan
Verificare il funzionamento di LDAP:
- ldapsearch -H ldap://srv.agno.lan
- getent passwd
L'ultimo comando dovrebbe ritornare anche gli utenti di LDAP.
Riavviate e...ora potete provare la loggarvi, magari provate prima con login testuale per vedere ententuali errori.
P.S. anche qui sulle impostazioni della scheda di rete va impostato il DNS a 192.168.1.100
Export home utenti
Aggiungere a /etc/fstab la seguente riga:
srv.agno.lan:/home/ /home/ nfs4 _netdev,auto 0 0
Occhio che forse è melgio spostare le home da qualche altra parte, altrimenti così si perdono gli utenti del sistema locale.