martedì 2 ottobre 2007

Samba, Active Directory e permessi

Debian 4.0 etch, samba 3.0.24-6etch4 attaccato ad un Domain Controller Win2000 con Active Directory (http://www.debian-administration.org/articles/340).

Era una situazione di semi emergenza, dovevo sostituire al volo un fileserver Win2K deceduto mettendo tutti gli share da un'altra parte, e cosa meglio di una macchina Linux già pronta, sottoutilizzata e con dello spazio libero? Installo samba e gli altri pacchetti necessari, faccio tutta la procedura per attaccarmi a Active Directory, sistemo le configurazioni. Tutto ok tranne una cosa: non c'è verso di fargli riconoscere a dovere i permessi relativi ai gruppi (non gli utenti, solo i gruppi). Di conseguenza non è possibile dare l'accesso agli utenti, se non facendo una sorta di "liberi tutti" o mettendo esplicitamente il nome di ogni singolo utente nella configurazione: ambedue soluzioni improponibili.



Succede che la direttiva "valid users =" che in smb.conf serve a definire i permessi a livello utente o di gruppo per ogni share di rete, semplicemente non funziona se si usano i nomi di gruppo recuperati da winbind dal dominio (ad esempio "domain users"). Ci ho provato in tutti i modi, mettendo e togliendo vari simboli davanti al nome del gruppo, tra cui il classico indicatore di gruppo di samba "@", ho usato virgolette, singoli apici, tutto quello che mi veniva in mente, ma niente. Ho guardato e riguardato il mio file di configurazione alla ricerca di qualche errore, aumentato la quantità di informazioni nei log, cercato documentazione ... pure riavviato la macchina (segno di grave frustrazione per un sistemista *nix). Ma ancora niente: ho solo perso del gran tempo, e in quella situazione non ne avevo più un granchè. Poi ho tentato, più per disperazione che altro, a mettere direttamente il SID, e tutto si è messo a funzionare. Baco? Errore mio nella configurazione? Chi lo sa .... l'importante era farlo andare.

In caso di bisogno per ottenere i SID si usa wbinfo, il comando che serve a fare le query direttamente al demone winbind. Per esempio: voglio ottenere il SID del gruppo "Domain users"? Da linea di comando digito:

wbinfo -n "domain users"

e ottengo qualcosa che assomiglia a:

S-1-5-21-1628384568-335560319-1050887974-513 Domain Group (2)

La parte sottolineata è il SID. In smb.conf la relativa riga di configurazione sarà:

valid users = S-1-5-21-1628384568-335560319-1050887974-513

Possono essere inseriti più SID separati da virgole e possono essere SID di utenti o di gruppo, funzionano bene allo stesso modo.

Insomma: se samba qualche volta fa le bizze sui permessi quando è connesso a un Active Directory, senza stare a perdere troppo tempo forse vale la pena tentare direttamente con i SID.

6 commenti:

  1. Mitico!!!!
    Ci ho perso un giorno intero tra guide e esperimenti, ma non riuscivo in alcun modo ad autenticare solo un gruppo dell'AD!
    GRAZIE 1000 !!!

    RispondiElimina
  2. [...] http://www.zaffa.org/2007/10/02/samba-active-directory-e-permessi/ [...]

    RispondiElimina
  3. ciao enrico, abbiamo provato a reinstallare il server quello che avevamo settato insieme.
    L'abbiamo aggiunto al dominio,l'user test si logga easy.
    Ora però non riusciamo a fargli montare le cartelle condivise con samba ne aggiungerlo ai gruppi di pulse e fuse per montare le usb del thin client.
    non ricordo cosa dobbiamo aggiungere per gli user di dominio e come farli riconoscere ai vari servizi.
    Help please.!!

    RispondiElimina
  4. Francesco, scusa il ritardo e il poco tempo che ti dedico, ma sono di corsissima. Non sono in questo momento in grado di darti informazioni precise, bisognerebbe approfondire per capire dove ti sei scordato di qualcosa, ma tra 5 minuti stacco e scappo, nel vero senso della parola, per una settimana.
    Ti posso però suggerire di provare l'ultima ubuntu, uscita da poche ore, ed il tool "Likewise" che pare serva appunto a integrare i sistemi di autenticazione. E' una cosa che farò sicuramente non appena torno.
    ciao

    RispondiElimina
  5. Salve,
    per risolvere il problema dovrebbe essere sufficiente inserire in smb.conf la riga
    idmap backend = rid
    questo per far si che samba e winbind utilizzino il RID al posto del SID e se lo estraggano in autonomia.
    Questo vale ovviamente solo nel caso di un solo domino (in caso di più domini il RID potrebbe risultare duplicato). Nel caso di più domini si dovrebbe usare AD al posto di RID (questo però non l'ho mai testato).
    Spero che in questo modo qualcuno si risparmi delle notti insonni.

    RispondiElimina
  6. Grazie Luca!! Io in questo periodo non ho la possibilità di provarlo, ma mi pare una bella dritta :-)

    RispondiElimina