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 | ||
| + | |||
| + | |||
| + | </ | ||
| + | |||