Gibt es eine Möglichkeit, dem Benutzer die Ausführung von Befehlen nur für 2 Tage zu erlauben?

13

Wie erteile ich einem sudo-Befehl die Berechtigung für eine bestimmte Zeit? Gibt es eine Möglichkeit, Berechtigungen zum Ausführen eines bestimmten Befehls für 2 Tage nur in der sudoers-Datei zu erteilen?

Abbas Kapasi
quelle

Antworten:

18

Die sudoers-Datei unterstützt keine zeitbasierte Einschränkung, es gibt jedoch eine einfache Methode. Erstellen Sie eine Datei mit Ihren Änderungen in /etc/sudoers.d/(mit sudo visudo -f /etc/sudoers.d/yourfile):

Fügen Sie einer Datei (Beispiel:) file.shFolgendes hinzu

mv /etc/sudoers.d/yourfile /etc/sudoers.d/.yourfile

Und dies wird Ihre Änderungen deaktivieren:

 sudo at -f file.sh 2pm + 2 days

Beispiel:

at -f file.sh 2pm + 2 days
warning: commands will be executed using /bin/sh
job 4 at Thu Oct 15 14:00:00 2015

In diesem Fall wird die Datei 2 Tage nach der Ausgabe des Befehls um 14.00 Uhr verschoben. Das at Handbuch bietet einige Optionen (Sie können eine Zeit, Tage, Wochen, Monate, Jahre, Schlüsselwörter wie next oder Add / Subtract Periodes verwenden). Machen Sie einige Tests mit der Option, um sicherzustellen, dass Sie sie verstehen. (Beachten Sie Folgendes: Es ist wichtig, wenn Sie atam Tag vor oder nach 14 Uhr beginnen.)

atÜberlebt auch Neustarts, ist also ein gutes Werkzeug für diese Art von Dingen. Und Sie können den Zugriff umschalten ...

sudo mv /etc/sudoers.d/.yourfile /etc/sudoers.d/yourfile | at 2pm + 2 days
sudo mv /etc/sudoers.d/yourfile /etc/sudoers.d/.yourfile | at 2pm + 4 days
sudo mv /etc/sudoers.d/.yourfile /etc/sudoers.d/yourfile | at 2pm + 6 days
sudo mv /etc/sudoers.d/yourfile /etc/sudoers.d/.yourfile | at 2pm + 8 days

und diesen Benutzer verrückt machen (wtf jetzt kann ich das tun).

Die README in /etc/sudoers/:

# As of Debian version 1.7.2p1-1, the default /etc/sudoers file created on
# installation of the package now includes the directive:
# 
#   #includedir /etc/sudoers.d
# 
# This will cause sudo to read and parse any files in the /etc/sudoers.d 
# directory that do not end in '~' or contain a '.' character.
# 
# Note that there must be at least one file in the sudoers.d directory (this
# one will do), and all files in this directory should be mode 0440.
# 
# Note also, that because sudoers contents can vary widely, no attempt is 
# made to add this directive to existing sudoers files on upgrade.  Feel free
# to add the above directive to the end of your /etc/sudoers file to enable 
# this functionality for existing installations if you wish!
#
# Finally, please note that using the visudo command is the recommended way
# to update sudoers content, since it protects against many failure modes.
# See the man page for visudo for more information.

Wenn ich das richtig lese, wird keine Datei mit einem "." irgendwo im Namen. Also habe mvich als ersten Befehl das "." davor macht es auch unsichtbar. Bei richtiger Annahme können Sie ein "." irgendwo. Vorsicht mit dem "~", dieses wird von Editoren wie gEdit als "Backup" -Funktion verwendet.


atist nicht standardmäßig installiert. Installieren

sudo apt-get install at
Rinzwind
quelle
Vielen Dank, ich habe bereits darüber nachgedacht, aber die Situation ist, dass mehrere Benutzer die Datei für ihren eigenen Zweck verwenden, sodass es nicht möglich ist, die sudoers-Datei jedes Mal zu sichern und wiederherzustellen, wenn andere Benutzer die gleiche sudoers-Datei ebenfalls ändern Von anderen Benutzern vorgenommene Änderungen werden entfernt ...
Abbas Kapasi
2
Wie wäre es mit diesem Sir? Oh und könnte ich Ihren mehreren Benutzern empfehlen, auch selbst die sudoers.d mit ihrem eigenen Dateinamen zu verwenden. Scheint viel besser zu sein als Sudoer zu bearbeiten.
Rinzwind
@AbbasKapasi Erstellt eine neue Datei /etc/sudoers.d, die von Ihren anderen Benutzern nicht verwendet wird.
Muru
Ich denke, der Befehl, der in der gesamten Antwort verwendet wurde mv, sollte es nicht gewesen sein cp.
Cthulhu
3
wo siehst du cp pfeift unschuldig
Rinzwind