So legen Sie fest, zu welchem ​​Eigentümer / zu welcher Gruppe ein programmgesteuerter Ordner gehört

1076
Chris Rockwell

Zunächst ein kleiner Hintergrund: Ich mache einige Drupal-Sites auf einem Windows 7-Rechner. Drupal verfügt über ein Image-Modul, das die Zwischenspeicherung von Bildern ermöglicht. Wenn Sie einen Bildstil erstellen, erstellt das Modul ein Verzeichnis. Wenn Sie beispielsweise einen Stil erstellen my_image_style, wird automatisch ein Ordner erstellt sites/default/files/img/styles/my_image_style/and/some/other/folders/beneath. Das erstellte Verzeichnis hat jedoch die Gruppe owner: Administrators:Systemmit Berechtigung d--------+. Alles andere bis hin zur Wurzel ist alles chrisrockwell:None. Apache (dies ist ein WAMP5-Setup) ist auch chrisrockwell:None.

Das Drupal-Modul muss Dateien in diesem Verzeichnis erstellen, kann jedoch aufgrund des Berechtigungsproblems nicht erstellt werden.

Wie lege ich in dieser Konfiguration fest, zu welchem ​​Benutzer: ein erstelltes Verzeichnis gehört?

Ich bin nicht sicher, ob es einen Effekt hat, aber ich mache meistens alles innerhalb von Cygwin (bewegen, öffnen, vim).

Bitte lassen Sie mich wissen, wenn Sie zusätzliche Informationen benötigen oder dies auf einer anderen Website besser geeignet ist.

UPDATE: Wenn ich das gesamte Site-Verzeichnis chmod 777 habe, ist der einzige Ordner, dem ich die Berechtigung verweigert habe, der image_style-Ordner, der von Drupal-Skript erstellt wird.

0
Hinweis: `d --------- +` bedeutet nicht, dass keine Berechtigungen vorhanden sind. Das "+" bedeutet, dass dem Verzeichnis eine Zugriffsliste zugeordnet ist, die nicht als einfache Berechtigungen angezeigt werden kann. Darth Android vor 11 Jahren 0
@DarthAndroid Ich denke, es hat mit Windows ACLs zu tun. Selbst wenn ich das gesamte Verzeichnis, das als Administrator ausgeführt wird, mit -R 777 chmodelt, sind die Berechtigungen immer noch -rw -r-r--. Ich weiß nicht viel über ACLs, daher habe ich Probleme bei der Fehlerbehebung Chris Rockwell vor 11 Jahren 0
Ich ging so weit, jedem Benutzer, jeder Gruppe die volle Kontrolle über dieses bestimmte Verzeichnis zu geben, ohne Erfolg. Chris Rockwell vor 11 Jahren 0

2 Antworten auf die Frage

1
Matt

Ich habe ähnliche Probleme mit anderen Anwendungen in Windows gesehen, als ich die Gruppe als Administrator falsch eingestellt habe. Ich weiß nicht, wie Sie das ursprüngliche Problem bei der Verzeichniserstellung beheben können, aber Sie können den Besitzer und die Gruppe für alle Verzeichnisse in cygwin neu zuweisen chown:

chown -R chrisrockwell:none my_image_style 
Thanks, I had already chown'd the directory. Even though chrisrockwell:None is now the owner:group, the Drupal module still can not read/write. Chris Rockwell vor 11 Jahren 0
0
Ярослав Рахматуллин

Cygwin bemerkt

Dies ist eine Problemumgehung und keine Antwort.

Ich habe kürzlich ähnliche Probleme mit Cygwin gehabt. Die Ursache scheint eine falsche Konfiguration darin zu sein, wie Windows-Benutzer und -Gruppen Cygwin-Benutzern und -Gruppen zugeordnet werden. Insbesondere habe ich gesehen, dass die Registerkarte "Sicherheit" im Dialogfeld "Dateieigenschaften" Einträge für "Gruppe" oder "Benutzername" enthält, z. B. "Besitzer" und "Gruppe". Ich gehe davon aus, dass diese von Windows nicht unterstützt werden.

Es kann sich lohnen, sich das mkpasswdDienstprogramm anzusehen und sich mit Windows-ACLs vertraut zu machen, um dies dauerhaft zu beheben. Bisher konnte ich jedoch alle Dateiberechtigungsfehler beseitigen, indem ich die Windows-ACLs wie folgt auf die Standardwerte zurücksetze:

wraptor: ~/tmp/su/find-xargs $ icacls.exe . /reset /t processed file: . processed file: .\.search-dirs processed file: .\.test processed file: .\dirz processed file: .\foo processed file: .\moo processed file: .\sensors processed file: .\.test\test.java processed file: .\dirz\3.java processed file: .\foo\2.java processed file: .\moo\1.java processed file: .\sensors\light.java Successfully processed 12 files; Failed processing 0 files 

Danach ist es manchmal notwendig, die Hierarchie zu durchlaufen und die Berechtigungsbits zurückzusetzen:

find . -type d -exec chmod 755 {} + find . -type f -exec chmod 644 {} + 

Nach diesen Schritten befinden sich die Dateien korrekt im Besitz von Windows-Me, oder der Administratorbenutzer und native Windows-Programme können diese Dateien wie üblich lesen und schreiben.


Versuchen Sie eine Antwort

Ansonsten sollte umask erwähnt werden. Es wird in einer Benutzerumgebung (oder für einen Prozess in einem Programm) festgelegt und regelt die Berechtigungen der später erstellten Dateien und Ordner.

zB (bash)

umask 0022 

Dadurch werden alle Dateien und Ordner mit den Berechtigungen 644 und 755 erstellt.

zB (Python)

$ cat moo.py import os for _ in ('0022', '0002', '0077'): os.umask(int(_, 8)) with open('moo.f-%s' % _, 'w') as f: f.writelines("moo\nfoo")  $ python moo.py; ll moo.f-* -rw-rw-r-- 1 1K 2013-07-24 07:46 moo.f-0002 -rw-r--r-- 1 1K 2013-07-24 07:46 moo.f-0022 -rw------- 1 1K 2013-07-24 07:46 moo.f-0077 

PHP hat eine "identische" umask- Funktion.

Mehr Infos hier: man 3p umask

I'll look into umask - thanks. Your work around has solved my current issue and allows me to get back to work on this module. I'll note that I had to run the .exe from cmd rather than cygwin in order for it to effect. Thanks much! Chris Rockwell vor 11 Jahren 0
Erwähnen Sie es nicht :) Wenn Sie herausfinden, was Cygwin dazu veranlasst, Windows-Berechtigungen zu missbrauchen, würde ich mich über einen Kommentar freuen. Ярослав Рахматуллин vor 11 Jahren 0