Sperren von Raspbian, um nur eingeschränkte Funktionen zuzulassen

7

In einer öffentlichen Umgebung kann ein Computer häufig missbraucht werden, was zu Systemfehlern, Viren, Sicherheitsverletzungen usw. führt. In vielen Schulen sind die Computer so eingerichtet, dass nur grundlegende Funktionen verwendet werden können, was zu Fehlern führt, wenn jemand dies versucht etwas wie ein Spiel zu eröffnen.

Ich habe vor, einen Raspberry Pi in eine öffentliche Umgebung zu stellen, damit die Leute die "Raspberry Pi Experience" fühlen können, ohne selbst einen Raspberry Pi zu besitzen. Dies stellt ein großes Sicherheitsproblem dar, da der Raspberry Pi ohne Einschränkungen verwendet werden kann.

Gibt es eine Möglichkeit, die erweiterten Funktionen des Raspberry Pi zu sperren, damit ein Benutzer, der damit spielt, ihn nicht irreparabel durcheinander bringen kann?

JVarhol
quelle
Können Sie klarstellen, was Sie unter "Sperren" und "Erweiterte Funktionen" verstehen? Wie von Hello World angegeben, ist in einem Linux-System bereits vieles gut geschützt.
Fred
Ich denke, dass es in diesem Zusammenhang ziemlich offensichtlich ist: Alles im Rpi, was getan werden muss, sudoist nicht für Gäste gedacht. Dies ist eine gute Definition einer "erweiterten Funktion".
Hallo Welt

Antworten:

9

Linux ist standardmäßig eine Mehrbenutzerumgebung. Jeder Benutzer hat seinen eigenen Ordner in / home / TheUserName

Benutzer sind außerhalb dieses Ordners stark eingeschränkt. Sie haben nur Lesezugriff auf die meisten Dinge.

Standardmäßig wird der Raspberry Pi mit einem einzelnen Benutzer geliefert pi. Dieser Benutzer hat ein Home-Verzeichnis namens /home/pi/. Der Haken: Standardmäßig hat der piBenutzer die Möglichkeit, auf alles zuzugreifen sudo, wodurch Befehle als root ausgeführt werden.

Die Lösung

Machen Sie einen neuen Benutzer. Standardmäßig haben neue Benutzer keinen sudoZugriff.

sudo adduser guest

Wenn Sie sich jetzt anmelden (im Terminalmodus): guestGeben Sie einfach einen Benutzernamen ein, geben Sie Ihr Passwort ein und geben Sie ein, startxum in die GUI zu gelangen. Dieser Benutzer kann außerhalb nichts ändern /home/guest.

Möglicherweise möchten Sie auch das Standardkennwort "Pi" ändern. Führen Sie dies wie folgt aus pi:

sudo passwd pi

Jetzt kann Ihr Gastbenutzer nur noch sein eigenes Verzeichnis / home / guest zerstören, ohne den Rest Ihres Raspberry Pi zu beschädigen.

Extra

Möglicherweise möchten Sie auch das frische / home / guest sichern. Wenn ein Gast den Gastbenutzer durcheinander bringt, können Sie ihn einfach aus der Sicherung wiederherstellen.

Führen Sie dies aus als pi:

mkdir /home/pi/backup
sudo cp /home/guest /home/pi/backup/guest

So stellen Sie das Gastkonto wieder her:

sudo rm -f -r /home/guest #Remove the guest folder.
sudo cp /home/pi/backup/guest /home/ #Copy the backup to where the guest folder used to be.
sudo chown -R guest /home/guest #Give "guest" ownership of the new guest folder.

Wenn Sie möchten, dass das Gastkonto beim Start immer zurückgesetzt wird, stellen Sie sicher, dass dasselbe Skript beim Booten immer ausgeführt wird, indem Sie es eingeben /etc/rc.local.

Hallo Welt
quelle
Können Sie noch einen Schritt weiter gehen? Wie verhindern Sie, dass Gäste die anderen Home-Verzeichnisse lesen, schreiben oder ausführen können, während Sudoers dennoch die Möglichkeit haben, Gastverzeichnisse und -dateien zu lesen, zu schreiben und auszuführen?
Gabriel Staples
Erledigt. Ich habe es herausgefunden. Siehe meine Antwort hier als Ergänzung zu Ihrer Antwort: raspberrypi.stackexchange.com/a/58778/49091
Gabriel Staples
3

Hello World hat hier eine hervorragende Antwort . Ich möchte jedoch noch einen Schritt weiter gehen. Ich fragte in einem Kommentar unter seiner Antwort:

"Können Sie noch einen Schritt weiter gehen? Wie verhindern Sie, dass Benutzer" guest "die anderen Home-Verzeichnisse lesen, schreiben oder ausführen kann, während Sudoers weiterhin die Möglichkeit haben, Gastverzeichnisse und -dateien zu lesen, zu schreiben und auszuführen? ""

So geht's: Führen Sie die folgenden Befehle aus:

sudo adduser guest 
sudo chmod g+w /home/guest
sudo chmod o-rwx /home/* 
sudo usermod -aG guest pi

Kurze Beschreibung

  • sudo adduser guest = Füge einen neuen Benutzer namens "guest" hinzu
  • sudo chmod g+w /home/guest= Fügen Sie der Gruppe den Zugriff auf / home / guest hinzu, damit jeder in der Gruppe nun die vollen Berechtigungen für diesen Ordner hat. Um sicherzugehen, dass sie wirklich die vollen Berechtigungen erhalten, können Sie sudo chmod g+rwx /home/gueststattdessen auch verwenden .
  • sudo chmod o-rwx /home/* = Subtrahieren Sie den Zugriff eines anderen Benutzers auf alle Verzeichnisse im Ordner / home /, damit kein Basisbenutzer wie "guest" auf die Dateien eines anderen Benutzers zugreifen kann .
  • sudo usermod -aG guest pi = 'a'dd user "pi" an die "guest"' G'roup, so dass er nun die oben genannten Gruppenrechte (rwx) für den Ordner / home / guest erhält.

Erledigt! Benutzer "Gast" kann die Ordner anderer Benutzer überhaupt nicht mehr anzeigen, während Benutzer "pi" weiterhin vollen Zugriff auf alle "Dateien" und Ordner von "Gast" in "/ home / guest" haben kann.

Lange Beschreibung:

  1. Fügen Sie einen neuen Benutzer mit dem Namen "guest" hinzu : sudo adduser guest. Beachten Sie, dass dadurch auch ein Home-Ordner für den Gast mit dem Namen "/ home / guest" erstellt wird.
  2. Gehen wir jetzt zum Ordner "/ home", um uns einige Dinge anzusehen. cd /home. Zeigen Sie die Berechtigungen der Ordner an: ls -l Beispielausgabe:

    drwxr-xr-x 22 Gast Gast 4096 6. Dezember 23:16 Gast
    drwxr-xr-x 43 pi pi 4096 10. Dezember 10:39 pi

    • Diese Ausgabe enthält viele Informationen. Weitere Informationen finden Sie hier ( https://www.linode.com/docs/tools-reference/linux-users-and-groups ).
    • Die erste Zeile ("drwxr-xr-x") gibt an, dass es sich um ein Verzeichnis mit den Berechtigungen "r'ead /" w'rite / e'x'ecute (rwx) "für den Benutzer" r'ead "handelt und e'x'ecute (rx) -Berechtigungen für die Gruppe und 'r'ead- und e'x'ecute (rx) -Berechtigungen für andere Benutzer.
    • "Gast Gast" teilt uns mit, dass der Benutzer, zu dem dieser Ordner gehört, "Gast" ist und die Gruppe, zu der dieser Ordner gehört, auch "Gast" ist. (Benutzer wird zuerst aufgeführt, Gruppe wird an zweiter Stelle aufgeführt).
    • Der letzte "Gast" am Ende der ersten Zeile ist der Name des Ordners im Verzeichnis "/ home /", für den diese Berechtigungen gelten.
  3. Beachten Sie, dass die anderen Benutzer Empfangsberechtigungen sowohl für den Home-Ordner "guest" als auch für den Home-Ordner "pi" haben. Wir wollen das nicht, da dies bedeutet, dass "Gast" Dateien im Home-Ordner "pi" lesen und ausführen kann, "pi" Dateien im Home-Ordner "Gast" lesen und ausführen kann und alle anderen Benutzer, die Sie verwenden kann in Zukunft Dateien in beiden Home-Ordnern lesen und ausführen! Wir möchten jedoch, dass Mitglieder der "Gast" -Gruppe die vollen Berechtigungen für / home / guest haben, daher erteilen wir ihnen Schreibberechtigungen. sudo chmod g+w /home/guestFügt daher die Schreibberechtigung (w) zu den Gruppenberechtigungen für dieses Verzeichnis hinzu und sudo chmod o-rwx /home/*subtrahiert die rwx-Berechtigungen von anderen Benutzern für alle Verzeichnisse im Ordner "/ home". einschließlich "/ home / pi" und "home / guest". ls -lzeigt jetzt:

    drwxrwx --- 22 Gast Gast 4096 6. Dezember 23:16 Gast
    drwxr-x --- 43 pi pi 4096 10. Dezember 10:39 pi

  4. Jetzt kann Benutzer "Gast" die / home / pi-Dateien NICHT mehr anzeigen, da sie Teil der / home / pi "Andere" Benutzer sind und "Andere" Benutzer keine Berechtigungen mehr dafür haben! Benutzer "pi" kann jedoch auch die Dateien / home / guest NICHT mehr anzeigen, da sie Teil der Benutzer / other / guest "Other" sind und "Other" -Benutzer auch keine Berechtigungen mehr für dieses Verzeichnis haben. Wir werden das als nächstes beheben:
  5. Nachdem die Mitglieder der "Gast" -Gruppe über die vollständigen Berechtigungen (rwx) für das Verzeichnis / home / guest verfügen, müssen wir der Gruppe "guest" den Benutzer "pi" hinzufügen, damit "pi" auf das Verzeichnis zugreifen und es verwenden kann / home / guest Verzeichnis vollständig. Das sudo usermod -aG guest pimacht es. Um zu überprüfen, ob es funktioniert hat, führen groups piSie es aus und Sie sehen einen Ausdruck aller Gruppen, zu denen der Benutzer "pi" gehört. Ich sehe es:

    pi: pi adm dialout cdrom sudo audio video plugdev spiele benutzer geben netdev spi i2c gpio gast ein

    • Beachten Sie die Gruppenliste "Gast" ganz am Ende. Das bedeutet, dass Benutzer "pi" jetzt Mitglied der Gruppe "Gast" ist.
    • Beachten Sie auch, dass beim Ausführen groups guestangezeigt wird, dass der Benutzer "Gast" nur Mitglied der Gruppe "Gast" ist. Das ist gut, denn es bedeutet, dass er ein einfacher Benutzer ist. Wenn er ein Mitglied der "pi" -Gruppe wäre, hätte er jetzt Empfangsrechte über / home / pi, die wir NICHT wollen, und wenn er ein Mitglied der "sudo" -Gruppe wäre, wäre er ein Superuser (Administrator) , wie Benutzer "pi"), der in der Lage ist, alle diese Berechtigungen zu ändern und zu tun, was er wollte! Das wäre auch schlecht.
  6. Schlussbemerkungen:

    • Um sich selbst zu beweisen, dass der Benutzer "guest" nicht auf / home / pi zugreifen kann, können Sie über den Befehl 's'witch' u'ser zum Gastbenutzer wechseln : su guest. Es wird nach dem Gastpasswort gefragt. Nach der Eingabe wird cd /home/piFolgendes angezeigt:

      pi @ raspberrypi3: / home $ su guest
      Passwort:
      guest @ raspberrypi3: / home $ cd / home / pi
      bash: cd: / home / pi: Berechtigung verweigert
      guest @ raspberrypi3: / home $

    • Wenn Sie versuchen, einen sudoBefehl als "Gast" -Benutzer auszuführen , wird folgende Fehlermeldung angezeigt:

      Gast ist nicht in der Sudoers-Datei. Dieser Vorfall wird gemeldet.

    • Um den Bericht über diese Art von Sicherheitsvorfällen anzuzeigen, wechseln Sie zum Benutzer "pi" ( su pi) und führen Sie ihn aus sudo cat /var/spool/mail/mail( Quelle ).

Erledigt!

Prost,
Gabriel Staples
www.ElectricRCAircraftGuy.com

Hintergrund Referenzen:

Gabriel Staples
quelle
0

Diese Antwort bezieht sich auf die Problemumgehung und wird nur faulen oder sehr beschäftigten Administratoren empfohlen

Für einen professionelleren / besseren Ansatz siehe eine andere Antwort (en)

Ich hatte ein ähnliches Problem mit PC-Computern, die Gästen in meinem Onkel Motel zur Verfügung standen.

In Windows gibt es den Benutzer "Gast" und die Gruppe "Gäste". Dies ist ziemlich gut entwickelt, um die Benutzerrechte auf ein Minimum zu beschränken. Wir hatten jedoch immer noch Probleme mit dem Chaos auf dem Desktop, Browserverläufen, Browserleisten und Addons, Leuten, die versehentlich ihre Passwörter im Browser speichern, Kindern, die dumme Witze mit dem als Hintergrundbild eingestellten Desktop-Screenshot machen Symbole ausgeschaltet usw.

Nach einigen "Computerreparaturen" im Zusammenhang mit diesen Problemen habe ich beschlossen, alles zuzulassen und die gesamte Festplatte nach jedem Neustart in den "sauberen Zustand" zu versetzen.

Nachdem ich das getan hatte - musste ich nie dorthin gehen und irgendetwas reparieren.

Die Gäste sind auch sehr glücklich, denn sie können alles tun - installieren Sie ihre Kameratreiber, Software vom USB-Stick usw. Wenn sie Fehler machen - ein Neustart, der 5 Minuten dauert, behebt alles.

Ich denke, diese Methode könnte auch für Sie funktionieren.

Kamil
quelle
0

Dies schützt den öffentlichen Computer nicht vor einem Absturz, aber Sie können ihn schnell wieder einrichten, wenn Sie über einige Kopien der Boot-SD verfügen. Auf diese Weise kann niemand in Ihr Betriebssystem eindringen.

So klonen Sie Ihr aktuelles Betriebssystem:

Sie benötigen einen SD-Kartenleser und nichts anderes in den USB. Legen Sie eine Micro-SD in den Kartenleser (oder SD-Kartenadapter) ein.

WICHTIG : Es muss dieselbe Größe haben wie die Boot-SD und dieselbe Marke, die gleichzeitig gekauft wurde . Da alle Superblöcke überschrieben werden, werden alle Metadaten zu ihrer Hardware überschrieben! Wenn sich die Hardware unterscheidet, geht die SD verloren.

sudo fdisk -l
umount /dev/sda1
mount

Stellen Sie sicher, dass alle Partitionen als sda1, sda2, ... angezeigt werden. Wiederholen Sie 'umount' für jedes / dev / sd * #

Sehen Sie sich die Ausgabe von 'fdisk' an und stellen Sie sicher, ob = FROM und of = TO

sudo dd if=/dev/mmcblk0 of=/dev/sda iflag=nofollow oflag=noatime
sync; sync #to be sure it has flushed all data to disk

Das ist es!

Um den Fortschritt zu sehen, senden Sie ein Signal über ein anderes Terminal:

pid=$(pgrep -x dd)
sudo kill -USR1 $pid

Und wenn es so bleibt wie beim ersten Mal (schlechte SD):

sudo kill -9 $pid
Dan Froberg
quelle
Ich habe eine 0,5-TB-SD-Karte gekauft, sie aber durch zu viele Experimente verloren. Ich wünschte, ich hätte diese Methode verwendet, um den Master auf eine Festplatte zu setzen.
Dan Froberg