close Warning: Can't synchronize with repository "keplertools" (/srv/svn/keplertools does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 13 years ago

Closed 13 years ago

Last modified 13 years ago

#1090 closed Defekt (erledigt)

CIFS-Mount der Nutzerverzeichnisse (war: Tauschordner nicht beschreibbar)

Reported by: Rüdiger Kupper Owned by: Rüdiger Kupper
Priority: bald erledigen Milestone: Schuljahr 2013/14
Component: Server: LML-Server (paedml) Severity: beeinträchtigt den Unterricht vieler Lehrer
Keywords: Cc: netzwerk

Description

Die meisten Dateien und Verzeichnisse unterhalb /home/share gehören dem Nutzer "ftp" (uid 128). Irgendwie muss die uid 128 früher einem anderen Nutzer zugeordnet gewesen sein.

Das allein wäre noch gar nicht schlimm, aber einige Verzeichnisse und Dateien haben zudem die Rechte "rw-r--r--", sind also nur für Nutzer ftp beschreibbar. Insbesondere betrifft das das Schultauschverzeichnis, so dass dort momentan kein normaler Nutzer schreiben kann.

Mir ist nicht ganz klar, wie das passiert ist. Wie ist noch die IP des alten paedml? Dann sehe ich dort mal nach, wie die Besitzrechte da waren. Derzeit sind jedenfalls fast alle Tauschordner nicht beschreibbar.

Change History (22)

comment:1 by bau, 13 years ago

Mist, da war ich schuld dran.
Ich musste den Kopierer/Scans wieder einrichten und habe im falschen Verzeichnis die Rechte gesetzt. Eigentlich dachte ich, ich hätte alle wieder zurückgesetzt. Eventuell kann man ja auf dem alten Server die Owner sammeln und auf dem neuen als Script wieder ausfürhen?

comment:2 by Rüdiger Kupper, 13 years ago

Da die Dateien noch nicht verändert wurden (werden konnten), würde ein rsync die Sache wieder richten. Ist die Backup-Platte noch gemountet? Dann könnten wir von dort ein rsync machen. Sonst eben vom alten paedml auf den neuen. Rsync ist so schlau, nur die Besitzrechte anzupassen, wenn die Dateiein identisch sind. Ds sollte dann eigentlich ganz flott gehen.

comment:3 by bau, 13 years ago

Platte ist noch im Proxmoxpaedml eingebaut - gemountet weiß ich nicht - NFS in paedml weiß ich auch nicht

in reply to:  3 comment:4 by Rüdiger Kupper, 13 years ago

Replying to bau:

Platte ist noch im Proxmoxpaedml eingebaut - gemountet weiß ich nicht - NFS in paedml weiß ich auch nicht

Okay, finde ich raus.

Kannst Du mir möglichst genau sagen, welche Verzeichnisse das betrifft? Alles unterhalb /home/share, oder spezielle Verzeichnisse?

comment:5 by Rüdiger Kupper, 13 years ago

Owner: changed from bau to Rüdiger Kupper
Status: new → accepted

comment:6 by bau, 13 years ago

Ich habe den Befehl leider unter /home/ abgesetzt anstelle unter /home/ftp
Ich dachte eigentlich, ich hätte alles wieder gradegebogen, war aber anscheinend nicht so.
Du findest alle Dateien unter /var/www/kepler_login/userfiles/ftp

comment:7 by Rüdiger Kupper, 13 years ago

Summary: Falscher Besitzer im Ordner /home/share → Tauschordner nicht beschreibbar

comment:8 by Rüdiger Kupper, 13 years ago

Okay.

comment:9 by Rüdiger Kupper, 13 years ago

Cc: allelehrer added

Liebe Kollegen,

die Tauschordner auf unserem Dateiserver sind derzeit nur eingeschränkt nutzbar: Sie können wie gewohnt gelesen werden, aber nicht beschrieben. Sie können die Dateien in den Tauschordnern also nicht ändern oder neue Dateien anlegen.
Betroffen sind Schul-, Lehrer-, Gruppen- und Klassentauschordner.

Das Problem ist lokalisiert und wir arbeiten an der Lösung. (Sie können den Fortschirtt im Kepler-Trac unter ticket:1090 mitverfolgen.) Voraussichtlich werden die Tauschordner in wenigen Tagen wieder wie gewohnt zur Verfügung stehen.

Viele Grüße,
Ihre Administratoren R. Kupper und J. Baumgärtner

comment:10 by Rüdiger Kupper, 13 years ago

Cc: allelehrer removed

comment:11 by Rüdiger Kupper, 13 years ago

@bau: Wenn Du den Befehl unter /home abgesetzt hast, müssten ja auch alle Homeverzeichnisse betroffen sein. Hast Du die Besitzrechte da bereits manuell wieder korrigiert?

comment:12 by Rüdiger Kupper, 13 years ago

Besitzrechte sind jetzt überall unterhalb /home wieder korrigiert. Es betraf den Dateibaum /home/share sowie einige in diesem Schuljahr bereits neu angelegten Dateien von ort.

Die Ordner sind nun über die Linuxmusterclients normal verwendbar.

Jetzt bleibt die Frage, wie die Ordner auf den LtspServern zugänglich gemacht werden.

comment:13 by Rüdiger Kupper, 13 years ago

Okay, beim näheren Nachdenken erscheint es mir langfristig am "komaptibelsten", wir bringen den LTSP-Servern bei, beim Login eines Nutzers exakt das gleiche zu machen, was auch die LM-Clients machen. Also das Homeverzeichnis über Samba mounten.
Dann laufen alle Skripte wie vorgesehen.
Wenn das einmal funktioniert, können wir unsere NFS-Mounts sogar komplett abschalten (und wären damit auch die Sicherheitsprobleme los).
(Ich muss halt einfach meine Abneigung gegen ein Protokoll loswerden, das aus der Windows-Welt kommt ;-) So schlimm kann's nicht sein, wenn die linuxmuster.net-Leute es verwenden.)

Also brauche ich mal ein LM-Notebook und muss nachsehen, wie das das macht. Irgendwie muss der Mount ja ablaufen, ohne dass der Nutzer dafür nochmal sein Passwort eingeben muss, mir ist noch nicht klar, wie das gemacht wird.

comment:14 by Rüdiger Kupper, 13 years ago

Ich bin hier weitergekommen. Ich sitze gerade an einem NwT-Notebook (LM-Client).

Ich habe indentifiziert, welchen Mechanismus die LML benutzt, um beim Login automatisch das Homeverzeichnis der Nutzer zu mounten: Sie verwenden ein Modul des "pluggable authentication mechanism" PAM namens pam_mount. Ubuntu benutzt PAM für alle Authentifizierungsaufgaben.

pam_mount ist exakt für diesen Use Case gemacht:

  • Every user can access his own volumes
  • The user needs to type the password just once (at loginn)
  • The mounting process is transparent to the users
  • There is no need to keep the login passwords in any additional file

(Von der Manpage ​http://manpages.ubuntu.com/manpages/hardy/man8/pam_mount.8.html)

Wenn wir pam_mount auf den LtspServern ebenso konfigurieren, sollten die Homeverzeichnisse über CIFS beim Login gemountet werden wie auf den LM-Clients, ohne dass der Nutzer sein Passwort noch einmal eingeben muss.

Ich sehe zwei Möglichkeiten, das zu erreichen:

  1. manuell die Konfiguration von pam_mount von den LM-Clients auf die LtspServer übernehmen
  2. auf den LtspServern das Paket "linuxmuster-client" installieren. Das richtet ja (unter anderem) dieses pam_mount ein. Ich weiß allerdings nicht, was alles in diesem Paket auch noch drin ist (Linbo, etc). So furchtbar viel ist es nicht, wenn ich mich erinnere.

comment:15 by Rüdiger Kupper, 13 years ago

Cc: netzwerk added
Resolution: → erledigt
Status: accepted → closed

Hallo Netzwerkberater!

Ich habe heute abend auf den LtspServern eine grundlegende Änderung vorgenommen:

Alle vom Fileserver gemounteten Verzeichnisse werden jetzt nicht mehr per NFS gemountet, sondern wie von linuxmuster.net vorgesehen per CIFS. Das betrifft:

  • das Homeverzeichnis des eingeloggten Nutzers /home/{students|teachers)[/<klasse>]/uid/
  • das Verzeichnis /home/students (unter dem alle Schülerverzeichnisse sichtbar sind)
  • das Verzeichnis /home/share
  • das Verzeichnis /home/samba/progs (ich weiß gar nicht genau, was sich dort findet, bisher war das auf den LtspServern gar nicht gemountet)
  • das Verzeichnis /home/samba/cds (dort liegen z.B. die DVD-Images von Sebastian)
  • das Verzeichnis /var/cache/sophomorix/tasks (darüber wird das Austeilen/Einsammeln per Schulkonsole organisiert)

All diese CIFS-Mounts habe ich aus der Konfiguration der Linuxmuster-Clients abgeschrieben.

Diese Verzeichnisse werden per pam_mount beim Login eines Nutzers an einem LtspClient automatisch gemountet. Der Nutzer sollte dann

  • sein Homeverzeichnis
  • die für ihn zugänglichen Tauschverzeichnisse
  • seine _austeilen/_einsammeln/_vorlagen-Verzeichnisse
  • alle Homeverzeichnisse aller Schüler

sehen, wie es von der Linuxmusterlösung vorgesehen ist.

Das heißt: Alles sollte wie gewohnt laufen, und die Tauschverzeichnisse sollten jetzt sichtbar und beschreibbar sein.

Das Protokoll ist nun nicht mehr NFS, sondern CIFS, mit dem ich mich noch nicht besonders gut auskenne.

Bitte achtet in den folgenden Tagen auf Probleme mit den Homeverzeichnissen / Tauschverzeichnissen. Sollte es irgendwelche Probleme geben, können wir kurzfristig zu dem alten Schema (NFS-Mounts, keine Tauschverzeichnisse) zurückkehren. Schreibt mir bei Bedarf eine Mail oder einen Kommentar in dieses Ticket.

Was sich ändert:

  • Diese Verzeichnisse werden jetzt nur noch auf dem LtspServer gemountet, auf dem sich der Nutzer einloggt, und nur für die Dauer seiner Sitzung. Wundert euch also nicht, wenn ihr euch auf einem beliebigen LtspServer einloggt und unter /home/teachers/ nichts seht. Wenn ihr Zugriff auf die Gesamtheit der Lehrerverzeichnisse benötigt, logt euch per ssh auf dem paedml ein. Dort seht ihr immer alle Verzeichnisse.
  • Er sieht dort alle Homerverzeichnisse der Schüler.
  • Ist der Nutzer ein Lehrer, so sieht er jetzt unter /home/teachers/ nur noch sein eigenes Homeverzeichnis, und auch nur auf dem LtspServer, auf dem er eingeloggt ist.

comment:16 by Rüdiger Kupper, 13 years ago

Was der normale Nutzer morgen sehen sollte:

Für einen normalen Nutzer sollte sich morgen scheinbar gar nichts geändert haben, außer dass er die Tauschverzeichnisse jetzt wieder verwenden kann. Hoffen wir das Beste.

Todo:

Der Scans-Ordner ist noch nicht per CIFS gemountet, kann also weiterhin nicht gesehen werden.

comment:17 by bau, 13 years ago

Prima,
dann muss ich nur noch den Mechanismus verstehen, den die ML benutzt, um die bind-mounts zu machen. Da muss es ja irgendwo eine Config geben, wo steht, was wohin gemountet werden soll. Da muss dann das Scans rein, welches nach tausch-Lehrer/Scans gemountet werden muss.

in reply to:  17 comment:18 by Rüdiger Kupper, 13 years ago

Replying to bau:

Prima,
dann muss ich nur noch den Mechanismus verstehen, den die ML benutzt, um die bind-mounts zu machen. Da muss es ja irgendwo eine Config geben, wo steht, was wohin gemountet werden soll. Da muss dann das Scans rein, welches nach tausch-Lehrer/Scans gemountet werden muss.

Der Befehl, der die Bind-Mounts letzendlich anlegt, heiß sophomorix-bind. Wenn Du Dir da den Quelltext anschaust, müsstest Du rausfinden, wo Du das Scans-Verzeichnis eintragen musst. (Die manpage sagt, der Befehl überprüft die Gruppenzugehörigkeiten des Nutzers, um herauszufinden, was gemountet wird. Also gibt's vielleicht gar keine Config. Aber vielleicht hast Du Glück.)

comment:19 by Rüdiger Kupper, 13 years ago

Ein paar Hinweise für's Protokoll, was ich herausgefunden/getan habe:

  • auf den LtspServern Pakete "libpam-mount" und "cifs-utils" installiert
  • Datei /etc/security/pam_mount.conf.xml editiert und folgende Einträge hinzugefügt (vom Linuxmusterclient 10.04 abgeschrieben):
    <volume options="rw,nosuid,nodev,iocharset=utf8,nobrl" user="*" mountpoint="~" path="%(USER)" server="paedml" fstype="cifs" />
    
    <volume options="rw,nosuid,nodev,iocharset=utf8" user="*" mountpoint="/home/students" path="students" server="paedml" fstype="cifs" />
    <volume options="rw,nosuid,nodev,iocharset=utf8" user="*" mountpoint="/home/share" path="shares" server="paedml" fstype="cifs" />
    <volume options="rw,nosuid,nodev,iocharset=utf8" user="*" mountpoint="/home/sama/progs" path="pgm" server="paedml" fstype="cifs" />
    <volume options="rw,nosuid,nodev,iocharset=utf8" user="*" mountpoint="/home/samba/cds" path="cdrom" server="paedml" fstype="cifs" />
    <volume options="rw,nosuid,nodev,iocharset=utf8" user="*" mountpoint="/var/cache/sophomorix/tasks" path="tasks" server="paedml" fstype="cifs" />
    <volume options="rw,nosuid,nodev,iocharset=utf8" user="*" mountpoint="/media/backup" path="backup" server="paedml" fstype="cifs" />
    
  • außerdem habe ich dort noch ergänzt (bin nicht sicher, ob das auf den LML-Clients auch steht):
    <logout wait="10000000" hup="yes" term="yes" kill="yes" />
    
    Das sorgt dafür, dass eventuell verbleibende Prozesse des Nutzers, die sich nach Ende der Sitzung nicht recht beenden wollen, nach 10 Sekunden gekillt werden. Das hatte nämlich den umount der Homeverzeichnisse verhindert. Jetzt werden die Homeverzeichnisse verlässlich wieder ungemountet. (Vielleicht löst das auch ein paar andere Probleme, wir hatten ja ab und an verbliebene Prozesse.)

comment:20 by Rüdiger Kupper, 13 years ago

Priority: hoch → normal
Summary: Tauschordner nicht beschreibbar → CIFS-Mount der Nutzerverzeichnisse (war: Tauschordner nicht beschreibbar)

comment:21 by Rüdiger Kupper, 13 years ago

Heute ist das Problem aufgetreten, dass Nutzer zuweilen die Bind-Mounts im __tauschen-Verzeichnis nicht mehr vorfanden. Ich habe folgendes herausgefunden:

  • Die Bind-Mounts waren auch tatsächlich auf dem paedml nicht vorhanden (das CIFS zwischen paedml und LtspServer hat also korrekt funktioniert, immerhin.)
  • Man kann sich auf dem paedml mittels sophomorix-bind -i alle von sophomorix eingerichteten Bind-Mounts anzeigen lassen.
  • Man kann diese Bind-Mounts komplett entfernen mit sophomorix-bind --cron. Das geschieht auch jede Nacht per Cronjob. (Grund: Beim Zugriff mittels Horde werden die Mounts manchmal nicht wieder entfernt. Die linuxmuster.net-Entwickler sind sich dessen bewusst.)
  • Prinzipiell dürfte es aber kein Problem sein, wenn die Bind-Mounts auf dem paedml bestehen bleiben. Sie stören nicht.
  • Wenn sich der selbe Nutzer mehrfach auf dem gleichen LtspServer/LMClient einloggt, dann zählt pam_mount brav mit und entfernt den CIFS-Mount erst, nachdem die letzte Sitzung geschlossen wurde.

Bis hierhin also alles in Ordnung.
Das beobachtete Problem scheint immer dann aufzutreten, wenn sich ein Nutzer gleichzeitig von verschiedenen LtspServern/LMClients aus einloggt. Dann bauen beide eine CIFS-Verbindung zum paedml auf. Der paedml macht die Bind-Mounts.
Loggt sich der Nutzer dann auf einem der Rechner aus, so zählt das dortige pam_mount mit, dass der Nutzer nun (auf diesem Server) nicht mehr eingeloggt ist und trennt die CIFS-Verbindung. In dem Moment entfernt der paedml die Bind-Mounts. Effekt: Auf dem zweiten Rechner, auf dem der Nutzer eingeloggt ist, ist das __tauschen-Verzeichnis plötzlich leer.

Es könnte sein, dass hierfür der komische Parameter "Hostname" dient, den das samba-userlog benutzt, und den wir heute so seltsam fanden. Daran könnte der paedml ja merken, dass noch eine Verbindung zu einem anderen Host besteht. Das normale pam_mount liefert diesen Parameter wohl nicht mit.
Um das klären, muss ich mir noch einmal einen LMClient vornehmen. Die benutzen nämlich zusammen mit dem pam_mount ein eigenes Mount-Wrapper-Skript. Vielleicht brauchen wir so eins auch auf den LtspServern.

Außerdem
Mal einen Client auf linuxmuster.net 6 upgraden und schaun, ob das etwas anders macht. Da komme ich aber in den nächsten Tagen sicher nicht dazu.

comment:22 by Rüdiger Kupper, 13 years ago

Habe nun auch auf den LtspServern in /etc/cron.hourly den Link zu /etc/init.d/kepler--mountall-workaround entfernt. Der Cronjob hatte sich nun natürlich stündlich beschwert, dass die NFS-Mounts nicht eingehängt waren.

Note: See TracTickets for help on using tickets.