Beim Umzug einer größeren WordPress-Webseite von Windows IIS auf Linux ist aufgefallen, dass einige Bilder in wp-content\uploads nicht mit kopiert wurden. Grund war, dass der IIS die Bilder, die ihm das WordPress über die php.exe übergab, mit sehr diffusen Zugriffsrechten im Dateisystem abgelegt hat.
Die skalierten Bilder haben wieder die normalen Berechtigungen. Das Ganze kann man per Hand vielleicht ein paar mal korrigieren durch Besitzübernahme und manuelles Setzen der Rechte. Dachte ich. Doch auch das klappte nicht.
So wurde eine Powershell mit Systemrechten gestartet:
psexec -i -s powershell
Darin speichert man sich die Acl eines korrekten Bildes in einer Variablen:
$myacl = get-acl .\wp-content\uploads\4711\bild-100×100.jpg
Anschließend wird die zwischengespeicherte Acl auf alle anderen Objekte angewandt:
Get-ChildItem .\wp-content\uploads -Recurse -Force | Set-Acl -AclObject $myacl
Ist zwar nicht so effektiv, aber Sie werden in der Standard-Powershell für sowas wohl kein ganzes Program schreiben…