Mit icacls Vollzugriff vererben

Das Kommandozeilen-Tool icacls zum Vergeben und Vererben von NTFS-Berechtigungen ist nicht so vollständig wie wünschenswert dokumentiert. Beisoielsweise vergibt der Parameter /grant:r (Benutzer):F zwar für den Benutzer Vollzugriff, jedoch nur als „spezielle“ Berechtigung.

Lösung:

Als Beispiel wollen wir den Vollzugriff für einen Ordner und alle enthaltenen Objekte vererben.

icacls <ordner>/inheritance:r /grant:r "<domaene>Gruppe":(OI)(CI)F /T
  • /inheritance:r – Entfernt alle vererbten ACEs in diesem Ordner
  • /grant:r „<domaene>Gruppe“:(OI)(CI)F – „Echter“ Vollzugriff für die Gruppe setzen
  • /T – Rekursiv durch Unterordner und Dateien

Ein weiteres Beispiel aus der Praxis: Auf einem Zielordner muss ich ab und an mal alle wild gewuchterten (oder vom System beim Kopieren hinzugefügten) Rechte entfernen und eine saubere Rechtestruktur von oben nach unten vererben. Natürlich sollen dabei auch Besitzer-Rechte keine Rolle spielen und der Besitz durch den Admin (der ausführende) übernommen werden. Das Script wird mit dem Zielordner als Parameter gestartet (nimmrechte.cmd <ziel>). Achtung: Das ä ist schon ein ANSI-Ä, also Kommandozeilen-Kompatibel.

REM --- Besitz uebernehmen
takeown /F %1 /R /D J

REM --- Rechte korrekt setzen
icacls %1 /inheritance:r /grant:r "<domaene>Dom„nen-Admins":(OI)(CI)F /T /grant "<domaene>%1":(OI)(CI)F /T /remove "benutzer" /t /remove "Ersteller-Besitzer" /remove "system"

REM --- Vererbung innerhalb des Ordners wieder aktivieren
icacls %1* /inheritance:e /T

Windows 7 Update Fehler 0x80070057

Problem

Unter Windows 7 bleibt Windows Update mit dem Fehler „0x80070057“ hängen. Der Windows-Update Troubleshooter kann den Fehler nicht allein beheben und auch das Fix-It Tool zum zurücksetzen der Update-Komponenten funktioniert nicht („… ein Fehler konnte nicht behoben werden …“).

Lösung

  1. Deinstallation .NET Framework 4.5.2 (SPRACHE) (Das kann DEUTSCH oder etwas anderes sein)
  2. Deinstallation .NET Framework 4.5.2
  3. Deinstallation Silverlight
  4. reboot
  5. Silverlight neu installieren (von https://www.microsoft.com/silverlight/) und den Haken bei „Microsoft Update aktivieren“ am Ende nicht vergessen:
    silverlight-update-fehler
  6. Das .NET Framework 4.5.2 wieder installieren
  7. Fertig, Windows-Update geht wieder. Zeit Windows 7 auf etwas aktuelles umzustellen …

WSUS Assistent für die Serverbereinigung bricht mit Datenbankfehler ab „Serverknoten zurücksetzen“

Problem

assistent-wsus-serverbereinigungDie Update-Bereinigung des 2008er WSUS Serverdienstes bricht nach langer Laufzeit ab. Der Assistent läuft bei hoher CPU-Auslastung sehr lange, tut aber augenscheinlich nichts. Es werden keine Updates entfernt und der Asistent bleubt nach einer Weile mit einem Timeout-Fehler stehen.

Fehlermeldung:

Beim ausführen eines Datenbankvorganges ist ein Fehler aufgetreten. Dies kann geschehen, wenn die Datenbank sehr ausgelastet, der Datenbankdienst beendet wurde oder die Verbindung mit der Datenbank getrennt wurde.

 

Lösung

Wenn die Windows-eigene SQL-Instanz (WSSEE) aus dem Lieferumfangt genutzt wird, muss hier erst der pipe-Zugriff erlaubt werden („piped pipes“). Per Default ist der Zugriff abgeschaltet.

  1. Den „SQL Server Configuration Manager“ (im Lieferumfang vom SQL Management Studio) installieren, starten
  2. Protokolle für „MICROSOFT##SSEE“ auswählen in den Eigenschaften das „Instanz verstecken“-Feld auf „nein“ stellen.
  3. Dienst neu Starten
  4. SQL Server Configuration Manager >  SQL Native Client Konfiguration > Aliase >  Rechtsklick auf den Alias „<servername>\Microsoft##SSEE“ > Eigenschaften
  5. Den Aliasnamen ändern, von „<servername>\Microsoft##SSEE“ zu „<servername>\##SSEE“

Dann kann man sich mit dem SQL Server Management Studio (oder einem anderen SQL-Client) zu der Instanz verbinden. Wer einen ausgewachsenen SQL-Server nutzt, kann dies selbstverständlich auch sofort tun.

  1. Mit dem SQL Management Studio zur entsprechenden SQL-Instanz verbinden
    1. Die SQL-Express Instanz aus dem WSSEE heisst „\\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query“ (einfach in das ‚Servername‘ Feld eingeben). Unter Windows Server 2012: „\\.\pipe\MICROSOFT##WID\tsql\query“
    2. Für die WSSEE die „Named Pipes“ unter den Netzwerkprotokollen > Verbindungseinstellungen auswählen
  2. Diese Query ausführen:
    USE SUSDB;
    exec spGetObsoleteUpdatesToCleanup;
    
  3. Das Ergebnis ist in der Regel eine lange Liste von obsoleten Update-ID-Nummern. In den meisten Fällen „klemmt“ nur ein Update (i.d.R. die erste oder letzte ID in der Liste), nach dessen Entfernung der Assistent wieder problemlos funktioniert. Updates entfernen:
    exec spDeleteUpdate @localUpdateID=<ID-Nummer des Updates>

Update: Seit Windows Server 2012 sieht der Verbindungsalias etwas anders aus.

Microsoft SQL Server (MSSQL) model, tempdb, msdb und master Datenbank verschieben

Kann man die Systemdatenbanken (master, model, msdb, tempdb) im Dateisystem verschieben, zum Beispiel auf ein anderes Laufwerk ?Ja. Im laufenden Betrieb? Nein.

So verschiebt man die Systemdatenbanken MODEL, MASTER und MSDB

Wo befinden sich die Datenbankdateien im Moment?

sql-systemdatenbanken-verschieben

SELECT name, physical_name FROM sys.master_files WHERE database_id = DB_ID(N’model’);
  1. Neuen physikalischen Pfad für model, msdb und tempdb festlegen:
    USE master;
    -- model Datenbank verschieben
    ALTER DATABASE model MODIFY FILE (NAME = modeldev, FILENAME = "E:\SQL-DB\model.mdf");
    ALTER DATABASE model MODIFY FILE (NAME = modellog, FILENAME = "E:\SQL-DB\modellog.ldf");
    -- msdb Datenbank verschieben
    ALTER DATABASE msdb MODIFY FILE (NAME = MSDBData, FILENAME = "E:\SQL-DB\MSDBData.mdf");
    ALTER DATABASE msdb MODIFY FILE (NAME = MSDBLog, FILENAME =  "E:\SQL-DB\MSDBLog.ldf");
    -- tempdb Datenbank verschieben
    ALTER DATABASE TempDB MODIFY FILE (NAME = Tempdev, FILENAME = "E:\SQL-DB\tempdb.mdf");
    ALTER DATABASE TempDB MODIFY FILE (NAME = Templog, FILENAME = "E:\SQL-DB\templog.ldf");
    
  2. SQL Server Dienst beenden
  3. Dateien im Dateisystem verschieben
  4. SQL Server Dienst starten

So verschiebt man die Systemdatenbank MASTER

  1. SQL Konfigurationsmanager öffnen
  2. Links in der Baumansicht auf „SQL Server Dienste“
  3. Rechts die Eigenschaften von „SQL Server (INSTANZNAME)“ öffnen
  4. Auf dem Tab „Startparameter“ die Pfade auf die neuen Zielpfade ändern
    1. ACHTUNG, BUG in SQL 2012/2014: Der „Aktualisieren“ Knopf lässt keine Pfade zu, die ein Minuszeichen enthalten („Ungültiger Parameter“).
    2. Wenn der Pfad ein Minuszeichen enthält, muss man den Pfad in der Registry direkt bearbeiten:
      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQLServer\Parameters
  5. SQL-Server Dienst beenden
  6. Dateien im Dateisystem verschieben
  7. SQL-Server Dienst startensql-masterdatenbank-verschieben

Anmeldeinformationsverwaltung („Tresor“) für gespeicherte Kennwörter unter Windows Vista / Server 2008

Problem

Mit Windows 7 und Server 2008R2 wurde das Systemsteuerungs-Applet „Anmeldeinformationsverwaltung“ (oder auch Tresor) eingeführt, der gespeicherte Anmeldedaten verwaltet. Unter Vista/2008 existiert diese anwendung aber noch nicht.

anmeldeinformationsverwaltunganmeldeinformationsverwaltung-applet

 

Lösung

Das Applet gibt es in früheren Versionen zwar nicht, aber es gibt die „Stored Usernames and passworts“ Dialogbox.

c:\> rundll32.exe keymgr.dll, KRShowKeyMgr