
Nel precedente articolo sono stati illustrati i metodi per effettuare delle interrogazioni ad un dominio Active Directory attraverso una macchina Linux al cui interno è configurato SAMBA. Nell’ultimo esempio illustrato l’esito dell’interrogazione presentava un elenco del tutto simile al contenuto del file /etc/passwd che in ogni sistema Linux contiene le informazioni di accesso degli utenti. La riflessione nata spontaneamente è quindi se si può fare in modo che il sistema sia configurato per supportare l’autenticazione via Active Directory in fase di login. La riposta è sì, ecco spiegato come.
Condividere una cartella
La configurazione illustrata nel primo articolo della serie consente di autenticare l’accesso a cartelle condivise mediante le credenziali presenti nel Active Directory.
Per condividere una cartella è sufficiente aggiungere al file di configurazione di SAMBA /etc/samba/smb.conf una dichiarazione come la seguente:
[Test]
comment = Test
path = /samba/test
write list = DOMINIO.IT/user1
read list = @"DOMINIO.ITgruop1"
read only = Yes
browseable = Yes
create mask = 0775
directory mask = 0775
dopo aver effettuato il reload del servizio attraverso il comando:
$ /etc/init.d/samba reload
la directory, supponendo che l’indirizzo IP della macchina sia 192.168.0.100, sarà disponibile per l’accesso dalla rete all’indirizzo //192.168.0.100/Test. L’utente DOMINIO.ITuser1 (così andrà digitato alla schermata di login) avrà il permesso di scrittura mentre tutti gli utenti del gruppo DOMINIO.ITgroup1 potranno accedere in lettura alla condivisione.
Ma questa è solo la punta dell’iceberg. Come già detto, la configurazione di SAMBA permette di sfruttare il metodo di autenticazione in modo che il sistema stesso in fase di login si riferisca al dominio Active Directory.
PAM, brevemente
PAM (Pluggable Authentication Modules) definisce un metodo standard ad alto livello per gestire l’autenticazione. Questo strato è comune a tutti i sistemi Linux (sebbene le varie versioni non operino tutte allo stesso modo) e consente a coloro i quali sviluppano servizi con autenticazioni proprie di creare moduli che rispettino l’interfaccia di programmazione relativa a PAM.
In questo modo, potenzialmente, qualunque sistema di autenticazione può essere integrato con il login di sistema.
Una panoramica dettagliata di quello che è PAM e di come funziona è disponibile presso Kernel.org, precisamente a questo link: http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html.
Integrazione di winbind con PAM per il login via Active Directory
La configurazione di PAM all’interno del sistema è contenuta in una serie di file, in Debian Lenny, la distribuzione utilizzata in questa serie di articoli, tali file si trovano nella cartella /etc/pam.d:
$ ls -1 /etc/pam.d/
chfn
chsh
common-account
common-auth
common-password
common-session
cron
login
omauth
other
passwd
samba
ssh
su
In particolare i file interessati nella fase di login sono common-account, common-auth e common-session.
La componente SAMBA che gestisce l’interfacciamento con Active Directory è, come già spiegato, winbind. Il pacchetto fornito con le maggiori distribuzioni fornisce, fra gli altri, quello che è il file base per l’introduzione di Active Directory nel login di sistema: pam_winbind.so. Tale file dovrà essere introdotto all’interno della configurazione del sistema di login.
Il primo file ad essere modificato dovrà essere /etc/pam.d/common-account il cui contenuto dovrà essere il seguente:
account sufficient pam_winbind.so
account required pam_unix.so
Questo file di default controlla che la password dell’utente non sia scaduta. Con l’aggiunta della riga relativa a winbind inoltre assume come sufficiente la credenziale verificata da Active Directory.
Il secondo file da considerare sarà /etc/pam.d/common-auth che di default impone l’utilizzo del meccanismo UNIX standard per l’autenticazione. Tale file dovrà assumere questo contenuto:
auth sufficient pam_winbind.so
auth required pam_unix.so nullok_secure use_first_pass
Quanto inserito comunica al sistema di considerare sufficiente l’avvenuta autenticazione con winbind. Nella seconda riga viene aggiunto il parametro use_first_pass in modo che venga utilizzata la prima password inserita per autenticare l’utente e prevenire una doppia richiesta di inserimento per la parola d’ordine.
L’ultimo file che andrà modificato è /etc/pam.d/common-session che contiene le informazioni relative alle sessioni interattive e non che l’utente potrà avviare:
session required pam_unix.so
session required pam_mkhomedir.so skel=/etc/skel umask=0022
rispetto al default viene aggiunta la riga relativa al modulo pam_mkhomedir.so per fare in modo che il sistema per ogni utente identificato che non possiede una home directory ne crei una ex-novo partendo dalle specifiche presenti nel file di /etc/skel con i permessi di scrittura relativi.
Prova di login
A questo punto il sistema è pronto a permettere il login alle utenze Active Directory, relativamente a tutti i servizi, compreso ssh:
$ ssh "DOMINIO.IT\user1"@192.168.0.100
DOMINIO.ITuser1@192.168.0.100's password:
Creating directory '/home/DOMINIO.IT/user1'.
Linux anomalia 2.6.26-1-686 #1 SMP Fri Mar 13 18:08:45 UTC 2009 i686
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
DOMINIO.IT\user1@anomalia:~$
Essendo il primo tentativo di login effettuato e data la configurazione PAM precedentemente illustrata, il sistema ha creato la directory /home/DOMINIO.IT/user1.
Nella cartella /home/DOMINIO.IT verranno pertanto registrate tutte le home directories relative agli utenti:
$ ls -la /home/DOMINIO.IT/
totale 12
drwxr-xr-x 3 root root 4096 9 apr 17:32 .
drwxr-xr-x 3 root root 4096 9 apr 17:32 ..
drwxr-xr-x 2 DOMINIO.IT\user1 DOMINIO.IT\domain users 4096 9 apr 17:32 user1
L’accesso al sistema degli utenti Active Directory è garantito nella stessa medesima forma degli utenti di sistema standard.
Conclusioni
Questa panoramica di SAMBA ha voluto illustrare quello che è lo stato dell’arte dell’integrazione tra SAMBA e Microsoft Active Directory ad oggi, ma moltissime sono le novità che bollono in pentola dal team di sviluppo del progetto Samba. La versione 4 è ormai una realtà e sebbene la strada verso la prima release stabile sia lunga, le aspettative in merito sono altissime. Questa versione sarà la prima ad integrare la completa gestione di Active Directory ed un’altra serie di importanti novità che potranno, perché no, essere argomento di un prossimo articolo.
Articoli della serie
Samba e Active Directory (1 di 3): diventare parte di un Dominio
Samba e Active Directory (2 di 3): interrogare il dominio
Samba e Active Directory (3 di 3): configurare pam per l’autenticazione locale
Da sempre appassionato del mondo open-source e di Linux nel 2009 ho fondato il portale Mia Mamma Usa Linux! per condividere articoli, notizie ed in generale tutto quello che riguarda il mondo del pinguino, con particolare attenzione alle tematiche di interoperabilità, HA e cloud.
E, sì, mia mamma usa Linux dal 2009.






















Ciao! Complimenti per la guida!! Direi perfetta 😀 l’unico problema che ho riscontrato, è che non riesco a gestire i permessi degli utenti di cominio!!Sembra che vengano utilizzati solo quelli locali.. e quindi tutti (utenti di dominio) hanno gli stessi permessi! 🙁
Grazie
Ciao Marco,
grazie per i complimenti. Riguardo al tuo problema, dovresti essere più specifico: abbiamo gestito installazioni piuttosto complesse organizzando accessi attraverso gruppi e configurazioni specifiche per cui credo possiamo essere in grado di aiutarti. Anzitutto il tuo obiettivo qual’è?
Grazie della risposta!
Il mio obiettivo è utilizzare un server linux con samba come nas. Vorrei poter assegnare qualsiasi permesso alle cartelle condivise, che potranno essere lette/scritte da uno o più utenti.
Attualmente riesco ad accedere alla cartella test, perchè sono utente del dominio(da un pc non nel dominio,chiede giustamente user e password), ma non riesco a definire i permessi di lettura o scrittura. Come se gli utenti impostati nel file smb.conf venissero ignorati.
Se invece imposto “valid users = nome_utenti_ammessi” non mi fa più accedere chiedendo mostrando sempre la finestra di login.
Diciamo che funziona tutto perfettamente fino alla parte 2di3 di questa guida
Spero di non sembrare seccante, ma volevo informarti sulle novità 🙂
Allora, “ho scoperto” che come detto prima, riguardo ai permessi cioò che scrivo nel file, non viene eseguito, mentre ho provato ad agire da linea di comando e con chown, chgrp e chmod riesco a fare tutto 😀 Ma non so se è questo il metodo giusto!
Ciao Marco,
non sei affatto seccante, figurati. Il concetto è che attraverso le configurazioni illustrate nell’articolo i permessi locali possono essere associati a permessi active directory. E l’approccio deve essere quello: non basta dire a SAMBA “a questo share può accedere questo gruppo/utente”, tali permessi devono esistere EFFETTIVAMENTE sul filesystem.
Quindi è corretto impostare prima di tutto attraverso chown, chgrp e via dicendo i permessi sulle cartelle locali.
Felice che tu abbia risolto, a presto!
Quindi questo è effettivamente il metodo corretto?
E se devo assegnare i permessi di scrittura di una cartella a più persone come faccio? Devo creare ogni volta un gruppo?
Potrei farti altre domande se a te non scoccia?
Grazie mille
Direi che il metodo corretto è proprio questo. Del resto si applica a tutti i sistemi Linux in generale, a prescindere da Active Directory.
L’ideale per come la vedo io è questa situazione: hai utente1 ed utente2 che appartengono a gruppo1 e devono accedere alla directory dir1.
I permessi sulla directory saranno impostati con il setgid, così:
# chgrp gruppo1 dir1
# chmod 2770 dir1
In questo modo tutti gli appartenenti al gruppo gruppo1 potranno scrivere in dir1 e tutti file e directory creati nella dir apparterranno al gruppo gruppo1.
Sostituisci a gruppo1 il tuo gruppo Active Directory ed il gioco è fatto.
Ok, ma l’aspetto negativo, rispetto ad un nas ad esempio, è che per ogni cartella dove devono avere accesso più utenti, devo ogni volta creare un gruppo… potrei ritrovarmi così anche 50 gruppi!.. Ma è possibile che un utente appartenga a più gruppi?
Beh credo sia tutto relativo, in un NAS credo che comunque i permessi li devi impostare.
L’indubbio vantaggio di usare AD è che puoi gestire tutto in maniera centralizzata. In merito ai 50 gruppi inevitabilmente tutto dipende dalla complessità della tua architettura.
Un utente può appartenere a quanti gruppi vuoi.
Va bene, grazie 😀
Però in un nas è meno macchinoso perchè non devi creare gruppi, ma associ gli utenti direttamente. (E tu dirai..usa un nas allora! 😛 )
approfitto della conoscenza se permetti 😛
Ho notato che riavviando il servizio samba, mi sega la connessione da risorse di rete… quindi il collegamento con i file, è normale?
Ma dopo aver configurato i permessi da linea di comando, per una cartella Samba allora bastano 4 righe così?:
[nomecartella]
path = /samba/nomecartella
browseable = yes
writeable = yes
Il comportamento di samba con connessioni aperte che vengono abbattute devo verificarlo, da quel che ricordo non dovrebbero verificarsi disconnessioni, ma non ne ho la certezza.
Per quanto riguarda le share, per come la vedo io dovresti usare oltre alle opzioni indicate anche questo:
valid users = @”DOMINIO\gruppo”
write list = @”DOMINIO\gruppo”
ma rispetto alla configurazione che hai creato questo è utile soprattutto ai fini di una coerenza generale.
Ho verificato che se uso questo comando “valid users = @”DOMINIO\gruppo””
non mi fa accedere più alla cartella chiedendo sempre user e password..
Ecco, questo non dovrebbe accadere.
Ci dev’essere qualcosa che non va nella configurazione. Dovresti spulciare i log e capire cosa contengono, in particolare il /var/log/samba/log.smbd e vedere esattamente dove e come si verifica l’errore.
Ok, verifico.. Ma come mai nell’esempio più sopra hai indicato # chmod 2770 dir1?
Non sono tre i numeri da indicare? Che corrisposono a Proprietario-Gruppo-Altri.
In “valid users = DOMINIO/utente” è possibile scrivere più utenti?
O bisogna usare sempre i gruppi?
Il motivo del 2 prima del 770 nel chmod è il setgid, leggi qui: http://it.wikipedia.org/wiki/Setuid_e_setgid.
Mi correggo riguardo a:
“Ho verificato che se uso questo comando “valid users = @”DOMINIO\gruppo””
non mi fa accedere più alla cartella chiedendo sempre user e password..”
Non mi da più questo problema.
Ecco, così ha senso 😉
A presto!
Grazie ancora di tutto!
Solo un’ultima cosa, ho creato i vari gruppo in active direcotry su W2003, ma con chgrp me li riconosce, ma poi gli utente appartenenti al gruppo non riescono ad accedere alle cartelle! ;(
Ho scordato qualcosa?
Gruppi windows-> utenti windows-> chgrp gruppo_windows
Direi che la procedura è quella.
Se poi il sistema comunque i gruppi li riconosce, vuol dire che tutto funziona.
Prova ad effettuare un reload di Samba.
Ha preso a funzionare dopo 2 restart di samba…vabbè!
Hai detto che ti è capitato di fare configurazioni complesse, mi se è posto il problema di avere che 3 utenti debbano scrivere su una cartella(creo il gruppo ok..), ma altri 3 devono solo poter leggere… Come assegno questi permessi?
Mi sembra che in linux esista solo proprietario e gruppo proprietario.. O sbaglio?
Crei un gruppo in lettura ed un gruppo in scrittura e li gestisci con read list e write list.
Se la cosa si complica ulteriormente puoi pensare di usare le ACL posix, ma lì si complica davvero 🙂
Ri-ciao! Mi è sorto un nuovo dubbio, può essere che la modifica al file /etc/pam.d/common-auth
centri con il fatto che ora il sistema mi richiede sempre la password di root 2 volte e non 1?
auth sufficient pam_winbind.so
auth required pam_unix.so nullok_secure use_first_pass
Ciao Marco,
la configurazione di quel file è corretta.
Controlla gli altri e soprattutto cosa viene loggato nel file /var/log/auth.log quando cerchi di autenticarti.
Grazie della risposta, e scusa se ti disturbo spesso, sto cercando di risolvere un problema lagato a i file access con Samba; praticamente tutti possono leggere e scrivere il file, ma se vi accedono più persone contemporaneamente, poco dopo appare un messaggio d’errore di rete. Leggevo qui http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/locking.html di questo “oplocks” e volevo capire se è la soluzione adatta a me. A te è già capitato di gestire file Access dove più persone leggono e scrivono? Grazie mille per l’eventuale risposta!
Ciao Marco,
io credo che se non hai esigenze specifiche l’ideale sarebbe quello di configurare “Exclusively Accessed Shares” in modo che i file possano essere modificati solo da un utente alla volta.
Gestire accessi in cui più utenti accedono il scrittura contemporaneamente è una cosa molto, molto delicata, che peraltro, su file windows che verosimilmente sono Excel e Word sconsiglio vivamente…
Eh ma purtroppo questo è un database dove accedono per forza più persone…. Ahimè questa realtà è molto diffusa..
Allora credo che l’unica cosa che ti rimane da fare è quella di seguire il link che hai indicato.
Posta qui le tue impressioni, serviranno come completamento dell’articolo.
In bocca al lupo!
Ciao, complimenti per l’ottima guida! l’ho seguita passo passo e sono riuscito a diventare parte del dominio active directory. ho però un problema:
ho ubuntu 9.10 che si collega ad un server microsoft server 2008.
nella finestra di accesso ad ubuntu, se entro con il nome utente e password di un membro del dominio active directory , parte il caricamento di ubuntu (e sono sicuro che mi riconosce perche al primo accesso mi ha creato la home directory) però dopo qualche secondo mi torna alla schermata di accesso dove devo inserire username e password!
se invece cerco di effettuare l’accesso tramite console testuale mi fa accedere ma mi compare una negazione dei permessi per quanto riguarda la directory “./profile”, così:
“-bash /home/MIODOMINIO/gianluca/.profile: Permesso negato”
Hai qualche idea per risolvere? grazie mille in anticipo!
Ciao Gianluca,
la cosa migliore da fare è controllare i permessi delle directory locali e spulciare i log per capire quel “permesso negato” a cosa si riferisce.
Se la login avviene a livello di autenticazione con il server sei a posto, pertanto il problema è locale.
A presto!
intanto grazie mille della risposta tempestiva..
mi trovo un pò spaesato in questo contesto, potresti essere un pò più dettagliato su cosa potrei fare per capire da cosa proviene quel “permesso negato”?..
a quali file di log devo fare riferimento?
I log di samba si trovano nella cartella /var/log/samba. Qui troverai diversi file, ma quelli che interessano te sono principalmente tre:
– log.nmbd: che contiene informazioni sul comportamento del demone all’interno della rete;
– log.smbd: che contiene informazioni sull’iterazione con gli utenti (e questo potrebbe interessarti);
– log.winbind: che contiene informazioni sull’iterazione di samba con il dominio;
Io darei un occhio a tutti e tre per vedere se contengono qualcosa di evidente, ma più che altro mi metterei in tail su log.smbd e proverei a fare un login per vedere cosa viene loggato.
Ciao!
Ciao, complimenti per la guida.
Vorrei aprofittare della tua esperienza per una consulenza se puoi;
ho aggiunto a un dominio win2003 AD un server con CentOS 5.4 x86_64 con la home divisa in due, 100GB per una macchina virtuale win2003 e 100GB da condividere con samba per gli utenti del dominio.
Ho realizzato la configurazione utilizzando le Tue linee guida, salvo avere dei problemi con la parte relativa allo share; io volevo che solo gli utenti di dominio che fanno parte del gruppo denominato “Servizio pippo” acceda a questa condivisione sia in lettura che in scrittura e in maniera anche multipla su file .mdb di access, oltre che al gruppo Administrator.
Per fare ciò ho inserito la direttiva:
valid users = %D+%S ma questa direttiva dava accesso a tutti gli utenti di AD;
dopo un po’ di prove ho realizzato che la direttiva giusta era:
valid users = @%D+”Servizio pippo”
mentre per l’utente amministratore ho dovuto inserire il nome dei due utenti singoli che sono anche amministratori di dominio perchè la direttiva
valid users = @%D+”Administrators” non funzionava.
Sul file system ho dato come permessi alla directory base ” chmod -R 774″ e come proprietari ho dato “chown -R root:domain users”.
Secondo Te è giusto quello che ho fatto?
Ci sono altri parametri che dovrei specificare nella sezione share?
io ho inserito anche:
create mask = 774
directory mask = 774
msdfs root = yes
dos filemode = yes
inherit permissions = yes
vanno bene o sono superflui?
Grazie.
Ciao Maurizio,
il modo in cui hai specificato gli utenti ed i gruppi è corretto, potresti valutare per lo share di definire alla stessa maniera direttive relative alla “write list” ed alla “read list”.
Riguardo ai permessi locali che hai assegnato via chmod, sconsiglio di mettere 774, in quanto che tutti possano leggere, da quel che ho capito, a te non interessa. Considera quindi che 770 potrebbe essere una scelta vincente.
Per il resto l’opzione specifica “msdfs root” l’hai dichiarata con il valore di default che comunque verrebbe considerato, per cui è superflua.
“dos filemode” e “inherit permissions” io in genere tendo sempre a non utilizzarle in favore di una configurazione locale dei permessi coerente, il fatto che tu abbia assegnato la dir a tutto il gruppo “Domain users” e che questo abbia permesso di scrittura comporta per forza problemi.
In genere io creo gruppi AD specifici a cui assegno i permessi delle dir su SAMBA ed assegno a “valid users” il valore “@DOMINIO\Mio gruppo” o “@DOMINIO+Mio gruppo” che dir si voglia.
Spero di aver chiarito i tuoi dubbi.
Dubbi chiariti!
Grazie mille per l’attenzione dedicatami e la velocità della risposta.
Mi inchino alla tua chiarezza e ti ringrazio infinitamente.
3 articoli spettacolari e utilissimi.
Grazieeee !
Grazie per le guide e le risposte che ho trovato estremamente chiare ed esaurienti.
Ho agganciato ad un’AD 2 server ubuntu che fungono da file server e vanno benissimo.
solo che in uno, quando accedo finisco nella cartella /NOMEDOMINIO/HOME/UTENTE
mentre nell’altro, viene creata una cartella /XXXX/HOME/UTENTE
dove XXXX è un numero (spesso diverso, ma non sempre)
potresti darmi una mano anche su questo?
ancora, grazie mille per il lavoro
Ciao,
le configurazioni dei due server sono identiche? Perché ciò che precede HOME/UTENTE dovrebbe essere appunto coerentemente il nome dominio.
Dovresti controllare queste cose in particolare come vengono esportate le directory relative ai profili.
In bocca al lupo!
infatti sto verificando ancora una volta l’allineamento delle 2 configurazioni. ma trovo tutto apparentemente identico. /krb5.conf, /smb.conf…
grazie comunque!
Molto strano, la home directory degli utenti puoi capirla da qui:
$ for i in `wbinfo -u –domain=DOMINIO.IT`; do wbinfo -i “$i”; done
DOMINIO.IT\user1:*:10000:10004:User 1:/home/DOMINIO.IT/user1:/bin/bash
DOMINIO.IT\user2:*:10001:10004:User 2:/home/DOMINIO.IT/user2:/bin/bash
DOMINIO.IT\user3:*:10002:10004:User 3:/home/DOMINIO.IT/user3:/bin/bash
DOMINIO.IT\user4:*:10003:10004:User 4:/home/DOMINIO.IT/user4:/bin/bash
In base al responso di questo comando hai un’idea chiara di come sono associate le home.
scusa per il ritardo! infatti e’ evidente che qualcosa non e’ corretto nella configurazione. la risposta alla stringa d’interrogazione è
“Could not get info for user .NOME_UTENTE.”
(anche dopo aver fatto un kinit -V e da sudo)
il problema è che ho una 20na di utenti che già lavorano nelle condivisioni di SAMBA, altrimenti piallavo e ripartivo daccapo
Di conseguenza il problema è relativo al demone winbind. E’ avviato? Cosa dicono i log?
grazie per la tua pazienza.
quali log di preciso?
qui riporto un sunto di ‘log.winbindd-idmap’
—————–
[2010/05/27 13:21:19, 0] winbindd/idmap.c:149(smb_register_idmap)
Idmap module nss already registered!
[2010/06/03 08:38:50, 0] winbindd/idmap.c:201(smb_register_idmap_alloc)
idmap_alloc module tdb already registered!
[2010/06/03 08:38:50, 0] winbindd/idmap.c:149(smb_register_idmap)
Idmap module passdb already registered!
[2010/06/03 08:38:50, 0] winbindd/idmap.c:149(smb_register_idmap)
Idmap module nss already registered!
————–
e di ‘log.winbindd-dc-connect’
————–
[2010/04/06 08:26:11, 1] libads/cldap.c:154(recv_cldap_netlogon)
no reply received to cldap netlogon
[2010/04/29 13:56:42, 1] libads/cldap.c:154(recv_cldap_netlogon)
no reply received to cldap netlogon
————–
indubbiamente non sono allettanti, ma non saprei come correggere.
No, non si capisce molto da questi log, ma continuo ad essere convinto che il problema dipenda da Winbind.
Prova a ricontrollare le conf. C’è di sicuro qualcosa che non torna lì.
Ciao, innanzitutto voglio farti i miei complimenti per questi tre articoli, scritti in modo veramente chiaro e completo; non se ne trovano di guide fatte così bene sulla Rete!
Grazie alla lettura di questa tua guida, infatti, son riuscito nell’intento di mettere sotto dominio Windows una macchina linux, con tanto di gestione delle utenze e delle policies dei gruppi.
Volevo farti notare due piccole precisazioni al fine di migliorare ulteriormente il tuo articolo:
Riguardo ntpdate, trovo più utile interfacciare la macchina direttamente con l’orario del server di dominio che andremo ad utilizzare, per farlo basta digitare l’indirizzo IP del server al posto di “time.ien.it”.
Riguardo Samba, con le ultime versioni il demone si avvia/ferma tramite il comando:
# service smbd stop | start | restart
E invece per la questione delle policy di accesso\lettura\scrittura sulle cartelle condivise, ci ho perso la testa per capire bene il funzionamento, dato che su Internet tutti dicono una cosa diversa. Posso dire di avere risolto ogni problema mediante un semplice passaggio che non risulta nell’articolo.
Praticamente prima di poter “validare” gli users in lettura o scrittura tramite Samba, bisogna dare i permessi a tutti sul filesystem tramite:
# chmod -R 777 /directory/da/usare
e poi tramite Samba usando i parametri che hai descritto nella guida;
anche se io al posto di “read list” preferisco usare “valid users”.
È tutto, rinnovo ancora i miei complimenti e ti ringrazio per l’ottimo lavoro. 🙂
Ciao Andrea e grazie per i complimenti.
In merito alle osservazioni:
– Assolutamente d’accordo con il discorso NTP, ha certamente più senso sfruttare l’NTP del server AD;
– “service” è ormai standard, ma onde evitare qualsiasi dubbio, il buon vecchio /etc/init.d/ è certamente valido;
– I permessi 777 sono il male 🙂 lo vado ripetendo in tutti i corsi che tengo, perché è una verità. Risolvere un problema di accesso dando accesso a tutti è un errore, che inoltre espone a numerosi rischi di sicurezza. Non farlo mai. Se il sistema non permette la scrittura, allora sarà necessario impostare le corrette appartenenze di file e gruppi. Ricorda ad esempio che volendo potresti assegnare una cartella ad un gruppo di utenze AD, con permessi 770 e saresti tutelato da accessi indesiderati. Ad ogni modo il 777, no, non serve praticamente mai.
Detto questo, se vuoi approfondire ulteriormente la tua configurazione, fornisci maggiori dettagli in merito a cosa vuoi fare, vedrai che una soluzione diversa dal 777 si trova sempre, te lo garantisco.
A presto.
Ciao Raoul, grazie per la velocità di risposta.
Ho appena provato a settare un chmod 770 sulla directory che voglio condividere ma sorge un problema; ovvero che non riesco nemmeno ad accedere alla cartella. Se metto 775 ci accedo ma non posso scrivere/cancellare, in barba al parametro
“write list = DOMINIO.IT\nome.utente” che teoricamente dovrebbe darmi abilitazione alla scrittura…
Perché il sistema non categorizza i gruppi Active Directory come la seconda cifra numerica, che di norma è quella che interessa i Gruppi, appunto? (non è forse “Owner”, “Groups”, “Others” la sequenza delle tre cifre?)
A quanto pare per abilitare i gruppi o gli utenti di Active Directory devo settare la cifra corrispondente ad “altri” sul 7, altrimenti nisba.
A questo punto stavo pensando… forse farei prima a cambiare il gruppo d’appartenza della directory con ‘chgrp’ e impostandolo sul gruppo generico “Domain Users” di AD, e poi servirmi di Samba per gestire le policy…
Il problema è che non so che comando dare per fargli capire di usare il gruppo di AD e non uno di sistema (quale root, utente, etc)…
Non so se mi sono spiegato, in caso me ne scuso.
Ti ringrazio già anticipatamente per i preziosi consigli e per il tempo che mi dedicherai, non c’è alcuna fretta in ogni caso. Ti auguro una buona giornata!
Andrea
Ciao Andrea,
stai ignorando la principale questione: chi è il proprietario di quei file? Se l’utente con cui stai cercando di scrivere non è il proprietario o non fa parte del gruppo, con i permessi 770 non ci accederai mai. Anche se in SAMBA il tuo utente è abilitato.
La sequenza è quella che indichi tu ed anche la soluzione è quella che hai scritto:
o se vuoi modificare user e group in una volta sola:
A presto!
Ciao Raoul,
innanzitutto ancora mille grazie per la celerità e la professionalità con la quale rispondi.
Come seconda cosa volevo dirti che effettivamente cambiando il gruppo di appartenenza della directory, sono riuscito a fare tutto. Avevo già provato a cambiare gruppo tramite “chgrp” ma stupidamente non avevo considerato le virgolette nella sintassi e per questo non mi riconosceva il comando.
Ultima domanda, è possibile abilitare più gruppi a una directory tramite “chgrp”? No vero? Altrimenti si avrebbero più proprietari su una stessa directory, dico bene?
Questo perché nel dominio AD sono presenti davvero molti gruppi diversi, e magari più utenti sono in gruppi diversi contemporaneamente, ma magari potrebbero dover avere accesso anche in scrittura alla stessa directory.
Questo eventualmente si può risolvere appunto come dicevo prima, ovvero dando come proprietario della dir il gruppo generico “Domain Users” di AD, e poi gestire tramite SAMBA le writelist più opportune.
Che dire, rinnovo ancora i miei complimenti e i ringraziamenti!
Ciao e a presto!
La soluzione è proprio quella che hai descritto. Sono davvero felice che sei riuscito a raggiungere il tuo obiettivo, eliminando il 777 (che è il MALE :-D).
Ciao ti scrivo per cheidere un aiuto su samba.
Praticamente quando lancio il comando:
e poi verifico il risultato con klist, il server risponde:
e fin qui non ci sono problemi.
Ma quando lancio il comando:
il server risponde:
Lo stesso comando se lo lacnio dopo le 18:00 di sera, funziona e il server risponde:
Ma quando la mattina dopo torno a lavoro, trovo il server sganciato dal domain controller, allora rilancio l’struzione net ads join -U Administrator, ma mi restituisce l’errore postato sopra.
Mi aiutate a risolvere questo problema?
E un mese che ci vado dietro..
Allego la configurazione del mio server:
file /etc/krb5.conf
[logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] ticket_lifetime = 24000 default_realm = DOMINIO.LOCAL dns_lookup_realm = true dns_lookup_kdc = true [realms] DOMINIO.LOCAL = { kdc = server.dominio.local:88 admin_server = server.dominio.local:749 default_domain = dominio.local } [kdc] profile = /var/kerberos/krb5kdc/kdc.conf [domain_realm] .dominio.local = DOMINIO.LOCAL dominio.local = DOMINIO.LOCAL [appdefaults] pam = { debug = false ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = true krb4_convert = false }file /etc/samba/smb.conf
file /etc/nsswitch.conf
In piu volevo cheidervi a cosa servono questi parametri:
in rete non sono molto chiari..
Un grazie in anticipo..
Le configurazione sembrano corrette, inoltre il fatto che in orari non lavorativi il tutto risponda mi fa pensare a limitazioni lato server AD (quindi server Windows) che impongono determinati orari per le join.
Non riesco ad essere più specifico, ma credo che la soluzione vada cercata lì.
Le opzioni che citi sono relative alle richieste effettuate al server: per quanto dovranno esistere i ticket che ti verranno consegnati dal server (nel tuo caso 6,5 e 10 ore). Prova ad operare su quei parametri, rimuovendoli o abbassandoli, sembrano proprio corrispondere con i tempi di funzionamento dei tuoi ticket.
In bocca al lupo!
Ciao,piccola domandina.
Volevo creare un file server utilizzando ubuntu 12.10
al momento il server è configurato e perfettamente funzionante.Vorrei poi creare degli script, in fase di login,per mappare delle cartelle in base all’utente che effettua il login sulla sua macchina xp pro.
al momento queste mappature sono gestite da un client novel(che vorrei eliminare).
quindi io sotto ad per utente pippo,in fase di login gli creerei una mappatura che punta al server linux.
La mia necessità è quindi quella di condividere le informazioni ( utente/password di ad) su linux.
IL mio dominio è basato su windows 2000.
Qualcuno ha qualche esperienza?? funzionerà? non potendo fare upgrade del sistema ad,e non potendo spendere ulteriori risorse per licenze,volevo cercare di implementare una soluzione del genere 🙂
Grazie!
Ciao Stefano,
in teoria questi articoli spiegano proprio come fare ad ottenere il tipo di integrazione che stai richiedendo.
Per quanto riguarda l’aspetto degli script che menzioni esiste una sezione apposita nel file samba che può essere dedicata ad esempio alla dichiarazione di file .bat che possono essere eseguiti alla login dell’utente nel sistema.
Credo che partendo da quello tu possa ottenere quello che vuoi.
A presto!
Grazie mille per la risposta,al momento sono riusciuto,con qualche modifica,a procedere nella prima parte della guida.
mi trovo però con qualche errore durante il join al dominio.
Piccola curiosità :
durante l’esecuzione del comando kinit ho dovuto scrivere il comando con il nome dominio in maiuscolo.
inoltre nella configurazione di samba,ho inserito la riga
workgroup = DOMINIO
al momento fa la prima parte del join a dominio,in ad vedo il server,ma poi mi restituisce errore di update dns.
anche configurando il file hosts sul server linux, mi continua a dare il suddetto errore
Ciaoo
Ciao Stefano,
non mi è molto chiaro l’errore che ricevi ed in che fase lo ottieni.
Se vedi la macchina su AD allora la join termina con successo, quindi in che fase hai l’errore e dettagliatamente che dice?
Sto rifacendo una installazione pulita della macchina,dopo troppe modifiche mi perdo e preferisco iniziare da zero,soprattutto per affinare il disaster recovery.
Rifaccio la guida e faccio sapere 😉 grazie ancora,Ciao
Riciao,il join lo fa tranquillamente,ho dovuto prima editare il file /etc/hosts specificando il FQDN.
al comando net ads info però ho diversi errori.
create_local_private_krb5_conf_for_domain : smb:mkstemp failed, for file /var/run/samba/smb_tmp_krb5.uPpV89, errno permesso negato
create_local_private_krb5_conf_for_domain : smb:mkstemp failed, for file /var/run/samba/smb_tmp_krb5.6GbT3o, errno permesso negato
inoltre non capisco perchè il ldap server e il kdc server viene indicato il secondo dc che ho e non il primo dc che ho assegnato anche come admin server.
se faccio la prova con il comando net -U Administrator ads user -l restituisce il medesimo errore,è come se non riuscisse ad interrogare il primo dc ma solamente il secondo.infatti mi fa vedere tranquilla tutta la lista utenti/grupppi.
A vedere l’errore (ma logicamente andrebbe tutto approfondito) pare una questione di permessi relativi alla dir /var/run/samba.
Cerca su google situazione simili, credo sia una cosa del genere.
sto cercando info a riguardo 🙂
al momento sono passato al punto in cui ho condiviso una cartella,ma non è possibile accederci da una macchina in dominio,( logicamente essendo loggato con lo stesso utente specificato nella configurazione di test della condivisione ).
Faccio sapere appena trovo qualcosa
al momento se tutti i comandi li eseguo anteceduti con il sudo allora non mi restituisce nessun problema.
Quindi il problema nasceva da li:) domani o la prossima settimana continuo con la guida per cercare di far partire le condivisioni! Grazie ancora
Ciao volevo cheiderti una cosa riguardo al comando:
for i in `wbinfo -u –domain=DWI` do wbinfo -i “$i” done
Praticamente ultimamente ho aggiunto 3 nuove utenze windows in Active Directory, pero quando lancio il comando sopra indicato per questre tre mi ritorna il messaggio:
Could not get info for user DOMINIO\XXX
Inotlre ho modificato il parametro:
idmap uid = 10000-20000
idmap gid = 10000-20000
in:
idmap uid = 20000-30000
idmap gid = 20000-30000
pero quando mi fa vedere la mappatura con il comando:
for i in `wbinfo -u –domain=DWI` do wbinfo -i “$i” done
ho ancora il vecchio range.
Premetto di aver riavviato i servizi Samba e Winbind
Grazie mille in anticipo.
Could not get info for user DOMINIO\XXX tipicamente fa pensare che per qualche ragione la join sia saltata.
Il motivo per cui ti trovi cmq i vecchi uid e gid è perché questi vengono mappati e mantenuti all’interno della cartella /var/lib/samba.
Se vuoi ripartir da zero stoppa i servizi, cancella il contenuto di quella dir, riaccendi i servizi, rifai la join ed in teoria l’hard reset dovrebbe essere completato.
Ciao!
Grazie mille funziona
Ciao,
innanzitutto complimenti per l’ottimo lavoro!!!
Sto seguendo la tua guida utilizzando samba4. Vorrei chiederti alcune cose perchè non tutto mi torna:
– net ads join -U Administrator
mi resituisce Failed to join domain: Failed to set account flags for machine account (NT_STATUS_NOT_SUPPORTED) mentre se faccio net ads join -U Administrator -S sdc.my.domain ottengo Using short domain name — MY
Joined ‘SON-SERVER’ to dns domain ‘my.domain’
DNS Update for son-server.my.domain failed: ERROR_DNS_UPDATE_FAILED
DNS update failed: NT_STATUS_UNSUCCESSFUL
– l’autenticazione kerberos funziona correttamente
– Il wbinfo -u e -g funziona correttamente e mi restituisce la lista di tutti gli utenti ma quando provo a fare for i in `wbinfo -u –domain=MY.DOMAIN` do wbinfo -i “$i” done hootengo il classico failed to call wbcGetpwnam: WBC_ERR_DOMAIN_NOT_FOUND
Could not get info for user “nome.cognome”
Ti ringrazio in anticipo per qualsiasi consiglio e per il lavoro che hai fatto!
CiaoCiao
Aggiornamento della mia domanda: ho risolto i primi due punti, ma mi resta il problema del wbinfo: non riesco ad importare gli utenti, eppure vedo la lista di utenti e gruppi!
Anche
net -U Administrator ads user -l
e
net -U Administrator ads group -l
funzionano…
Ciao Luca,
i problemi potrebbero essere molteplici e non puoi identificarli senza guardare i log. Potrebbe essere un problema di configurazione del file nsswitch.conf, un disallineamento della data rispetto al server oppure il demone winbind che banalmente non è partito, ma ribadisco: devi guardare nei log per identificare le problematiche.
Ciao!
Grazie per la pronta risposta!
Capisco i messaggi di prima fossero un po’ vaghi ma non sapevo che pesci pigliare.. nel mentre ho risolto e sono riuscito ad importare gli utenti, aggiungerli ai gruppi e quant’altro. Ora riesco anche ad accedere via ssh con gli utenti AD.
Mi manca l’ultimo step: riuscire a montare le share samba da win.. ho qualche problema a configurare pam