Tyto stránky popisují, jak nastavit OS Linux, aby využíval centralizovanou databázi uživatelů pro získávání informací o uživateli a ověřování jejich přístupových údajů.
Postupy, které jsou zde uvedeny byly otestovány na distribucích Ubuntu a RedHat(CentOS).
Upozornění než začnete: Tento postup modifikuje přístup systému k získávání uživatelských informací a jejich ověřování. V případě nekorektní modifikace popsaných konfiguračních souborů se již nebudete moci přihlásit! Doporučujeme proto zálohu konfigurace před započetím prací a před odhlášením správcovské session si ověřte, že jste se stále schopni k systému přihlásit.
Jednotné uid pomocí LDAP
K čemu je to dobré:
Pokud jste uživateli OS Linux, jistě jste již narazili na problém s UID. Typicky máte několik počítačů, na každém máte například svůj lokální účet. Například pc1 a pc2. Na obou počítačích máme lokálního uživatele honza. Uživatel honza má v systému unikátní UID, většinou 1000 a výše. Pokud je zde více uživatelů první uživatel má UID 1000, druhý 1001, atd. V případě že uživatele honza tedy na pc2 vytvořím až po uživateli petr stane se to, že soubory zkopírované z pc1 na pc2 se nám na pc2 začnou jevit jako by jejich vlastníkem byl petr. Proto je zde možnost centrální správy UID. V podstatě se jedná o to, že v celé síti má každý uživatel jedno unikátní UID.
Popsanou situaci lze jednoduše vyřešit tak, že nastavíte systémy tak, aby získávaly uživatelské údaje z centralizované databáze. Na VŠCHT můžete použít údaje přistupne pomocí protokolu LDAP .
Nastavení LDAP
Potřebné součásti nainstalujete pomocí příkazu
Ubuntu: aptitude install libnss-ldap nscd
RedHat: yum install nss_ldap nscd
Postup specifický pro Ubuntu
Debconfu odpovíme takto:
LDAP server URI: ldap://bodlak.vscht.cz/ (Note the "ldap://", NOT "ldapi://"!)
Distinguished name of the search base: dc=vscht,dc=cz
LDAP version to use: 3
Does the LDAP database require login? No
Special LDAP privileges for root? No
Make the configuration file readable/writeable by its owner only? No
Allow LDAP admin account to behave like local root? no
Make local root Database admin. No
Does the LDAP database require login? Yes
LDAP account: uzivatel@vscht.cz
LDAP password: PASSWORD
Local crypt to use when changing passwords. md5
PAM profiles to enable: select all
Postup specifický pro RedHat
Po instalaci knihoven spuste nástroj authconfig a nastavte, že uživatelské údaje jsou získávány také z ldap.
Společný postup
Po instalaci doporučuji zkontrolovat soubor /etc/ldap.conf(V některých systémech /etc/libnss-ldap.conf )zda obsahuje tyto řádky(případné rozdíly eliminujte):
base dc=vscht,dc=cz
timelimit 120
bind_timelimit 120
idle_timelimit 3600
nss_initgroups_ignoreusers root,ldap,named,avahi,haldaemon,dbus,radvd,tomcat,radiusd,news,mailman,nscd,gdm
nss_srv_domain _ldap._tcp.vscht.cz
ssl no
binddn uzivatel@vscht.cz
bindpw heslo
scope sub
nss_base_passwd dc=vscht,dc=cz?sub?&(objectCategory=user)(uid=*)
nss_base_shadow dc=vscht,dc=cz?sub?&(objectCategory=user)(uid=*)
nss_base_group dc=vscht,dc=cz?sub?&(objectCategory=group)(gidnumber=*)
nss_map_objectclass posixAccount user
nss_map_objectclass shadowAccount user
nss_map_objectclass posixGroup group
nss_map_attribute gecos DisplayName
nss_map_attribute homeDirectory unixHomeDirectory
nss_map_attribute uniqueMember member
Vzhledem k nutnosti ověřeného přístupu k ldap serveru je nutné v konfiguračním souboru použít pro parametr binddn a bindpw platné přihlašovací údaje. Jejich obsah Vám sdělí pracovnici Výpočetního Centra.
V souboru /etc/nsswitch.conf upravíme řádky passwd a group takto:
passwd: files ldap
group: files ldap
Dokončení nastavení
Nyní zkuste, že vše funguje. Příkaz "getent passwd" by měl vrátit výpis uživatelských účtů rozšířený o položky získané z doménové databáze. Pokud se tak nestalo, zkontrolujte předchozí kroky.
Na závěr této fáze by jsme Vám ještě doporučili spustit cachovacího démona nscd, který se postará o to, že vše bude fungovat i v připadě krátkodobé nedostupnosti počítačové sítě nebo centrální databáze.
Ověřování hesel pomocí protokolu Kerberos
Pro ověřování uživatelských hesel z centrální databáze je použit protokol Kerberos v součinosti s ověřovacím mechanismem PAM.
Nastavení Kerberosu
Potřebné součást nainstalujete příkazem
Ubuntu: aptitude install libpam-krb5
RedHat: yum install pam_krb5
Poté upravte konfigurační soubory
/etc/krb.conf
VSCHT.CZ
VSCHT.CZ bodlak.vscht.cz:88
VSCHT.CZ bodlak.vscht.cz:749 admin server
/etc/krb5.conf
[logging]
default = SYSLOG:NOTICE:DAEMON
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = VSCHT.CZ
dns_lookup_realm = false
dns_lookup_kdc = true
clockskew = 600
[realms]
VSCHT.CZ = {
kdc = bodlak.vscht.cz:88
admin_server = bodlak.vscht.cz:749
default_domain = VSCHT.CZ
kpasswd_server = bodlak.vscht.cz
}
[domain_realm]
vscht.cz = VSCHT.CZ
.vscht.cz = VSCHT.CZ
[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}
Nastavení PAM
V RedHatu stačí pustit nástroj authconfig a přidat ověřování uživatelů pomocí Kerberosu + automatické vytváření domovských adresářů. Program sám zmodifikuje nezbytná nastavení(doporučujeme poté pro jistotu zkontrolovat, že nastavení z předchozích kroků jsou zachována).
V Ubuntu je nutné modifikovat následující konfigurační soubory
/etc/pam.d/common-auth
auth [success=3 default=ignore] pam_unix.so nullok_secure
auth [success=2 default=ignore] krb5_auth krb5_ccache_type=FILE cached_login try_first_pass
auth [success=1 default=ignore] pam_ldap.so use_first_pass
auth requisite pam_deny.so
auth required pam_permit.so
auth optional pam_cap.so
/etc/pam.d/common-account
account [success=3 new_authtok_reqd=done default=ignore] pam_unix.so
account [success=2 new_authtok_reqd=done default=ignore] pam_krb5.so
account [success=1 default=ignore] pam_ldap.so
account requisite pam_deny.so
account required pam_permit.so
/etc/pam.d/common-session
session [default=1] pam_permit.so
session requisite pam_deny.so
session required pam_permit.so
session required pam_unix.so
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
session optional pam_ldap.so
session optional pam_ck_connector.so nox11
session optional pam_krb5.so minimum_uid=1000
Závěrečná nastavení a různé tipy
Podobně jako u uživatelských informací lze nastavit i cachování hesel pro přihlášení se v případě nedostupnosti sítě.
Instalace nutných komponent
Ubuntu: aptitude install nss-updatedb libnss-db libpam-ccreds
RedHat: yum install pam_ccreds
Dále je třeba přidat použití modulu pam_ccreds do /etc/pam.d/common-auth(Ubuntu):
auth [default=ignore] pam_ccreds.so minimum_uid=1000 action=update
auth [success=2 default=ignore] pam_ccreds.so minimum_uid=1000 action=validate use_first_pass
auth optional pam_ccreds.so minimum uid=1000 action=store
Řízení přístupu
Pro omezení uživatelů, kteří mají právo se k počítači přihlásit slouží pam modul access. Konfigurace uživatelů se provádí v /etc/security/access.conf
Příklad nastavení:
+:testuser:ALL
-:ALL EXCEPT LOCAL :ALL
Toto nastevní povolí přístup uživateli testuser a všechny kromě lokálních uživatelů zakáže.
Aby byl pam modul access využíván je jej třeba aktivovat nejlépe v /etc/pam.d/common-account tímto řádkem: account required pam_access.so
Pozor! Démon pro vzdálený přístup přes ssh se v závislosti na konfiguraci v /etc/ssh/sshd_config může anebo nemusí nastavením pam řídit:
Pro použití pam musí konfigurace obsahovat volbu:
UsePAM yes
a odkazy na příslušné moduly a nastavení pam být uvedeny v /etc/pam.d/sshd.
Pokud ji neobsahuje, je nutné použít direktivy DenyUsers a AllowUsers. Např.:
DenyUsers root testuser
AllowUsers franta lojza
Lokální uživatelé
Uživatelská uid poskytovaná z LDAP začínají na uid 1000. Pokud máte v systému lokální uživatele s uid nad touto hranicí, je vhodné je přečíslovat, aby nedocházelo ke konfliktu s uživateli poskytovanými z centrální databáze. Totéž platí na pro případné budoucí ruční zakládání lokálních uživatelů.