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/username
Ordner 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/bin
oder zugreifen usr/lib
und 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 754
würde ein Ordner mit der Berechtigung zu 750
, ein Ordner mit 756
würde zu 752
, ein Ordner mit 755
würde zu 751
usw., während ein Ordner mit 753
, 752
, 751
oder 750
unverä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/username
Ordners 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 find
aus chmod
. chmod
Dann 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: