zentrale Benutzerverwaltung mit Ubuntu

Ziel ist es, Benutzern zu ermöglichen, dass sie sich an jedem Arbeitsplatz im Betrieb anmelden können. Dafür müssen die benutzerspezifischen Daten, wie das Gnomeprofil und das Homeverzeichnis zentral auf den Server ausgelagert werden.

Da es mit Samba nicht möglich ist ein von Gnome und KDE verwendetes Filelocking nachzubilden, müssen wir das Unix-home Verzeichnis mit NFS mounten. Da Gnome und KDE zahlreiche Konfigurationsdateien im home ablegen, findet eine Durchmischung von Profil und persönlichen Daten statt. Daher habe ich mich entschlossen das home welches mit Samba zugänglich ist, nicht mehr dem Unix-home gleichzusetzen.

Das Homeverzeichnis wird über /etc/fstab beim starten gemountet und die zusätzlichen Sambashares werden mittels pam_mount beim Anmelden eines Benutzers individuell gemountet und beim abmelden wieder unmountet.

Damit sich die Benutzer auf allen Arbeitsplätzen anmelden können, ist es am einfachsten die Benutzerdaten auch zentral zu verwalten. Siehe hierzu auch LDAP installieren

Server konfigurieren

benötigte Pakete:

apt-get install nfs-kernel-server libpam-mount smbfs

/etc/hosts.allow

lockd:   ALL
portmap: ALL
mountd:  ALL
statd:   ALL

/etc/exports

/var/home          192.168.1.0/255.255.255.0(rw,async)

/etc/samba/smb.conf

...
[homes]
   comment = Heimatverzeichnis
   path = /var/samba/home/%U
   browseable = no
   writable = yes
   force create mode = 600
   force directory mode = 700
   valid users = %S
...

Man sollte darauf achten, dass sich jetzt im /var/home die Unix-homes und im /var/samba/home die Windows-homes bzw. die persönlichen Daten befinden. Die nötigen Verschiebungen und Kopien muss man von Hand erledigen. Aber darauf achten, dass die Besitzer richtig eingestellt sind.

Nun müssen noch die Dienste neu gestartet werden

/etc/init.d/portmap restart
/etc/init.d/nfs-kernel-server restart
/etc/init.d/samba restart

Client konfigurieren

benötigte Pakete:

apt-get install nfs-common libpam-mount smbfs

/etc/fstab

...
server:/var/home /home  nfs  rsize=8192,wsize=8192  0  0
...

Die alten pam_mount Dateien wurden durch xml Dateien ersetzt.
/etc/security/pam_mount.conf

<?xml version="1.0" encoding="utf-8" ?>
<pam_mount>
<debug enable="3" />
<mkmountpoint enable="1" remove="true" />
<fsckloop device="/dev/loop7" />
<luserconf name=".pam_mount.conf.xml"/>
<mntoptions allow="*" />
<path>/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin</path>

<lsof>lsof %(MNTPT)</lsof>

<fsck>fsck -p %(FSCKTARGET)</fsck>

<losetup>losetup -p0 "%(before=\"-e\" CIPHER)"
    "%(before=\"-k\" KEYBITS)" %(FSCKLOOP) %(VOLUME)</losetup>

<unlosetup>losetup -d %(FSCKLOOP)</unlosetup>

<cifsmount>mount -t cifs //%(SERVER)/%(VOLUME) %(MNTPT) -o
    "user=%(USER),uid=%(USERUID),gid=%(USERGID)%(before=\",\" OPTIONS)"</cifsmount>

<smbmount>smbmount //%(SERVER)/%(VOLUME) %(MNTPT) -o
    "username=%(USER),uid=%(USERUID),gid=%(USERGID)%(before=\",\" OPTIONS)"</smbmount>

<smbumount>smbumount %(MNTPT)</smbumount>

<umount>umount %(MNTPT)</umount>
<mntcheck>mount</mntcheck>

<pmvarrun>pmvarrun -u %(USER) -o %(OPERATION)</pmvarrun>

</pam_mount>

/etc/pam.d/gdm (ohne LDAP)

#%PAM-1.0
auth    requisite       pam_nologin.so
auth    required        pam_env.so readenv=1
auth    required        pam_env.so readenv=1 envfile=/etc/default/locale
@include common-auth
auth    optional        pam_gnome_keyring.so
@include common-account
session required        pam_limits.so
@include common-session
session optional        pam_gnome_keyring.so auto_start
@include common-pammount  #<== Diese Zeile einfügen! ****
@include common-password

/etc/pam.d/gdm (mit LDAP veraltet!)

#%PAM-1.0
auth    requisite       pam_nologin.so
auth    required        pam_env.so
account sufficient      pam_ldap.so
auth    required        pam_mount.so
auth    sufficient      pam_ldap.so use_first_pass
auth    required        pam_unix.so use_first_pass
session required        pam_limits.so
session optional        pam_mount.so

SAMBA Shares automatisch mounten

Freigegebene Verzeichnisse können natürlich auch von Hand gemountet werden

sudo smbmount //server/homes home -o username=user,password=secret,uid=user,gid=user

Aber mit Hilfe des vorher installierten Pakets libpam-mount lassen sich Samba Shares auch automatisch beim Anmelden mounten, ohne dass der Benutzer sein Passwort nochmals eingeben muss, oder das Passwort in einer Konfigurationsdatei hinterlegt ist. pam gibt die Angaben noch während dem Anmeldeprozess an pam_mount und somit an den mount Befehl weiter.

Damit jeder Benutzer Zugriff auf seine Dateien auf dem Server bekommt, müssen noch die entsprechenden Angaben für den SMB Zugriff vorgenommen werden. Man kann dies global in der Datei /etc/security/pam_mount.conf tun. Dabei ist es auch möglich Platzhalter für den Benutzernamen zu wählen. Achtung nicht mehr gültig

volume [user] [server] [share] [mountpunkt] [optionen]
volume * smbfs server & /home/& uid=&,gid=&,dmask=0750 - -
* für user betrifft alle Benutzer
& ist ein Platzhalter für den Benutzernamen

Wenn die Sambazugriffsrechte individuell verschieden sind, so ist es sinnvoller die Konfiguration im jeweiligen home Verzeichnis zu hinterlegen. Damit können die Benutzer auch selber Änderungen vornehmen.
~.pam_mount.conf.xml

<?xml version="1.0" encoding="utf-8" ?>
<pam_mount>
<volume
        fstype="cifs"
        server="server"
        path="texte"
        mountpoint="~/daten/texte"
        options="lfs,codepage=cp850,iocharset=utf8"
/>

<volume
        fstype="cifs"
        server="server"
        path="homes"
        mountpoint="~/daten/privat"
        options="lfs,codepage=cp850,iocharset=utf8"
/>
</pam_mount>
 
linux/homes.txt · Zuletzt geändert: 09.02.2009 10:30 von tangst