Ich habe normalerweise ein Verzeichnis, das alle Benutzer durchsuchen können sollen, in dem die Dateien jedoch nicht lesbar und nicht ausführbar sein sollen.
Ich sehe einige verwandte Fragen, die nicht genau meinen Wünschen entsprechen:
Diese Frageverwendet
umask
. Gilt nicht, da diese Dateien bereits erstellt wurden.Diese Frageverwendet ACLs. Ich möchte hier jedoch UNIX-Berechtigungen verwenden.
Normalerweise verwende ich einen find
Befehl, aber ich bin mir bewusst, dass er einige Schwächen hat. Ich werde ihn in Kürze als mögliche Antwort posten, zusammen mit den Gründen, warum ich denke, dass es einen besseren Weg geben könnte.
Antwort1
Normalerweise verwende ich Folgendes:
find . -type f -print0 | xargs -0 sudo chmod 440
find . -type d -print0 | xargs -0 sudo chmod 555
Dabei werden jedoch keine ausführbaren Dateien berücksichtigt. Ich dachte daran, für Dateien so etwas zu tun:
find . -type f -print0 | xargs -0 sudo chmod ug+r ug-w o-rwx
Aber es sind immer noch zwei Befehle und ich bin nicht sicher, ob das der beste Weg ist. Vielleicht hat jemand einen besseren Vorschlag.
Antwort2
Legen Sie einfach nicht die gleichen Berechtigungen für das Verzeichnis und die darin enthaltenen Dateien fest:
$ chmod g+rx directory/
$ chmod g= directory/*
Hier können die Gruppenmitglieder das Verzeichnis betreten und durchsuchen, sie können die darin enthaltenen Dateien jedoch nicht lesen.
Edit: Bezüglich deines neuen Titels würde ich vorschlagen:
$ chmod a+rx directory/
$ chmod u=rwX,g=rX,o= *
Antwort3
Für bereits erstellte Verzeichnisse und Dateien:
find /start_directory -type d -exec chmod 755 {} \;
find /start_directory -type f -exec chmod 660 {} \;
Wenn Ihre Benutzer neue Dateien und/oder Unterverzeichnisse erstellen können sollen, geben Sie bitte weitere Details an, da eine Lösung von den genauen Anforderungen abhängt.