Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
anwenderwiki:owncloud:schuljahreswechsel [2018/10/07 05:02] – Tobias | anwenderwiki:owncloud:schuljahreswechsel [2023/09/10 16:24] (aktuell) – [Komplettes Skript vom Server aus] tobias | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | {{tag> }} | ||
+ | |||
+ | ====== Schuljahreswechsel nextcloud: Alte Benutzer löschen ====== | ||
+ | |||
+ | Wer seine Owncloud/ | ||
+ | |||
+ | - Backup machen | ||
+ | - Nicht verwendete Accounts anzeigen und durchgehen | ||
+ | - vorsichtig folgendes Skript laufen lassen oder Benutzer manuell löschen | ||
+ | |||
+ | ===== Backup machen ===== | ||
+ | [[anwenderwiki: | ||
+ | |||
+ | ===== Alle Accounts löschen, die nicht mehr in LDAP sind ===== | ||
+ | |||
+ | - Der Pfad zur Owncloud/ | ||
+ | - Der Pfad zu Owncloud/ | ||
+ | |||
+ | |||
+ | (danke @max, der [[https:// | ||
+ | |||
+ | |||
+ | ==== Alle User überprüfen ==== | ||
+ | |||
+ | Nun habe ich das owncloud-datenverzeichnis (bei mir ''/ | ||
+ | |||
+ | < | ||
+ | ls / | ||
+ | </ | ||
+ | und dann den check-user-Befehl drauf losgelassen: | ||
+ | < | ||
+ | for i in `cat / | ||
+ | </ | ||
+ | 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: | ||
+ | < | ||
+ | sudo -u www-data php / | ||
+ | </ | ||
+ | |||
+ | Bei mir erscheinen hier auch viele Computerkonten, | ||
+ | < | ||
+ | root@cleese: | ||
+ | +---------------+--------------------+---------------+---------+---------------+-----+--------+ | ||
+ | | ownCloud name | Display Name | LDAP UID | LDAP DN | Last Login | Dir | Sharer | | ||
+ | +---------------+--------------------+---------------+---------+---------------+-----+--------+ | ||
+ | | lzdisplay01 | ||
+ | | lzdisplay02 | ||
+ | | lzlaptop01 | ||
+ | | test | | | ||
+ | | zztop | ||
+ | +---------------+--------------------+---------------+---------+---------------+-----+--------+ | ||
+ | </ | ||
+ | |||
+ | Zudem: Achtung, manchmal findet `ldap: | ||
+ | Ein check-user (siehe oben) überprüft aber tatsächlich, | ||
+ | |||
+ | ==== Accounts manuell löschen ==== | ||
+ | Die mit '' | ||
+ | <note important> | ||
+ | |||
+ | 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.</ | ||
+ | < | ||
+ | sudo -u www-data php / | ||
+ | </ | ||
+ | ===== Accounts per Skript löschen ===== | ||
+ | Mit folgendem Skript landen alle zu loeschenden User in einer Zwischendatei in ''/ | ||
+ | < | ||
+ | sudo -u www-data php / | ||
+ | </ | ||
+ | bevor man mit dem zweiten Befehl die User tatsächlich löscht. | ||
+ | < | ||
+ | for i in `cat / | ||
+ | </ | ||
+ | |||
+ | <note important> | ||
+ | Achtung, dieser Befehl zeigt nur an was getan wird. Für das richtige Löschen, entferne man das " | ||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | ==== Komplettes Skript vom Server aus ==== | ||
+ | |||
+ | <note important> | ||
+ | Achtung, folgendes Skript testet, ob der der server auch " | ||
+ | Ebenso heißt der Server auf dem nextcloud läuft " | ||
+ | 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). | ||
+ | </ | ||
+ | |||
+ | |||
+ | <code bash update_clouddata.sh> | ||
+ | # | ||
+ | # Copyright 2019-2023 Tobias Küchel < | ||
+ | # This piece of software is licensed under: | ||
+ | # SPDX-License-Identifier: | ||
+ | # ideas and pieces of this script from Max Führinger from the wiki | ||
+ | |||
+ | ## no command line arguments: your cloudserver should be configured here: | ||
+ | cloudserver=" | ||
+ | ## path to the occ command on the cloudserver | ||
+ | occcmd="/ | ||
+ | phpcmd=" | ||
+ | ## path to the data directory on the cloud server | ||
+ | data="/ | ||
+ | ## list of directories on $data/ which should not be considered for deletion | ||
+ | excludelist=" | ||
+ | |||
+ | ## kopiere dieses Script auf den Cloudserver | ||
+ | if [ `hostname -s` = " | ||
+ | echo " | ||
+ | scp $0 $cloudserver: | ||
+ | ssh -t $cloudserver $0 $1 | ||
+ | exit 0 | ||
+ | fi | ||
+ | |||
+ | ############################################################################################## | ||
+ | |||
+ | homelist=`mktemp` | ||
+ | pv --version > /dev/null | ||
+ | if [ $? -ne 0 ] ; then | ||
+ | apt install pv bc | ||
+ | fi | ||
+ | |||
+ | simulate="" | ||
+ | if [ " | ||
+ | echo " | ||
+ | simulate=" | ||
+ | fi | ||
+ | ### Zeige, frage und lösche alle User, die nicht mehr im LDAP sind: | ||
+ | echo -n "Users scheinbar nicht mehr im LDAP: " | ||
+ | $phpcmd $occcmd ldap: | ||
+ | if [ -s / | ||
+ | cat / | ||
+ | |||
+ | lines=$(cat / | ||
+ | lines=$(echo " | ||
+ | |||
+ | for i in `cat / | ||
+ | $phpcmd $occcmd ldap: | ||
+ | done | pv -l -s $lines > /dev/null | ||
+ | $phpcmd $occcmd ldap: | ||
+ | if ! diff / | ||
+ | echo "HUCH. Bitte starte das Programm nochmal. Es schienen beim ersten Durchlauf LDAP-User nicht zu existieren, die nach einen Check doch existieren!\ | ||
+ | " | ||
+ | exit 0 | ||
+ | fi | ||
+ | |||
+ | |||
+ | [[ -n $simulate ]] && echo " | ||
+ | echo -n " | ||
+ | read | ||
+ | if [ " | ||
+ | for i in `cat / | ||
+ | echo -n "$i: " | ||
+ | $simulate $phpcmd $occcmd user:delete " | ||
+ | done | ||
+ | fi | ||
+ | else | ||
+ | echo " | ||
+ | fi | ||
+ | ### Erstelle eine Liste an Usern mit Dateien in der Cloud | ||
+ | echo -n " | ||
+ | ls $data | grep -v " | ||
+ | echo `cat / | ||
+ | |||
+ | ### Erstelle die Liste aller User mit Dateien, die nicht mehr im LDAP sind | ||
+ | echo " | ||
+ | for i in `cat / | ||
+ | ## not an LDAP user? | ||
+ | if $phpcmd $occcmd ldap: | ||
+ | # not a local user? | ||
+ | if ! $phpcmd $occcmd user:info " | ||
+ | ## then add him to the list | ||
+ | echo " | ||
+ | fi | ||
+ | ## echo one byte | ||
+ | echo -n " | ||
+ | else | ||
+ | ## echo one byte | ||
+ | echo -n " | ||
+ | fi | ||
+ | done | pv -s `cat / | ||
+ | ### Zeige, frage und lösche alle User, die scheinbar noch Dateien in der Nextcloud haben | ||
+ | echo -n "Users in $homelist, deren Home gelöscht werden könnte $data: " | ||
+ | if [ -s $homelist ]; then | ||
+ | cat $homelist | paste -s -d " " | ||
+ | [[ -n $simulate ]] && echo " | ||
+ | echo " | ||
+ | read | ||
+ | if [ " | ||
+ | for i in `cat $homelist`; do | ||
+ | $simulate rm -rf $data/$i | ||
+ | done | ||
+ | fi | ||
+ | else | ||
+ | echo " | ||
+ | fi | ||
+ | exit 0 | ||
+ | rm / | ||
+ | rm / | ||
+ | rm $homelist | ||
+ | |||
+ | |||
+ | </ | ||
+ | |||