So ändern Sie Benutzer-Pi-Sudo-Berechtigungen; Wie füge ich andere Konten mit unterschiedlichen Berechtigungen hinzu?

13

Da ich meinen Pi gelegentlich über SSH verwende, habe ich erfahren, dass es gefährlich ist, SSH den Zugriff auf sudo-Befehle zu erlauben. Daher plane ich, diese Berechtigung in naher Zukunft zu deaktivieren. Wenn ich Pakete installiere, muss ich normalerweise neu starten. Derzeit ist dies nur über den Superuser möglich.

sudo reboot

Gibt es eine Möglichkeit, die Berechtigungen des pi-Benutzers zu bearbeiten, damit er Pakete neu starten (und installieren) kann?

Kann ich mehrere Konten mit unterschiedlichen Berechtigungen haben?

Vielen Dank

xxmbabanexx
quelle
War eine der gegebenen Antworten hilfreich? Ist jemand von ihnen die Antwort, die Sie gesucht haben? Bitte markieren Sie dies dann als beantwortet.
Anders
Ja. Wenn Sie immer noch interessiert sind, habe ich sie auf Juni 2017 aktualisiert. Diese Frage wurde vor 4 Jahren und 2 Monaten gestellt und hat mich dazu geführt, das Problem heute zu lösen. Überprüfen Sie die Antworten unten:
SDsolar

Antworten:

21

Um ein bisschen zu verdeutlichen: Es gibt keine "sudo-Befehle", es gibt nur Befehle, die root-Rechte benötigen, um korrekt zu funktionieren, und sudoder Befehl, um sie für einen Befehl abzurufen: sudoFührt einfach den angegebenen Befehl als root aus (lies "sudo" als Imperativ) satz "superuser, mach was!"). Die Regeln, welche Benutzer dies tun dürfen, sind in niedergeschrieben /etc/sudoers. Bei einer Standard-Raspbian-Installation hat der Standardbenutzer "pi" die folgenden Berechtigungen:

pi ALL=(ALL) NOPASSWD: ALL

Es bedeutet: "Der Benutzer 'pi' auf ALLEN Hosts darf zu ALLEN Benutzern wechseln und muss sein PASSWD nicht eingeben, wenn ALL (read: any) -Befehle verwendet werden." (Ich habe hier verrückte Grammatik verwendet, um die Reihenfolge der Zeilen beizubehalten. Ein Hinweis, warum es eine Möglichkeit gibt, Hosts zu unterscheiden: Auf diese Weise kann dieselbe sudoers-Datei auf mehrere Computer in einem Netzwerk verteilt werden, sodass der Netzwerkadministrator weniger Arbeit hat.) .

Es kann sein, dass Sie in der Lage sind, Befehle mit sudo auszuführen, ohne ein Administratorkennwort zu vergeben. Aus diesem Grund halten Sie es für gefährlich, sudo über SSH zu verwenden (ich habe noch kein allgemeines Problem damit gehört ... könnten Sie es auch Erklären Sie, welche Gefahr genau Sie meinen.

Sicher, Sie könnten mehrere Benutzer mit unterschiedlichen Berechtigungen haben. Ich befürchte jedoch, dass die Verwendung von sudo immer noch die beste Möglichkeit ist, diese Berechtigungen zu verwalten.

Also, ich hoffe, dieses kleine Rezept hier ist das, was Sie brauchen:

$ sudo adduser admin

Dadurch wird ein Benutzer "admin" erstellt, nach einem Kennwort gefragt, sein Ausgangsverzeichnis erstellt usw.

$ sudo adduser admin sudo
$ sudo adduser admin adm

Dadurch wird der Benutzer "admin" in die Benutzergruppen "sudo" und "adm" eingeteilt. Da Berechtigungen in Linux verwaltet werden, indem Benutzer zu Benutzergruppen hinzugefügt werden, erhält der Benutzer "admin" alle Berechtigungen, die er benötigt. In einer Zeile /etc/sudoerskann jeder Benutzer in der Benutzergruppe "sudo" einen beliebigen Befehl als root ausführen. und dieses Privileg ist es, was wir für einen Admin-Benutzer benötigen (wenn er zu "adm" hinzugefügt wird, kann er einige Protokolldateien einlesen, /var/logohne sudoeinige andere Dinge zu verwenden). Sie müssen noch verwenden, sudowenn Sie als Administrator angemeldet sind. Jetzt fragt sudo immer wieder nach dem Administratorkennwort, wenn Sie sudo etwa fünf Minuten lang nicht verwendet haben.

Melden Sie sich nun als Benutzer "admin" ab und wieder an. Prüfe ob

$ sudo apt-get update
$ sudo apt-get upgrade

funktioniert. In diesem Fall können Sie einige Berechtigungen des "pi" -Benutzers widerrufen, da Sie jetzt sicher sind, dass Ihr Administrator über die richtigen Berechtigungen verfügt:

$ sudo deluser pi sudo
$ sudo deluser pi adm

Dies wirft den Benutzer "pi" aus der Benutzergruppe "sudo".

$ sudo visudo

Dies startet einen Editor, mit dem Sie bearbeiten können /etc/sudoers. Setzen Sie ein Hash-Tag ( #) vor die Zeile, die mit "pi" beginnt, und kommentieren Sie es aus (oder entfernen Sie es einfach). Speichern Sie dann den Editor und beenden Sie ihn. Visudo lädt die Berechtigungsregeln dann sofort neu. Jetzt darf der Benutzer "pi" sudo nicht mehr benutzen.

Danach können Sie sich erneut als Benutzer "pi" anmelden. Wenn Sie jemals für einige Befehle zum Administrator wechseln möchten, verwenden Sie su("switch user"):

$ su - admin

Wenn Sie weitere Benutzer hinzufügen möchten: Verwenden Sie sudo adduser <name>wie oben beschrieben, und überprüfen Sie die Liste der Benutzergruppen, die der Benutzer "pi" hat:

$ groups pi
pi : pi dialout cdrom audio video plugdev games users netdev input

Verwenden sudo adduser <username> <groupname>Sie diese Option, um Ihren neuen Benutzer mehreren dieser Benutzergruppen hinzuzufügen, sodass er Audio, beschleunigtes Video, steckbare Geräte usw. verwenden kann. Wenn Sie sich nicht sicher sind, fügen Sie ihn allen diesen Benutzergruppen hinzu (aber nicht "sudo"!).

Orithena
quelle
2
visudoist ein Befehl, der Ihren Standardeditor verwendet, um die sudoers-Datei zu bearbeiten. Das Bearbeiten dieser Datei ohne sie kann schmerzhaft sein und wird nicht empfohlen. Sie können Ihren bevorzugten Editor ändern, indem Sie "sudo update-alternatives --config editor
earthmeLon"
Oder Sie können dies VISUAL=vim visudonur für diese Zeit versuchen . Aber ein gutes Beispiel für das Ändern von Standardprogrammen wie Editor.
Anders am
6

Ja, Sie können festlegen sudo, dass der Benutzer nur bestimmte Befehle mit zusätzlichen Berechtigungen ausführen darf . Sie können dies in Ihrer /etc/sudoersDatei ändern , aber es ist ratsam, dies nicht direkt zu tun, sondern den sudo visudoBefehl dafür zu verwenden.

In der Standard-Systeminstallation sollten Sie folgende Zeile finden:

pi ALL=(ALL) NOPASSWD: ALL

Es wird angegeben sudo, dass der Benutzer pialle Cammands als rootBenutzer ausführen darf, ohne auch nur ein Kennwort anzugeben . Sie können die letzte Änderung vornehmen ALLund eine durch Kommas getrennte Liste von Befehlen angeben, die (mit ihrem vollständigen Pfad) ausgeführt werden dürfen. In Ihrem Fall sollten Sie diese Zeile ändern in:

pi ALL=(ALL) NOPASSWD: /usr/bin/apt-get, /sbin/shutdown

Beachten Sie, dass es noch eine weitere Zeile gibt, sudoersdie sich auf den piBenutzer auswirkt :

%sudo   ALL=(ALL:ALL) ALL

In dieser Zeile können alle Benutzer in der Gruppe sudo(das %Zeichen vor dem Namen bedeutet, dass es sich um einen Gruppennamen anstelle des Benutzernamens handelt) ALLE Kennwörter ausführen, sofern sie ihr EIGENES Kennwort kennen . Wenn Sie diese Zeile verlassen, kann der Benutzer pialle anderen Befehle ausführen, wird jedoch nach seinem Kennwort gefragt.

Wenn Sie dies verhindern möchten, können Sie entweder diese Zeile entfernen oder den Benutzer piaus der sudoGruppe entfernen .

Nachdem Sie Änderungen an der /etc/sudoersDatei vorgenommen haben, können Sie durch Aufrufen des sudo -l -U piBefehls überprüfen, ob sie wirklich das tut, was Sie wollen .

Natürlich können Sie verschiedene Konten erstellen und konfigurieren sudoers, um ihnen Zugriff auf verschiedene Befehle zu gewähren.

Krzysztof Adamski
quelle
1

Mai 2018, Das Konzept ist noch genau, aber die Vorgehensweise hat sich mit späteren Versionen geändert:

Erstens sollten die Dateien direkt in vi oder nano oder leafpad oder emacs bearbeitet werden - welcher Texteditor auch immer Ihr Favorit ist.

Der Benutzername pi wird in dieser Datei nicht erwähnt:

/etc/sudoers

und die letzte Zeile der Datei ist diese:

#includedir /etc/sudoers.d

Dies ist ein Verzeichnis, das eine Datei mit dem Namen enthält

010_pi-nopasswd

das enthält diese einzelne Zeile

pi ALL=(ALL) NOPASSWD: ALL

Das hat zur Folge, dass kein sudo-Befehl abgefragt wird, solange ich als Benutzer pi angemeldet bin. (Beachten Sie, dass die Syntax genau so sein muss)

Das ist toll.

Die Gruppenleitung %sudo ALL=(ALL:ALL) ALList noch da als

Um den ersten Teil der Frage zu beantworten:

Als ich die Datei /etc/sudoers/sudoers.d/010_pi-nopasswd um eine Verzeichnisebene nach oben verschob, damit das Include fehlschlug, und dann 15 Minuten wartete, forderte mein Raspbian-System bei Verwendung von sudo nur mein eigenes Passwort an wie mein Ubuntu 14.04 LTS-System früher.

Als ich es dann wieder dorthin brachte, wo es hingehört, wurde ich auch nach 10 Minuten nicht mehr dazu aufgefordert.

Kein Neustart erforderlich. Voila, keine Aufforderung zur Passworteingabe bei Verwendung von sudo

Mein Lubuntu 14.04 LTS-Testsystem hat das gleiche Setup, außer dass die Datei 010_pi-nopasswd nicht vorhanden war. lubuntu wurde mit pi als root-benutzer installiert. Es veranlasste mich jedes Mal, wenn ich sudo verwendete, mich danach 10 Minuten lang nicht dazu aufzufordern.

Ich habe die gleiche Datei zum Ubuntu-System hinzugefügt, genau wie Raspbian eingerichtet ist

Voila, es fordert mich nicht mehr auf, mein eigenes Passwort einzugeben, wenn ich auch nach 15 Minuten noch als pi angemeldet bin.

Wiederum erfolgt die Änderung sofort, ohne dass ein Neustart erforderlich ist.

Dies ist die Antwort vom Mai 2018 zum Deaktivieren und Aktivieren der Aufforderung zur Verwendung des Befehls sudo, wenn Sie als Root-Benutzer pi angemeldet sind. Andere Benutzer und Gruppen können auf dieselbe Weise konfiguriert werden.

--UPDATE für Ubuntu 16.04 LTS Dieses System ist auch sehr ähnlich. Der größte Unterschied besteht jedoch darin, dass 16.04 über wesentlich engere Dateiberechtigungen verfügt, sodass die Arbeit im suModus ausgeführt werden muss. Wenn Sie Ihr root-Passwort vergessen haben, können Sie es von Ihrer normalen Eingabeaufforderung mit zurücksetzen. sudo passwd rootDann sufunktioniert der Befehl und Sie können von dort aus fortfahren.

SDsolar
quelle
Ich habe dies gerade über Google gefunden. Wenn ich dem folge, muss der Benutzer immer noch in der Gruppe sudoers sein, aber /etc/sudo.d steuert, wie oft der bestimmte Benutzer nach einem Kennwort gefragt wird.
Lonstar
1
Ja. Du hast es. Ein Mitglied von zu sein, sudoersgeschieht normalerweise zu dem Zeitpunkt, an dem der Benutzer erstellt wird. Anwendungsbeispiel: Sie werden feststellen, dass die allgemeine Befehlszeichenfolge sudo apt-get update && sudo apt-get upgradesudo zweimal aufruft. Es ist jedoch ärgerlich, dass das Programm möglicherweise vor dem Upgrade angehalten wird und erneut nach dem Kennwort fragt. Also habe ich mir vorgenommen, niemals meinen einen Login-Namen (pi) einzugeben und auch dann zu verwenden, sudo apt-get update -y && sudo apt-get upgrade -ydamit es ebenfalls nicht aufhört, nach dem OK zu fragen, um beträchtliche Änderungen vorzunehmen. Um es mehr Unix-like zu machen. Tu einfach, was ich verlange, und selbst wenn ich weggehe, möchte ich, dass es fertig ist.
SDsolar
0

Es ist sicherer, sudo den Zugriff über SSH zu erlauben, als jedem Benutzer die Installation von Paketen zu erlauben. Wenn du dir wirklich Sorgen machst, ändere die Zeile /etc/sudoersvon:

pi ALL=(ALL) NOPASSWD: ALL

zu

pi ALL=(ALL) PASSWD: ALL

Das heißt, Sie werden aufgefordert, ein Kennwort einzugeben, wenn Sie sudo zum ersten Mal in einer Sitzung verwenden, und nach einigen Minuten erneut. Sie können nicht /etc/sudoersdirekt bearbeiten . Verwenden Sie sudo visudodazu.

Sieht so aus, als wäre Krzysztof gleich mit einer Antwort reingekommen. Müssen Sie wirklich jedes Mal neu starten, wenn Sie neue Pakete installieren? Sofern Sie keinen neuen Kernel oder eine neue Firmware installieren, ist ansonsten kein Neustart erforderlich. Dies ist ein Qualitäts-Betriebssystem, das wir hier haben ...

scruss
quelle
3
timestampTimeout zu erwähnen ist eine gute Idee. Standardmäßig sind es 15 Minuten, übrigens. Beachten Sie, dass dies PASSWDdie Standardeinstellung ist (falls dies NOPASSWDnicht zuvor in dieser Befehlsliste angegeben wurde). Beachten Sie auch, dass /etc/sudoersSie ohne Probleme direkt bearbeiten können, wenn Sie wissen, was Sie tun. Durch visudodie Verwendung von werden Änderungen an temporären Dateien vorgenommen, die verhindern, dass die Datei während der Änderung automatisch geschrieben wird (was zu Syntaxfehlern und / oder Sicherheitsproblemen führen kann). Diese Datei wird vor dem Schreiben der Datei gegen mehrere gleichzeitige Änderungen gesperrt und es werden einige Syntaxprüfungen durchgeführt.
Krzysztof Adamski
Ich denke, das OP aktualisiert selten, dass er immer einen neuen Kernel bekommt ... oder ein Kollege sagte ihm, er solle jedes Mal neu starten, weil er nicht erklären wollte, wie das OP ein Kernelpaket in der Aktualisierungsliste finden könnte.
Orithena
TNX für diesen Kommentar, @Krzysztof. Ich habe die Korrektur in meiner Antwort vorgenommen. Und Sie haben Recht mit der Bearbeitung. Tatsächlich habe ich auf meinem 16.04-Rechner die pi-Zeile direkt in die sudoers-Datei eingefügt, da sudoers.d nur eine Readme-Datei enthielt. Ich habe es nur deswegen gelassen, aber zumindest die Pi-Berechtigungen werden verarbeitet. (Mein bevorzugter Editor ist übrigens VI / VIM, aber manchmal wird Leafpad oder Idle verwendet. Ich habe Emacs nicht wieder gemeistert - 15 Jahre sind eine lange Zeit - und ich kann in VIM viel schneller arbeiten als in Emacs bei weitem.) Nochmals vielen Dank.
SDsolar
0

Nur eine Alternative zu dem, was scruss sagte, löschen Sie die /etc/sudoers.d/010_pi-nopasswdDatei, indem Sie ausführen sudo rm /etc/sudoers.d/010_pi-nopasswd. Viel einfacher und sicherer als das Bearbeiten der Haupt-Sudoers-Datei, was Sudo zum Erliegen bringen kann.


quelle