GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Warum wird empfohlen, für einige Anwendungen eine Gruppe und einen Benutzer zu erstellen?

Wenn Sie ein Programm aus dem Quellcode installieren, wird meistens empfohlen, einen neuen Benutzer und eine neue Gruppe zu erstellen und /usr/local/<myapp> anzugeben die kürzlich erstellten Benutzer- und Gruppeneigentumsrechte.

  • Warum wird eine solche Vorgehensweise als bewährte Vorgehensweise angesehen?

  • Was verbessert es?

Beispiel:mysql-Benutzer/mysql-Gruppe für den MySQL-Datenbankserver.

Akzeptierte Antwort:

Die Praxis besteht darin, nicht einen Benutzer und eine Gruppe pro Anwendung, sondern pro Dienst zu erstellen. Das heißt, Programme, die von einem lokalen Benutzer ausgeführt werden, müssen nicht als anderer Benutzer als root installiert werden. Es sind Daemons, Programme, die im Hintergrund laufen und Anfragen ausführen, die über das Netzwerk oder andere Kommunikationsmittel kommen, die als dedizierter Benutzer ausgeführt werden sollten.

Der Daemon wird als dedizierter Benutzer ausgeführt, sodass der Schaden, den er anrichten kann, begrenzt ist, wenn er sich falsch verhält (aufgrund eines Fehlers, der wahrscheinlich von einem Angreifer ausgelöst wurde):Nur die Datendateien des Daemons sind betroffen (es sei denn, der Angreifer hat es geschafft, eine lokale Wurzellücke zu finden , was passieren kann). Zum Beispiel der Datenbank-Daemon mysqld läuft als dedizierter Benutzer und Gruppe mysql:mysql und die Datendateien der Datenbank (/var/lib/mysql/* ) gehören zu mysql:mysql .

Beachten Sie, dass die ausführbare Daemon-Datei und andere statische Daten und Konfigurationsdateien, die verwendet werden, aber nicht vom Daemon geändert werden sollen, nicht dem dedizierten Benutzer gehören dürfen; sie sollten root:root gehören , wie die meisten Programm- und Konfigurationsdateien. Der mysqld Der Prozess hat nichts damit zu tun, /usr/sbin/mysqld zu überschreiben oder /etc/mysql/my.cnf , also dürfen diese Dateien nicht zu mysql gehören user oder von mysql beschreibbar sein user oder mysql Gruppe. Wenn einige Dateien nur für den Daemon und den Administrator lesbar sein müssen, sollten sie dem Benutzer root und der dedizierten Gruppe gehören und den Modus 0640 haben (rw-r----- ).

Eine spezielle Kategorie von ausführbaren Dateien, die nicht root:root gehören können sind Programme, die von einem Benutzer aufgerufen werden, aber mit zusätzlichen Berechtigungen ausgeführt werden müssen. Diese ausführbaren Dateien müssen setuid root sein, wenn sie (zumindest teilweise) als root ausgeführt werden müssen; dann muss die ausführbare Datei den Modus 4755 haben (rwsr-xr-x ). Wenn das Programm zusätzliche Privilegien benötigt, aber nicht als Root, dann sollte das Programm setgid gemacht werden, so dass die zusätzlichen Privilegien durch eine Gruppe und nicht durch einen Benutzer kommen. Die ausführbare Datei hat dann den Modus 2755 (rwxr-sr-x ). Dafür gibt es zwei Gründe:

  • Die ausführbare Datei sollte sich nicht selbst modifizieren dürfen, sodass ein Benutzer, wenn er eine Sicherheitslücke ausnutzt, möglicherweise die vom Programm verwendeten Datendateien ändern, aber kein Trojanisches Pferd in die ausführbare Datei einschleusen kann, um andere Benutzer anzugreifen Ausführen des Programms.
  • Die Datendatei der ausführbaren Datei gehört zur Gruppe. Ein setuid-Programm müsste zwischen dem echten Benutzer (dem Benutzer, der das Programm aufgerufen hat) wechseln, um mit dem Benutzer zu interagieren, und dem effektiven Benutzer (dem Benutzer, als der das Programm ausgeführt wird), um auf seine privaten Datendateien zuzugreifen (der Grund dafür zusätzliche Privilegien zu haben). Ein setgid-Programm kann außerdem benutzerspezifische Daten trennen, auf die nur die Gruppe zugreifen kann (z. B. indem Dateien, die dem Benutzer gehören, in einem Verzeichnis gespeichert werden, auf das nur root und die Gruppe des Programms zugreifen können).
Verwandt:Finden Sie die n häufigsten Wörter in einer Datei mit einer Liste von Stoppwörtern über die Befehlszeile?
Linux
  1. So erstellen und löschen Sie Benutzergruppen in Linux

  2. Erstellen Sie eine Datei als ein anderer Benutzer und eine andere Gruppe?

  3. ‚thesql‘ Benutzer- und Gruppenerstellung, Eigentumseinstellungen?

  4. Erstellen Sie einen neuen Benutzer und erteilen Sie Berechtigungen in MySQL

  5. Erstellen und bearbeiten Sie Benutzer in MySQL

Linux-Befehl id - Gibt Benutzer-ID- und Gruppen-ID-Informationen aus

Deaktivieren Sie die SSH-Passwortauthentifizierung für bestimmte Benutzer oder Gruppen

Erstellen Sie ein Home-Verzeichnis für einen bestehenden Benutzer in Linux

So erstellen Sie einen Sudo-Benutzer unter Ubuntu und Debian

Wie erstelle ich Benutzer und Gruppen in CentOS7?

Erstellen und konfigurieren Sie einen Benutzer in MSSQL