Wenn ich mit setfacl verwalte, welche Berechtigungen die untergeordneten Dateien / Verzeichnisse haben sollen, verfügen die Dateien aus irgendeinem Grund über alle Berechtigungen mit Ausnahme der Ausführungsberechtigung („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 eine Änderung auf verschiedene Arten führt nie zum erwarteten Ergebnis, es sei denn, mir fehlt etwas.

Wie kann dies behoben werden?

Antwort

Die Antwort von Hauke Laging versucht zu sagen:

Jedes Programm, das eine Datei oder ein Verzeichnis erstellt, gibt den Modus (die Berechtigungen) an, über den diese Datei verfügen soll. Dies ist im C-Programm (oder in der verwendeten Sprache) fast immer fest codiert ) und ist für den Benutzer kaum direkt zugänglich. Dann können der Wert umask und die Standard-ACL Berechtigungsbits deaktivieren, jedoch nicht Fügen Sie sie hinzu.

Ihr Problem ist, dass mkdir einen Modus von 777 (rwxrwxrwx) angibt, fast alle Programme, die Dateien erstellen, geben 666 an (rw-rw-rw-). Dies umfasst touch, die Shell (für die E / A-Umleitung; z. B. program > file), die Editoren (, vim, emacs usw.), dd, split und so weiter. Daher erhalten Sie unmittelbar nach der Erstellung (durch eines dieser Programme) keine Berechtigungen für rwxrwxrwx für eine einfache Datei, unabhängig davon, was Sie mit ACLs tun. Sie müssen die Datei erstellen und dann chmod.

Es gibt einige Ausnahmen von dieser Regel:

  • cp und verwandte Programme (z. B. cpio, tar usw.), die kopieren oder anderweitig neu erstellen -Erstellen Sie eine Datei, die (versucht) die neue Datei auf den gleichen Modus wie die Originaldatei zu setzen.
  • Compiler, die ausführbare Binärdateien erstellen, geben einen Modus von 777 an (zumindest, wenn der Die Kompilierung ist erfolgreich), sodass der Benutzer das gerade kompilierte Programm tatsächlich ausführen kann.

Kommentare

  • Ich gehe nur davon aus gilt für die traditionellen Unix-Berechtigungsmodi, die den user, group und other ACL-Einträge. Wenn Sie Standard-ACL-Einträge für benannte Benutzer oder Gruppen haben, werden diese ‚ wie angegeben vererbt, richtig?
  • Ist dies ein Zitat von irgendwoher? Wenn ja, fügen Sie bitte die Quelle hinzu und entfernen Sie, falls nicht, die Formatierung des Zitats.
  • @terdon: Es handelt sich nicht um ein Zitat. Es ist (wie beschrieben) eine Paraphrase der Antwort von Hauke Laging . Wie soll damit umgegangen werden? (1) Ich hätte die andere Antwort bearbeiten können, aber ich weiß, dass massive Umschreibungen der Beiträge anderer Leute verpönt sind. (Und beachten Sie, FWIW, dass mein Vertreter auf dieser Website im Oktober 2014 < 2000 war.) (2) Ich hätte es als Kommentar zu der anderen Antwort veröffentlichen können. Oder besser gesagt, ich hätte es als eine Reihe von drei Kommentaren veröffentlichen können, da es > 1200 Zeichen sind. Dies steht jedoch nicht im Einklang mit meinem Verständnis des Zwecks von Kommentaren. … (Fortsetzung)
  • Hey, es war keine Beschwerde ‚! Dies ist eine gute Antwort und ich habe sie nur gefunden, weil ich mich das Gleiche gefragt habe. Ich würde nur die Zitatformatierung entfernen, die ‚ alles ist. Das Posten einer Antwort zur Klärung einer vorhandenen ist in Ordnung, solange Sie das Original erwähnen (was Sie getan haben). Ja, das Hinzufügen eines Links wäre eine gute Idee, aber ‚ ist keine große Sache. Sie kopieren seine Antwort eindeutig nicht nur in Ihre.
  • Ich dachte nicht, dass es sich um eine Beschwerde handelt. Danke für das Lob. Aber sicherlich merkt man, dass jede Anfrage einer Raute die Luft einer eisernen Faust in einem Samthandschuh hat. 🙂 P.S. Ich habe meine Antwort gemäß Ihrem Vorschlag bearbeitet.

Antwort

Sie erwähnen nicht, was die “ erwartetes Ergebnis „ist. Ich gehe davon aus, dass es sich um Dateien handelt, für die die Bits x gesetzt sind.

Sie können dies nicht erzwingen, da die Standard-ACL (wie umask) nur Berechtigungen verhindert, aber legt sie nicht selbst fest. Ein neues Verzeichnis oder eine neue Datei erhält nicht mehr Berechtigungen (für Benutzer, Gruppen und andere) als die open() oder mkdir() -Aufruf, 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 eine Ausführungsberechtigung an.

Kommentare

  • Ihre Antwort ist aus englischer Sicht ziemlich chaotisch. Können Sie sie bitte korrigieren? Auch ‚ bin mir nicht sicher Was du meinst. Schau dir meinen Code an. Für Verzeichnisse funktioniert es immer.Für Dateien funktioniert es auch immer mit Ausnahme des Bits “ x „. Auch wenn ‚ nicht der richtige Weg ist, was dann zu tun ist, außer bei jedem Zugriff auf ein Verzeichnis eine Umask zu setzen?

Antwort

$ 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:

Wie kann dies behoben werden?

mit spezifischem Code. @Scott hat erklärt, wie das geht.

Sie müssen die Datei erstellen und dann chmod.

Der Code in meiner Antwort zeigt, wie es geht und hebt es hervor , indem es an die erste Stelle gesetzt wird.


Weitere Erläuterungen

Der Einfachheit halber füge ich einfach das touch, insbesondere touch file, wird zu touch file && chmod a+x file.

someuser@someuser-MS-7816:/opt/lampp/htdocs/project$ touch file && chmod a+x 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 -rwxrwxrwx 1 someuser webs 0 paź 31 13:35 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 Unterschiede aufzeigen, die bei setfacl auftreten können, und selbst überprüfen, ob er funktioniert .)

$ uname -a | head -n 1 CYGWIN_NT-10.0 my_machine 2.10.0(0.325/5/3) 2018-02-02 15:16 x86_64 Cygwin $ pwd /home/me $ mkdir user294034 $ setfacl -m u::rwx user294034/ $ setfacl -m d:u::rwx user294034/ $ setfacl -m g::rwX user294034/ setfacl: illegal acl entries $ setfacl -m g::rws user294034/ setfacl: illegal acl entries $ # I guess I don"t know how to get the `flags: -s-` on Cygwin $ setfacl -m g::rwx user294034/ $ setfacl -m d:g::rwx user294034/ $ setfacl -m o::rwx user294034/ $ setfacl -m d:o::rwx user294034/ $ cd user294034 $ getfacl . # file: . # owner: me # group: my_group user::rwx group::rwx other:rwx default:user::rwx default:group::rwx default:other:rwx $ # I admitted that I don"t know how to get `# flags: -s-` $ umask 0022 $ umask 0000 $ touch file $ mkdir dir $ # Here, we"ll see the same problem $ ls -l total 0 drwxrwxrwx+ 1 me my_group 0 Sep 18 20:31 dir -rw-rw-rw- 1 me my_group 0 Sep 18 20:31 file $ # Here, we"ll fix the problem $ rm file $ touch file && chmod a+x file $ ls -l total 0 drwxrwxrwx+ 1 me my_group 0 Sep 18 20:31 dir -rwxrwxrwx 1 me my_group 0 Sep 18 20:32 file 

Antwort

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.

$ cd ~ $ mkdir .config $ cat <<"EOF" >> .config/dacl user::rwx group::rwx other:r-x default:user::rwx default:group::rwx default:other:r-x EOF $ cat <<"EOF" >> .config/facl user::rw- group::rw- other:r-- default:user::rw- default:group::rw- default:other:r-- EOF $ cd / $ find $1 -type d -exec setfacl -f ~/.config/dacl {} \; $ find $1 -type f -exec setfacl -f ~/.config/facl {} \; $ getfacl . # file: . # owner: MyUser # group: Administrators user::rwx group::rwx other::r-x default:user::rwx default:group::rwx default:other::r-x 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.