Anzeige:
Ergebnis 1 bis 2 von 2

Thema: ldap abfrage und homeverzeichnisse löschen

  1. #1
    frosch007
    Gast

    ldap abfrage und homeverzeichnisse löschen

    hallo

    ich habe folgendes problem vor mir liegen:

    die benutzerverwaltung läuft über ldap. scheiden mitarbeiter aus dem unternehmen aus habe diese immer noch ein home verzeichniss. jetzt würde ich gerne diese homeverzeichnisse löschen. ich habe mir das so vorgestellt, dass wenn ein user bei der ausgabe von "getent passwd" nicht mehr auftaucht bzw im 5. GECOS-Feld ein "DEL=..." steht das homeverzeichniss gelöscht wird.

    wie kann ich das am besten mit einem script umsetzen?

    danke

  2. #2
    Registrierter Benutzer
    Registriert seit
    07.05.2007
    Beiträge
    656
    Moin,

    wenn der Eintrag nicht mehr existiert, dann hast Du (abh. von Eurer Konfiguration) ein kleines bis großes Problem: Wo war das HOME-Verzeichnis des Users? Habt Ihr feste Pfade (z. B. /home/User), dann geht es noch:
    Code:
    getent passwd $USER
    test $? -eq 2 && rm -rf /home/$USER
    Wenn die HOME-Verzeichnisse variable Pfade haben, dann musst Du Dir wohl so helfen, dass Du z. B. eine allgemein vorhandene Datei suchst, die jeder User im HOME hat (z. B. .profile) - Du hast dann nämlich das Problem, dass Du auch seine User-ID nicht mehr kennst (sonst könntest Du mit find -user $USER_ID ... danach suchen):
    Code:
    getent passwd $USER
    if test $? -eq 2; then
      find / -type f -name .profile -print | while read f; do
        test `basename \`dirname $f\`` = $USER && rm -rf `dirname $f`
      done
    fi
    Damit suchst Du alle .profile-Dateien und guckst nach, ob der Verzeichnisname gleich dem Usernamen ist.

    Einfacher ist die 2. Variante ("DEL=..." im gecos-Feld):
    Code:
    gecos_home="`getent passwd $USER | cut -f5,6 -d:`"
    test "`echo $gecos_home | cut -f1 -d=`" = "DEL" && rm -rf `echo "$gecos_home" | cut -f2 -d:`
    Wenn Du nicht weisst, welche User überhaupt gelöscht wurden, dann wird es noch lustiger. Dann musst Du z. B. alle .profiles suchen, die keinem User mehr zugeordnet sind:
    Code:
    find / -name .profile -type f -nouser -print | while read f; do...
    Auch hier hilft es natürlich, wenn die HOME-Verzeichnisse unter bekannten Pfaden zu erreichen sind. In der 2. Variante geht es dann einfach über alle User:
    Code:
    getent passwd | cut -f5,6 -d: | while read gecos_home; do ...
    Vorsicht: Alle Beispiele ungetestet! ICH will nämlich keine User bei mir löschen.

    Noch ein Rat zur Vorsicht: Es gibt meist Verzeichnisse, in denen User Dateien ablegen und die nicht ihre HOME-Verzeichnisse sind. Wenn der User gelöscht ist (und nicht mehr per getent passwd zu finden ist), dann steckt da ein gewisses Risiko drin: Wenn ein böswilliger User (oder Trottel, der mal eben sein HOME irgendwo in zentrale Verzeichnisse gesichert hat) darin eine .profile anlegt, dann suche bei Variante 1 am besten schnell ein Backup raus ;-)

    HTH
    Jan

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •