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

Ssh – Hinzufügen eines Benutzers, der Skripte nur remote ausführen kann?

Ich möchte einen Benutzer erstellen, der nur eines tun kann:Per ssh ein Skript angeben (und Befehlszeilenargumente für das Skript), das sich in einem bestimmten Ordner befindet
(für die Zwecke dieser Frage nennen wir es /local/remote_only_scripts/foo ) und lassen Sie dieses Skript ausführen und seine Ausgabe zurückgeben.

Zur Verdeutlichung einige Beispiele für Dinge, die der Benutzer nicht tun soll:

  • Melden Sie sich lokal beim Konto an.
    Die Anmeldeanwendung ist /bin/login . Es ist kein Skript in /local/remote_only_scripts/foo Ordner, sollte also nicht vom Benutzer aufgerufen werden.
  • Melden Sie sich aus der Ferne beim Konto an. Wieder Login ( heißt das per ssh? ) ist kein Skript im entsprechenden Ordner.
  • Listen Sie den Inhalt des Verzeichnisses auf. ls befindet sich in /bin/ls . Es ist kein Skript im entsprechenden Verzeichnis.
  • Bearbeiten Sie eine Datei in diesem Verzeichnis. emacs, vi, gedit die meisten anderen Editoren sind keine Skripte in diesem Verzeichnis.
  • Den Inhalt einer Datei in diesem Verzeichnis anzeigen.
  • Eine Datei in diesem Verzeichnis ausführen, für die er keine Berechtigung zum Ausführen hat.

Beachten Sie, dass dies Beispiele sind Es gibt viele andere Aktionen, die der Benutzer nicht ausführen soll. Wenn Sie eine Aktion in Betracht ziehen, fragen Sie „wird dies von einem Skript in /local/remote_only_scripts/foo ausgeführt ?” Wenn die Antwort nein ist, sollte der Benutzer dies nicht tun können. Wenn die Antwort Ja lautet, sollte der Benutzer dazu in der Lage sein.

PS:Lassen Sie mich klarstellen, was ich mit „Hinzufügen eines Benutzers“ meine. Ich meine nicht das Hinzufügen eines Benutzers zu einem SSH-Subsystem. Vielmehr meine ich das Hinzufügen eines Benutzers zum Computersystem. So habe ich zum Beispiel ein System, auf dem Debian Stable läuft, nenne es mit seiner Adresse www.hg.bar.com. Ich möchte einen Benutzer hinzufügen (über kuser, users-admin oder useradd oder auf ähnliche Weise), nenne ihn hg_guest. hg_guest kann sich nicht lokal anmelden oder irgendetwas in der obigen Liste tun. hg_guest kann lediglich Skripte „remote“ ausführen. Ich sagte, er sollte in der Lage sein, dies über ssh zu tun, aber wenn ich jetzt darüber nachdenke, könnte es ihm vielleicht erlauben, ssh zu verwenden, um sich lokal anzumelden, also könnte ein anderer Mechanismus erforderlich sein.

Akzeptierte Antwort:

Es gibt einen Befehl Option in der Datei "authorized_keys". Diese Option scheint genau das zu tun, was Sie wollen.

Verwandte:Linux – Datenwiederherstellung von einem versehentlichen Format auf einer ext4-Partition?

Beachten Sie, dass es sich nicht um eine Chroot oder eine eingeschränkte Shell handelt. Es erlaubt, nur diese Befehle über ssh auszuführen. Bei Ihrem Beispiel wäre es :

ssh somehost /local/remote_only_scripts/foo

Für diese Datei "authorized_keys":

command="/local/remote_only_scripts/foo",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ...public key... 

Es gibt viele Möglichkeiten, wenn Sie nicht möchten, dass sich Ihr Benutzer lokal anmelden kann. Sie können entweder:

  • setzen Sie einfach seine Shell auf /bin/false (Vielleicht brauchen Sie /bin/true da ssh eine gültige Anmeldung benötigt)
  • sperrt sein Passwort, siehe passwd -l

BEARBEITEN :weitere Einschränkungsoptionen hinzugefügt und verdeutlicht, wie Sie den lokalen Zugriff entfernen.


Linux
  1. Ssh – Beschränken eines Ssh/scp/sftp-Benutzers auf ein Verzeichnis?

  2. So führen Sie SSH und SCP im Stapelmodus aus (nur wenn die Anmeldung ohne Passwort aktiviert ist)

  3. CentOS / RHEL :So deaktivieren Sie ssh für Nicht-Root-Benutzer (ssh nur für Root-Benutzer zulassen)

  4. Linux Befehl remote ausführen

  5. Kann ich SSH Last-Login und MOTD für einzelne Benutzer deaktivieren?

Wie kann ich einen Nicht-Login-Benutzer erstellen?

Wie man als anderer Benutzer ssh

Mein .bash_profile aus der Ferne durcheinander gebracht, kann nicht mehr per ssh zurückkehren

Wie kann man einen SSH-Benutzer darauf beschränken, nur SSH-Tunneling zuzulassen?

Passwort zu .ssh/config hinzufügen

Wie kann man ssh erlauben, Benutzer nur aus dem lokalen Netzwerk zu rooten?