Autenticazione ldap studenti

Da sia.
Versione del 11 ott 2023 alle 13:35 di Malvezzi (discussione | contributi) (→‎Possibili soluzioni)
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)
Vai alla navigazione Vai alla ricerca

Autenticazione LDAP per gli studenti

Gli studenti Unimore hanno una username puramente numerica (senza lettere).

Capire il problema

Gli accont posix (oltre ad altri campi) sono definiti:

  • uid (è lo username; non è illegale che sia solo numerico ma è sconsigliato)
  • uidNumber (determina univocamente la proprietà dei file sul filesystem. É un dato numerico).

Purtroppo alcune utility linux (`id`, ad esempio) determinano euristicamente se il loro parametro è un uid o un uidNumber.

Cosa succede se esistono numerosi numeri che sono validi sia come uid che come uidNumber?

Ad esempio si può chiamare un utente per uidNumber (e funziona):

$ getent passwd 41312
malvezzi:*:41312:41312:Francesco MALVEZZI:/homel/malvezzi:/bin/mosh

peccato che esista uno studente con uid 41312.

Quindi è perfettamente possibile che certe distribuzioni linux, a partire della istruzioni in questo wiki, permettano l'accesso agli studenti. Ma sarebbe meglio se non lo permettessero, perché prima o poi ci sarà un qualche malfunzionamento perché certi tool attribuiscono la ownership di un certo file a tizio, ed altri a caio: ad esempio chown e setfacl danno esiti diversi, se uno prova:

  $ chown 41312 il_mio_file.txt
  $ setfacl -m u:41312:rwx il_mio_file.txt

(nel primo caso il file è utente uid 41312, nel secondo dell'utente con uidNumber 41312, e sono due persone diverse).

Possibili soluzioni

Aggiungere il dominio (direttiva: use_fully_qualified_names):

# Example LDAP domain
[domain/LDAP]
id_provider = ldap
auth_provider = ldap
ldap_schema = rfc2307
ldap_uri = <%= $ldap_server %>
ldap_search_base = dc=unimore,dc=it
ldap_tls_reqcert = <%= $ldap_tls_reqcert %>
cache_credentials = true
use_fully_qualified_names = True
enumerate = False

Non è realmente una soluzione, perché funziona solo se si usa sempre il dominio:

  $ setfacl -m u:123@LDAP:rwx file.txt
  $ setfacl -m u:user@LDAP:rwx file.txt

In questo caso il primo file è associato sicuramente all'utente con uid 123 (e non uidNumber 123), ma lo si poteva fare anche senza settare use_fully_qualified_names.


Oppure: fare il join ad Active Directory:

[domain/unimore.it]
ad_domain = unimore.it
krb5_realm = UNIMORE.IT
realmd_tags = manages-system joined-with-adcli
cache_credentials = True
id_provider = ad
krb5_store_password_if_offline = True
default_shell = /bin/mosh
ldap_id_mapping = False
use_fully_qualified_names = False
fallback_homedir = /homel/%u
access_provider = ad