Wer ist "andere", wenn wir allen Diensten auf unserem Server einen Benutzer geben, existieren "andere" nicht richtig? Wenn wir zum Beispiel Apache einem Benutzer /var/www
zuweisen apache
und chown auf setzen und eingeben chmod 700
, sollte es funktionieren, oder?
So funktionieren die Berechtigungen, die sehr kurz erklärt werden:
Die erste Ziffer ist für den tatsächlichen Eigentümer einer Datei (überprüfen Sie, wem eine Datei gehört, ls -l
und ändern Sie sie mit chown
).
Die zweite Ziffer steht für die Gruppe der Datei (obwohl der Eigentümer einer Datei nicht unbedingt in derselben Gruppe sein muss, der die Datei gehört).
Die dritte Ziffer ist jemand anderes, dh nicht der Dateieigentümer und jeder, der nicht zur Gruppe gehört.
Wenn Sie also chmod
eine Datei bis 700 haben und diese gehört apache
, kann selbst Ihr "normaler" Benutzer sie nicht lesen, schreiben oder ausführen. Dies ist sehr restriktiv und wird nur in seltenen Fällen benötigt. Wenn Sie beispielsweise Ihren privaten SSH-Schlüssel sichern möchten, erhalten Sie 600
Berechtigungen. Für Apache kann dies sogar zu anderen Problemen führen, abgesehen von der Tatsache, dass Sie mit Ihrem normalen Benutzerkonto keine Dateien /var/www
mehr bearbeiten können .
Im Allgemeinen sollten Sie also keine Leseberechtigungen ( x00
) für andere entfernen müssen .
Sie könnten apache
das /var/www
Verzeichnis besitzen lassen, aber mit 644
(schreibgeschützt für andere) vielleicht. Ein anderer Ansatz, den ich häufig verwende, besteht darin, Ihren eigenen Benutzer und den Apache-Benutzer einer neuen www-users
Gruppe hinzuzufügen und dann Dateien in /var/www
zu ändern 775
. Auf diese Weise können sowohl Sie als auch Apache in die Dateien schreiben. Weitere Informationen finden Sie hier: Gruppenberechtigungen für Apache
Was ist der Unterschied zwischen "Ausführen" und "Lesen"?
Ausführbare Dateien können direkt von einem Benutzer ausgeführt werden - direkt aus der Shell. Um dies zu demonstrieren, schreiben wir eine kurze Datei und nennen sie "Test". Fügen Sie den folgenden Inhalt hinzu:
echo "I am executable"
Speicher die Datei. Versuchen Sie nun in Ihrer Shell einzutreten ./test
. Sie erhalten den Fehler " -bash: ./test: Berechtigung verweigert ". Dies liegt daran, dass neu erstellte Dateien standardmäßig keine Ausführungsberechtigungen enthalten. Wenn Sie die Ausführungsberechtigung hinzufügen, funktioniert dies.
$ chmod +x test
$ ./test
I am executable
Dies war nur ein Testskript, aber normalerweise benötigen alle Binärdateien (wie kompilierte Programme) auch die Berechtigung zum Ausführen, damit Sie tatsächlich etwas ausführen und damit tun und nicht nur lesen können.
Dies sind zum Beispiel die Systemprogramme, die meistens in zu finden sind /bin
. Führen Sie diese aus ls -l /bin
, um ihre Berechtigungen zu überprüfen. Wie Sie sehen, gehören sie root
ihnen und Sie können sie nicht ändern, aber Sie können sie jederzeit ausführen.
Dies ist also auch eine Sicherheitsfunktion, da Sie die Ausführung bestimmter Skripte und Binärdateien für einige Benutzer einschränken können.
Weitere Informationen zu Unix-Berechtigungen finden Sie im Wikipedia-Artikel . Die grundlegenden Berechtigungen, die Sie als "Lesen, Schreiben, Ausführen" kennen, gibt es schon seit langer Zeit, sie sind jedoch nur ein Teil der sogenannten Zugriffssteuerungslisten, die viel mehr Funktionen bieten.
Was sind die Standarddateiberechtigungen für das gesamte System nach einer Neuinstallation (z. B. in Ubuntu)?
Sie variieren je nach Verzeichnis und Eigentümer. Einige Dateien und Verzeichnisse sind vom System reserviert und gehören root
. In den meisten Fällen können Sie sie dennoch mit Ihrem normalen Benutzerkonto lesen.
Andere Verzeichnisse wie Ihr Home-Ordner gehören offensichtlich Ihrem Benutzer. Es kann sinnvoll sein, anderen Benutzern auf einem Computer Leseberechtigungen zu verweigern, wenn diese von mehreren Personen gemeinsam genutzt werden. Schließlich möchten Sie nicht, dass Ihre privaten Inhalte offengelegt werden.
Schließlich sind einige Dateien standardmäßig ausführbar (z. B. in /bin
), andere jedoch nicht (z. B. Konfigurationsdateien in /etc
).
Der Dateisystem-Hierarchiestandard gibt die beabsichtigte Verwendung für Verzeichnisse in Linux-Systemen an. Sie können fast "erraten", wie die Berechtigungen basierend auf dem, was Sie mit einem Verzeichnis tun möchten, basieren sollten.