Wie man Dateiberechtigungen einstellt, damit neue Dateien die gleichen Berechtigungen erben? [Duplikat]

35

Diese Frage hat hier bereits eine Antwort:

Ich habe einen Ordner, in dem neue Unterordner und Dateien automatisch von einem Skript erstellt werden.

Ich möchte die Benutzer- und Gruppenberechtigungen rekursiv für alle neuen Ordner und Dateien im übergeordneten Verzeichnis verwalten. Ich weiß, dass dies das Setzen eines Sticky Bits beinhaltet, aber ich kann anscheinend keinen Befehl finden, der genau zeigt, was ich brauche.

Das habe ich bisher gemacht:

sudo mkdir -p /path/to/parent
sudo chmod -R 660 myself:somegroup /path/to/parent

Danach möchte ich, dass die 660-Berechtigungen für alle Ordner und Dateien, in denen sie abgelegt sind, rekursiv festgelegt werden /path/to/parent.

Alles, was ich bisher versucht habe, ist jedoch gescheitert. Kann mir bitte jemand helfen?

Tatsächlich ist das Oktalflag 660 wahrscheinlich nicht einmal richtig. Die Berechtigungen, die ich möchte, sind:

  1. /path/to/parentUntergeordnete Verzeichnisse können von Benutzern mit Berechtigungen ausgeführt werden
  2. Dateien können vom Benutzer selbst und von Mitgliedern einer Gruppe gelesen / geschrieben werden
  3. Dateien und Ordner in /path/to/parentsind NICHT von der Welt lesbar

Ich arbeite mit Ubuntu 10.0.4 LTS.

Kann mir bitte jemand helfen?

oompahloompah
quelle

Antworten:

10

Grawity gibt eine ausgezeichnete Antwort, aber ich vermute, dass die bearbeitete Frage die Dinge ein wenig verändert hat.

Ich würde vorschlagen, das Verzeichnis zu belassen, das dem Apache-Benutzer / der Apache-Gruppe gehört. Dies wird wahrscheinlich entweder Apache oder httpd sein, abhängig von Ihrer Distribution.

z.B

chown -R apache:apache /path/to/parent

Sie können dann beispielsweise https://serverfault.com/questions/164078/is-adding-users-to-the-group-www-data-safe-on-debian ausführen oder sich selbst zur Apache-Gruppe hinzufügen, um dies sicherzustellen haben Gruppenzugriff auf das Verzeichnis. (So ​​etwas wie usermod -aG apache username)

Ich würde nicht chmod -Rdas gesamte Verzeichnis durchsuchen, da Sie keine HTML-Skripte oder JPGs oder zufällige andere ausführbare Dinge wollen. Sie sollten die Berechtigungen nach Bedarf ändern. (Auch wenn das Zurücksetzen auf 660 nicht unbedingt die schlechteste Idee ist.)

Folgendes möchten Sie vielleicht ausprobieren:

chmod o+w file

Das 'o' bedeutet 'other' & 'w' bedeutet 'write'. Sie können auch "u" für "Benutzer" und "g" für "Gruppe" sowie "r" und "x" eingeben, die hoffentlich selbsterklärend sind. Sie können Berechtigungen mit '-' anstelle von '+' entfernen.

Teuer
quelle
Ich denke, die einfachste Lösung ist, mich der Apache-Benutzergruppe hinzuzufügen. Danke, dass du das vorgeschlagen hast. Ich weiß nicht, warum ich selbst nicht daran gedacht habe!
Oompahloompah
1
Ist hier o+weine gute Wahl? Sollten sich die Änderungen nicht auf uund beschränken g? Ansonsten, wozu dient es, die Sicherheit für das Verzeichnis und die Unterverzeichnisse aufrechtzuerhalten?
Jww
61

Die gesuchten Berechtigungsbits sind 0770 und 0660.

  • rw-Berechtigungen → 110binär → 6oktal

Das Gruppeneigentum kann an neue Dateien und Ordner vererbt werden, die in Ihrem Ordner / path / to / parent erstellt wurden, indem Sie das setgid-Bit folgendermaßen setzen chmod g+s:

chmod g+s /path/to/parent

Jetzt wird allen neuen Dateien und Ordnern, die unter / path / to / parent erstellt wurden, dieselbe Gruppe zugewiesen, die unter / path / to / parent festgelegt wurde.


POSIX-Dateiberechtigungen werden nicht vererbt. Sie werden durch den Erstellungsprozess vorgegeben und mit dem aktuellen umask-Wert kombiniert.

Sie können jedoch POSIX-ACLs verwenden , um dies zu erreichen. Legen Sie die Standard-ACL für ein Verzeichnis fest:

setfacl -d -m u::rwX,g::rwX,o::- /path/to/parent

Dies gilt setfaclfür das Verzeichnis / path / to / parent, -mwodurch die -dStandard- ACLs geändert werden. Diese werden auf neu erstellte Elemente angewendet. (Großbuchstaben Xbedeuten, dass nur Verzeichnisse das +xBit empfangen .)

(Bei Bedarf können Sie den ACLs ein u:someuser:rwXoder g:someuser:rwX- vorzugsweise eine Gruppe - hinzufügen .)


Hinweis: Auf älteren Systemen, die ext3 / ext4 verwenden, mussten Sie das Dateisystem mit der aclOption bereitstellen , da sonst alle ACLs ignoriert und das Festlegen neuer nicht zugelassen wurden.

mount -o remount,acl /

Verwenden tune2fs -o acl <device>oder bearbeiten Sie diese Option, um sie dauerhaft festzulegen /etc/fstab.

Grawity
quelle
5
Vielen Dank, dass Sie sich die Zeit genommen haben, uns zu antworten. Leider bin ich in all dem ziemlich neu und was Sie geschrieben haben, ist für mich nicht von Griechisch zu unterscheiden (sorry für alle griechischen SO'ers!). Ich habe das meiste von dem, was du geschrieben hast, nicht verstanden. Ich habe einen Webprozess und möchte Apache die Möglichkeit geben, Ordner und Dateien in einem übergeordneten Ordner zu erstellen, in dem nur Apache (der Eigentümer) und ich (die Gruppe) die Möglichkeit haben, Dateien zu rw und in Verzeichnisse zu wechseln. Alle anderen sind verboten. das ist alles was ich versuche zu tun. Apache muss in der Lage sein, Unterordner zu erstellen und darin Dateien zu speichern.
oompahloompah
Das geht nicht mit unzip?
datasn.io
2

Ich denke, Sie sind über das Problem zu komplizieren. Wenn andere nicht auf das Verzeichnis der obersten Ebene zugreifen können, können andere Benutzer keine Dateien in der Baumstruktur erstellen. Ein Gruppenschreibzugriff ist nicht erforderlich, wenn nur Apache schreibt.

Diese Schritte sollten tun, was Sie wollen (ersetzen Sie das Verzeichnis in den Befehlen durch das Verzeichnis, das Sie verwenden möchten):

  • füge umask 027es dem Apache Defaults Skript hinzu /etc/default/apache. Dadurch wird verhindert, dass andere auf Dateien oder Verzeichnisse zugreifen, die von Apache erstellt wurden.
  • Führen Sie chown www-data:www-data directorydas Verzeichnis aus, in das Apache schreiben soll.
  • Führen Sie chmod 750 directorydas Verzeichnis aus, in das Apache schreiben soll.

Wenn Sie Apache erlauben, in ein Verzeichnis zu schreiben, können Sie alle Arten von Malware in den von Ihnen bereitgestellten Inhalt einfügen. Überwachen Sie den Inhalt dieses Verzeichnisbaums entsprechend.

BillThor
quelle