Wenn ich setfacl verwende, um zu verwalten, welche Berechtigungen die untergeordneten Dateien / Verzeichnisse haben sollen, haben die Dateien aus irgendeinem Grund alle Berechtigungen außer der Ausführung ("x").
someuser@someuser-MS-7816:/opt/lampp/htdocs/project$ getfacl .
# file: .
# owner: someuser
# group: webs
# flags: -s-
user::rwx
group::rwx
other::rwx
default:user::rwx
default:group::rwx
default:other::rwx
someuser@someuser-MS-7816:/opt/lampp/htdocs/project$ touch file
someuser@someuser-MS-7816:/opt/lampp/htdocs/project$ mkdir dir
someuser@someuser-MS-7816:/opt/lampp/htdocs/project$ ls -l
total 4
drwxrwsrwx+ 2 someuser webs 4096 paź 31 13:35 dir
-rw-rw-rw- 1 someuser webs 0 paź 31 13:35 file
Ich dachte, es hat etwas mit umask zu tun, aber wenn ich es auf verschiedene Arten ändere, ergibt sich nie das erwartete Ergebnis, es sei denn, ich vermisse etwas.
Wie kann das behoben werden?
quelle
user
,group
undother
ACL - Einträge. Wenn Sie Standard-ACL-Einträge für benannte Benutzer oder Gruppen haben, werden diese wie angegeben vererbt, oder?Sie erwähnen nicht, was das "erwartete Ergebnis" ist. Ich nehme an, es sind die Dateien, bei denen die
x
Bits gesetzt sind.Sie können dies nicht erzwingen, da die Standard-ACL (wie umask) Berechtigungen nur verhindert, sie jedoch nicht selbst festlegt. Ein neues Verzeichnis oder eine neue Datei erhält nicht mehr Berechtigungen (für Benutzer, Gruppen und andere) als der Aufruf
open()
odermkdir()
, der die Anforderungen erstellt.Für Dateien wird normalerweise nur eine Lese- und Schreibberechtigung angefordert. Wenn ein Compiler jedoch eine Binärdatei erstellt, fordert er auch die Ausführungsberechtigung an.
quelle
$ touch file && chmod a+x file
Die Erklärungen in anderen Antworten sind hervorragend. Ich möchte etwas hinzufügen, das tatsächlich eine Antwort auf die Frage gibt,
mit spezifischem Code. @ Scott sagte, wie das geht,
Der Code in meiner Antwort zeigt, wie es geht, und hebt ihn hervor, indem er an erster Stelle steht.
Weitere Erläuterungen
Zu Beginn füge ich der Einfachheit halber einfach den
touch
Befehl hinzu, der vom OP gegebentouch file
wirdtouch file && chmod a+x file
.Hier richte ich dieselbe Situation auf meinem Computer (Cygwin) ein, um zu zeigen, dass sie funktioniert, und mache dann dasselbe auf einer virtuellen Ubuntu-Box, um die Unterschiede im Setup anzuzeigen. (Beachten Sie, dass sich der eigentliche Befehl zum Beheben von Problemen nicht ändert. Ich möchte lediglich einige mögliche Unterschiede
setfacl
aufzeigen und selbst überprüfen, ob er funktioniert.)quelle
Sie können versuchen, mit diesem einfachen Skript die ACL-Datensätze für jede Datei und jedes Verzeichnis zu ersetzen und die angegebenen Standardberechtigungen zu erteilen.
quelle