onkelfu
Goto Top

Alle Dateien eines Nutzers übernehmen - Wie?

Hallo zusammen!

In unserem Betrieb gibt es regelmäßig wechselndes Personal. Diese User müssen auch regelmäßig Dateien auf öffentlichen Freigaben erstellen und damit arbeiten. Wenn die User den Betrieb verlassen, wird Ihr Account gelöscht. Das Problem ist nur, dass die Files trotzdem noch die User-ID als Besitzer tragen. Ich würde diese Dateien gern alle in den Besitz des Admins geben, um damit wieder vernünftig arbeiten zu können (Kontingente spielen da mit rein und so).
Mit einer kleinen batch-Datei mit "dir" Befehl kann ich bereits alle Dateien eines Users auflisten, jedoch bräuchte ich ein Tool bzw. einen Befehl, um auch auf einen Schlag alle Files eines Users einem anderen User (Bsp: Admin) in den Besitz zu geben.
Kennt jemand ein solches Tool (am besten natürlich Freeware) bzw. geht das mit Boardmitteln?


Danke für die Hilfe


onkelfu

Content-Key: 34664

Url: https://administrator.de/contentid/34664

Ausgedruckt am: 29.03.2024 um 04:03 Uhr

Mitglied: superboh
superboh 22.06.2006 um 12:40:22 Uhr
Goto Top
Verzeichnis mit der rechten Maustaste anklicken --> Eigenschaften --> Register Sicherheit --> Erweitert --> Register Besitzer --> in der Mitte den neuen Besitzer auswählen und unten noch den Haken für rekursiv rein

Ansonsten gibt es hier http://wwwthep.physik.uni-mainz.de/~frink/nt.html ein "chown"-Kommandozeilen-Tool, mit dem der Besitzer auch auf jeden anderen user geändert werden kann.

Gruß,
Thomas
Mitglied: onkelfu
onkelfu 22.06.2006 um 14:03:36 Uhr
Goto Top
Danke für den Tipp!
Hatte vergessen zu erwähnen, dass die Files teilweise über viele Verzeichnisse verstreut sind und auch mit Files anderer User vermischt sind. Möchte also nicht ein komplettes Verzeichnis übernehmen.


onkelfu
Mitglied: Biber
Biber 22.06.2006 um 21:58:44 Uhr
Goto Top
Moin, onkelfu,

vielleicht kann ich Thomas' Lösung mit einem Einzeiler ergänzen.

:: ---snipp TakeOwnerShip.bat
:: Übernimmt alle Dateien eines bestimmten Users ab einem bestimmten Unterverzeichnis 
:: [mit Alexander Frinks "Chown"-Utility]  durch einen neuen Benutzer  
:: Parameter: <Startverzeichnis> <DOMAIN\AlterUser> DomainDesNeuenUsers NeuerUsername
:: Beispiel TakeOwnership d:\test OldDOM\OldUSER NewDOM NewUSER
@echo off & for /r %1 %%i in (.) do for /f "tokens=4,5" %%a in ('dir /q /a:-d "%%~sfi" ^2^>nul') do (  
    if /i [%%a]==[%2] @ECHO chown -d %3 %4 "%%~fi\%%~nxb" )  
:: ---snapp TakeOwnerShip.bat
Output bei mir im Beispiel:
- Vier Dateien des alten Users AltBau\Biber namens Test1.txt....test4.txt sind versteckt.
>f:\TakeOwnerShip.bat d:\temp Altbau\Biber NewLodge Beaver
chown -d NewLodge Beaver "d:\temp\test1.txt"  
chown -d NewLodge Beaver "d:\temp\Backup1\test2.txt"  
chown -d NewLodge Beaver "d:\temp\Backup1\WINDOWS\system\test3.txt"  
chown -d NewLodge Beaver "d:\temp\Crossing The Bridge - Istanbul Hatirasi\test4.txt"  

Das GROSSGESCHRIEBENE @echo kann/muss natürlich zum Scharf-Schalten gelöscht werden
- so zeigt der Batch ja nur, was er tun würde.
Nämlich alle Dateien vom User Altbau\Biber durch den User NewLodge\Beaver übernehmen.

Bin nicht so gut im Erklären, aber es ist ja auch nur ein Oneliner... face-wink

Gruß
Biber
Mitglied: onkelfu
onkelfu 22.06.2006 um 22:15:21 Uhr
Goto Top
Wow, klappt perfekt!
Herzlichen Dank, das nimmt einem doch einiges an Arbeit ab!

Zur Zeit reicht das vollkommen aus. Wie würdet Ihr das ganze jetzt angehen, wenn ihr den User schon gelöscht hättet und nur noch diese kryptische user-id existiert?


onkelfu
Mitglied: superboh
superboh 23.06.2006 um 00:15:47 Uhr
Goto Top
Hm, ... ich denke dann musst Du die Dateien wohl von Hand zusammensuchen ...

Wobei ... hast Du mal versucht statt Bibers Script statt mit dem Namen eines Users mit der SID zu füttern?

Gruß,
Thomas
Mitglied: onkelfu
onkelfu 23.06.2006 um 09:02:38 Uhr
Goto Top
Habs grad das Tool mal mit der User-Id probiert. Kommt keine Fehlermeldung, aber funktioniert auch nicht.


Grüße,

onkelfu
Mitglied: Biber
Biber 23.06.2006 um 10:50:06 Uhr
Goto Top
Zugegeben, ist eine berechtigte Frage... wenn der Benutzer bereits gelöscht ist.

Musste ich selbst erstmal probieren.

Also - habe Benutzer "Just4Del" (lokal) angelegt, den eine Datei übernehmen lassen, "Just4Del" gelöscht.
....
>dir /q test*.txt
....
 Datenträger in Laufwerk D: ist 3KiloSchwer
 Volumeseriennummer: 0815-4711

 Verzeichnis von D:\temp

22.08.2005  20:30             2.163 BIBERSBESTER\just4del  test1.txt
...
(=10:31:37  D:\temp=)
>net user /del just4del
Der Befehl wurde erfolgreich ausgeführt.

(=10:32:18  D:\temp=)
>dir /q test*.txt
 Datenträger in Laufwerk D: ist 3KiloSchwer
 Volumeseriennummer: 0815-4711

 Verzeichnis von D:\temp

22.08.2005  20:30             2.163 ...                    test1.txt

> also: jeder "nicht identifizierbare Eigentümer" wird vom CMD-Befehl "DIR /Q", den ich ja oben verwende, als "..." (drei Punkte) angezeigt.
Logischerweise OHNE die Information, welcher gelöschte/nicht bekannte Benutzer das ist.

Ergo würde ich alle Dateien aller gelöschten Benutzer übernehmen (müssen) mit [mein Test am CMD-Prompt, ich hatte den Schnipsel von gestern noch]
>f:\TakeOwnerShip.bat d:\temp ... MyDomain Administrator
chown -d MyDomain Administrator "d:\temp\test1.txt"  

Works as designed , wie wir Biber sagen...

Gruß
Biber
Mitglied: onkelfu
onkelfu 23.06.2006 um 11:09:35 Uhr
Goto Top
Perfekt!

Darauf bin ich nicht gekommen. Respekt!
Funktioniert bestens!
Danke vielmals,


onkelfu
Mitglied: Biber
Biber 23.06.2006 um 13:01:27 Uhr
Goto Top
Na ja.. fast perfekt.

Eine nötige Ergänzung hab ich noch eingebaut, nämlich die Verarbeitung von
"Test-Datei mit Leerzeichen im Namen.txt"

Dafür muss es so aussehen:
:: ---snipp TakeOwnerShip.bat Vers. 0.2 auch für "Datei mit Leerzeichen im Namen.txt"  
:: Übernimmt alle Dateien eines bestimmten Users ab einem bestimmten Unterverzeichnis 
:: [mit Alexander Frinks "Chown"-Utility]  durch einen neuen Benutzer  
:: Parameter: <Startverzeichnis> <DOMAIN\AlterUser> DomainDesNeuenUsers NeuerUsername
:: Beispiel TakeOwnership d:\test OldDOM\OldUSER NewDOM NewUSER
@echo off & for /r %1 %%i in (.) do for /f "tokens=4,5,*" %%a in ('dir /q /a:-d "%%~sfi" ^2^>nul') do (  
    if /i [%%a]==[%2] @ECHO chown -d %3 %4 "%%~fi\%%b %%c" )  
:: ---snapp TakeOwnerShip.bat
Output beim Test:
>f:\TakeOwnerShip.bat d:\temp ... MyDomain Administrator
chown -d MyDomain Administrator "d:\temp\test langername1.txt"  
Bei Dateien OHNE Leerzeichen im Namen kommt zwar als Ergebniszeile raus:
chown -d MyDomain Administrator "d:\temp\test.txt "  
chown -d MyDomain Administrator "d:\temp\Backup1\test.txt "  
aber chown.exe stört sich NICHT an dem überflüssigen Leerzeichen am Ende.

Nun sollte es brauchbar sein (von der fehlenden Parameterprüfung und Hilfe abgesehen).

Setz dann bitte den Thread auf "Gelöst", onkelfu.

Schönes Wochenende
Biber
Mitglied: onkelfu
onkelfu 23.06.2006 um 13:11:38 Uhr
Goto Top
Der Schönheitsfehler ist mir garnicht aufgefallen.
Danke nochmals für deine Hilfe.

Damit ist das Problem nun wirklich gelöst face-wink


onkelfu
Mitglied: Biber
Biber 25.06.2006 um 21:48:44 Uhr
Goto Top
Um das Thema nun wirklich abzuschließen und das Bätschelchen ein bissi schneller zu machen, noch eine kleine Tuningmaßnahme.
:: ---snipp TakeOwnerShip.bat Vers. 0.3 auch für "Datei mit Leerzeichen im Namen.txt" und Verzeichnisse  
:: Übernimmt alle Dateien/Unterverzeichnisse eines bestimmten Users durch einen neuen Benutzer
:: [mit Alexander Frinks "Chown"-Utility]   ab einem bestimmten Unterverzeichnis   
:: Parameter: <Startverzeichnis> <DOMAIN\AlterUser> DomainDesNeuenUsers NeuerUsername
:: Beispiel TakeOwnership d:\test OldDOM\OldUSER NewDOM NewUSER
@echo off & for /r %1 %%i in (.) do (
 for /f "tokens=4,*" %%a in ('dir /q "%%~sfi" ^2^>nul^|find /i "%2"') do (  
    @ECHO chown -d %3 %4 "%%~fi\%%b" ))  
:: ---snapp TakeOwnerShip.bat
[Musste ich tun - bin ja auch Perfektionist]

Gruß
Biber
Mitglied: superboh
superboh 26.06.2006 um 00:10:15 Uhr
Goto Top
@Biber:
Ich bin immer wieder erstaunt, was Du alles in einen Einzeiler quetscht ... face-smile