Alle Ordner für „andere“ nicht lesbar machen - aber ihren ursprünglichen Status bezüglich „Schreiben“ und „Ausführen“ beibehalten

Alle Ordner für „andere“ nicht lesbar machen - aber ihren ursprünglichen Status bezüglich „Schreiben“ und „Ausführen“ beibehalten

Kurz zusammengefasst: Wie kann ich die Berechtigungen aller Ordner auf dem Computer so ändern, dass die Ordner für "andere" nur die Leseberechtigung verlieren? Mit anderen Worten, sie behalten ihren Status in Bezug auf "Schreiben" und "Ausführen", verlieren aber die Möglichkeit zum "Lesen", falls sie diese überhaupt hatten?

Lange Version: Als ich zum ersten Mal einen Server konfigurierte (auf den Benutzer per SSH zugreifen können), wollte ich zunächst herausfinden, wie man neue Benutzer erstellt, die nur auf ihre eigenen home/usernameOrdner und Unterordner zugreifen dürfen.

Ich habe jedoch einige Referenzen gefunden (zum Beispieldiese Frage/Antwort) online und erklärte, dass dies vielleicht keine gute Idee wäre, da Benutzer natürlich weiterhin auf einige Systemordner wie usr/binoder zugreifen usr/libund in Ordner wie schreiben müssten tmp. Natürlich macht es Sinn. Was ich stattdessen versucht habe, ist, Benutzern die Möglichkeit zu geben,verwendenwas ist in den Systemordnern, aber nichtsehenderen Inhalt.

Genauer gesagt würde das bedeuten, alle Ordner im System so einzustellen, dass sie für „andere“ nicht lesbar sind, während ihr ursprünglicher Status für „andere“ in Bezug auf Schreib- und Ausführbarkeit erhalten bleibt. Beispielsweise 754würde ein Ordner mit der Berechtigung zu 750, ein Ordner mit 756würde zu 752, ein Ordner mit 755würde zu 751usw., während ein Ordner mit 753, 752, 751oder 750unverändert bliebe. Und so weiter und so fort.

Auf diese Weise könnte niemand außer dem Stammbenutzer den Inhalt anderer Ordner als seines eigenen home/usernameOrdners und seiner Unterordner sehen, er könnte jedoch weiterhin in allen Systemordnern, in denen dies ursprünglich zulässig war, normal ausführen und schreiben.

Wie könnte ich das für alle Ordner tun? Kommentare zu den möglichen Mängeln dieser Idee sind natürlich ebenfalls willkommen.

Antwort1

find /path/to/directory/ -type d -exec chmod o-r {} \;

sollte funktionieren. Führt es für jeden Ordner findaus chmod. chmodDann wird das Lesebit für die anderen entfernt.

Antwort2

Nur vom Kernel selbst geöffnete Binärobjekte können als ausführbar, aber nicht als lesbar gekennzeichnet werden. Alle Skripttypen (Bash, Python usw.) müssen vor der Ausführung zuerst gelesen werden. Siehe:

verwandte Informationen