Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:owncloud:schuljahreswechsel]] 

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
anwenderwiki:owncloud:schuljahreswechsel [2018/03/11 15:39]
Tobias
anwenderwiki:owncloud:schuljahreswechsel [2018/10/07 05:02] (aktuell)
Tobias
Zeile 1: Zeile 1:
 +{{tag> }}
  
 +====== Schuljahreswechsel nextcloud: Alte Benutzer löschen ======
 +
 +Wer seine Owncloud/​Nextcloud an das LDAP angeschlossen hat, der verliert z.B. nach einem Schuljahreswechsel Schüler und auch Lehrer. Wer diese "​Karteileichen"​ vermeiden will, der kann folgende Prozedur durchlaufen:​
 +
 +  - Backup machen
 +  - Nicht verwendete Accounts anzeigen und durchgehen
 +  - vorsichtig folgendes Skript laufen lassen oder Benutzer manuell löschen
 +
 +===== Backup machen =====
 +[[anwenderwiki:​owncloud:​migration|Hier]] gibt es eine gute Beschreibung,​ was man machen kann. Wer einen Cloud-server virtualisiert hat, kann auch diesen backupen.
 +
 +===== Alle Accounts löschen, die nicht mehr in LDAP sind =====
 +
 +  - Der Pfad zur Owncloud/​Nextcloud-installation (hier: ''/​opt/​nextcloud''​) muss angepasst werden.
 +  - Der Pfad zu Owncloud/​Nextcloud-Daten (hier: ''/​owncloud-data''​) muss angepasst werden.
 +
 +
 +(danke @max, der [[https://​ask.linuxmuster.net/​t/​own-nextcloud-userpflege-automatisch-funktioniert-nicht-selfmade/​754]] das Verfahren dokumentiert hat, inkl. der Problematik irgendwo zw. Nextcloud 11 und 12, ab Nextcloud 13 funktioniert es wieder):
 +
 +
 +==== Alle User überprüfen ====
 +
 +Nun habe ich das owncloud-datenverzeichnis (bei mir ''/​owncloud-data''​) in eine liste gepackt, meines Erachtens die einzige Möglichkeit,​ alle Nutzernamen zu bekommen:
 +
 +<​code>​
 +ls /​owncloud-data/​ | grep -v "​\."​ > /​tmp/​userlist
 +</​code>​
 +und dann den check-user-Befehl drauf losgelassen:​
 +<​code>​
 +for i in `cat /​tmp/​userlist` ; do sudo -u www-data php /​opt/​nextcloud/​occ ldap:​check-user "​$i";​ done
 +</​code>​
 +Das findet nochmal alle die User, die bisher noch als vorhanden geglaubt wurden.
 +
 +==== Noch nicht gelöschte Accounts anzeigen ====
 +Auf dem Cloudserver folgender Befehl zeigt alle nicht (mehr) in LDAP gefunden User an:
 +<​code>​
 +sudo -u www-data php /​opt/​nextcloud/​occ ldap:​show-remnants
 +</​code>​
 +
 +Bei mir erscheinen hier auch viele Computerkonten,​ wenn es die Computer nicht mehr bei linuxmuster.net gibt. z.B:
 +<​code>​
 +root@cleese:​~#​ sudo -u www-data php /​opt/​nextcloud/​occ ldap:​show-remnants
 ++---------------+--------------------+---------------+---------+---------------+-----+--------+
 +| ownCloud name | Display Name       | LDAP UID      | LDAP DN | Last Login    | Dir | Sharer |
 ++---------------+--------------------+---------------+---------+---------------+-----+--------+
 +| lzdisplay01 ​  ​| ​                   |               ​| ​        | -             ​| ​    | N      |
 +| lzdisplay02 ​  ​| ​                   |               ​| ​        | -             ​| ​    | N      |
 +| lzlaptop01 ​   |                    |               ​| ​        | -             ​| ​    | N      |
 +| test          |                    |               ​| ​        | -             ​| ​    | N      |
 +| zztop         ​| ​                   |               ​| ​        | -             ​| ​    | N      |
 ++---------------+--------------------+---------------+---------+---------------+-----+--------+
 +</​code>​
 +==== Accounts manuell löschen ====
 +Die mit ''​ldap:​show-remnants''​ angezeigten Accounts kann man nun händisch löschen.
 +<note important>​Achtung
 +
 +Natürlich werden alle Daten der Karteileichen entfernt. Wenn also dem ehemaligen Benutzer Daten gehören, die er/sie geteilt hat und die andere noch sehen konnten, so sind diese nach dieser Löschung spätestens verschwunden.</​note>​
 +<​code>​
 +sudo -u www-data php /​opt/​nextcloud/​occ user:delete zztop
 +</​code>​
 +===== Accounts per Skript löschen =====
 +Mit folgendem Skript landen alle zu loeschenden User in einer Zwischendatei in ''/​tmp/​zuloeschendeuser'',​ die man sich anschauen kann und sollte:
 +<​code>​
 +sudo -u www-data php /​opt/​nextcloud/​occ ldap:​show-remnants ​ | awk '​{print $2}' | sed "​2d;/​^\s*$/​d"​ > /​tmp/​zuloeschendeuser
 +</​code>​
 +bevor man mit dem zweiten Befehl die User tatsächlich löscht.
 +<​code>​
 +for i in `cat /​tmp/​zuloeschendeuser`;​ do echo sudo -u www-data php /​opt/​nextcloud/​occ user:delete "​$i";​ done
 +</​code>​
 +
 +<note important>​
 +Achtung, dieser Befehl zeigt nur an was getan wird. Für das richtige Löschen, entferne man das "​echo"​ aus der Zeile.</​note>​
 +
 +----
 +
 +
 +==== Komplettes Skript vom Server aus ====
 +
 +<note important>​
 +Achtung, folgendes Skript testet, ob der der server auch "​server"​ heißt. ​
 +Ebenso heißt der Server auf dem nextcloud läuft "​cleese"​.
 +Ebenso müssen die Lage der installation und der Daten angepasst werden.
 +Das Skript löscht zudem (nach Entfernen von echo im Befehl echo rm -rf) auch noch User, die nicht mehr in der Datenbank sind, aber noch auf der Platte ein Verzeichnis haben (passierte bei mir vermutlich während Nextcloud 12-13).
 +</​note>​
 +
 +
 +<code bash update_clouddata.sh>​
 +#!/bin/bash
 +
 +lmnservername="​server"​
 +nextcloudservername="​cleese"​
 +occ="/​opt/​nextcloud/​occ"​
 +data="/​srv/​nextcloud/​data"​
 +
 +if [ `hostname` = "​$lmnservername"​ ]; then
 +    echo "​copying $0 to $nextcloudservername"​
 +    scp $0 ${nextcloudservername}:​
 +    ssh -t ${nextcloudservername} $0
 +    exit 0
 +fi
 +
 +hardlist=`mktemp`
 +
 +pv --version > /dev/null
 +if [ $? -ne 0 ] ; then
 +    apt install pv
 +fi
 +
 +echo -n "​Erstelle Liste: "
 +ls $data | grep -v "​\."​ | grep -vE "​(appdata|files_external)"​ > /​tmp/​userlist
 +echo `cat /​tmp/​userlist | wc -l` "​user"​
 +
 +echo "​Checke,​ ob User noch in LDAP sind:"
 +for i in `cat /​tmp/​userlist` ; do 
 +    if  sudo -u www-data php $occ ldap:​check-user "​$i"​ | grep "​not"​ 2>&1 >/​dev/​null ; then
 +        # not a local user?
 +        if ! sudo -u www-data php $occ user:info "​$i"​ 2>&1 >/​dev/​null ; then
 +            echo "​$i"​ >> $hardlist
 +        fi
 +    else
 +        echo -n "​."​
 +    fi
 +done | pv -s `cat /​tmp/​userlist | wc -l` > /dev/null
 +
 +echo -n "Users nicht mehr im LDAP:"
 +sudo -u www-data php /​opt/​nextcloud/​occ ldap:​show-remnants ​ | awk '​{print $2}' | sed "​2d;/​^\s*$/​d"​ > /​tmp/​zuloeschendeuser
 +if [ -s /​tmp/​zuloeschendeuser ]; then
 +    cat /​tmp/​zuloeschendeuser | paste -s -d " "
 +    echo "​Sollen diese User gelöscht werden? yes/​NO"​
 +    read
 +    if [ "​x$REPLY"​ = "​xyes"​ ] ; then
 +        for i in `cat /​tmp/​zuloeschendeuser`;​ do 
 +            sudo -u www-data php /​opt/​nextcloud/​occ user:delete "​$i"; ​
 +        done 
 +    fi
 +else
 +    echo "​keine"​
 +fi
 +
 +echo -n "Users in $hardlist, deren Home gelöscht werden könnte $data:"​
 +if [ -s $hardlist ]; then
 +    cat $hardlist | paste -s -d " "
 +    echo "​Sollen diese User per rm -rf $data/<​user>​ gelöscht werden? yes/​NO"​
 +    read
 +    if [ "​x$REPLY"​ = "​xyes"​ ] ; then
 +        for i in `cat $hardlist`; do
 +            echo rm -rf $data/$i
 +        done
 +    fi
 +else
 +    echo "​keine"​
 +fi
 +</​code>​
 [[anwenderwiki:owncloud:schuljahreswechsel]] anwenderwiki/owncloud/schuljahreswechsel.txt · Zuletzt geändert: 2018/10/07 05:02 von Tobias