GNU/Linux >> Znalost Linux >  >> Linux

Ssh – Přidání uživatele, který může spouštět skripty pouze vzdáleně?

Chtěl bych vytvořit uživatele, který může dělat pouze jednu věc:přes ssh zadat skript (a argumenty skriptu z příkazového řádku), který se nachází v jedné konkrétní složce
(pro účely této otázky to nazvěme /local/remote_only_scripts/foo ) a nechat tento skript spustit a vrátit jeho výstup.

Aby bylo jasno, některé příklady věcí, které nechci, aby uživatel mohl dělat:

  • Místně se přihlaste k účtu.
    Přihlašovací aplikace je /bin/login . Nejedná se o skript v /local/remote_only_scripts/foo složka, takže by jej uživatel neměl volat.
  • Vzdáleně se přihlaste k účtu. Opět přihlášení (je to, co nazývá ssh?) není skript v příslušné složce.
  • Seznam obsahu adresáře. ls je v /bin/ls . Nejedná se o skript v příslušném adresáři.
  • Upravte soubor v tomto adresáři. emacs, vi, gedit většina ostatních editorů nejsou skripty v tomto adresáři.
  • Zobrazit obsah souboru v tomto adresáři.
  • Spustit soubor v tomto adresáři, ke kterému nemá oprávnění.

Upozorňujeme, že toto jsou příklady existuje mnoho dalších akcí, které nechci, aby uživatel mohl dělat. Při zvažování akce se zeptejte „je to prováděno skriptem v /local/remote_only_scripts/foo ?" pokud je odpověď ne, uživatel by to neměl být schopen. Pokud je odpověď ano, pak by to měl být uživatel schopen.

PS:Dovolte mi objasnit, co myslím „přidáním uživatele“. Nemyslím tím přidání uživatele do nějakého ssh subsystému. Spíše mám na mysli přidání uživatele do počítačového systému. Takže například mám systém se systémem debian stable, nazvěte jej jeho adresou www.hg.bar.com. Chci přidat uživatele (prostřednictvím kuser, users-admin nebo useradd nebo nějakým podobným způsobem), nazvat ho hg_guest. hg_guest se nemůže přihlásit lokálně ani provádět žádnou z věcí ve výše uvedeném seznamu. Jediné, co může hg_guest udělat, je spouštět skripty „na dálku“. Řekl jsem, že by to měl být schopen udělat přes ssh, ale když o tom teď přemýšlím, možná mu povolení používat ssh umožní přihlásit se lokálně, takže může být potřeba nějaký jiný mechanismus.

Přijatá odpověď:

Existuje příkaz možnost v souboru author_keys. Zdá se, že tato možnost dělá přesně to, co chcete.

Související:Linux – Obnova dat z náhodného formátu na oddílu ext4?

Všimněte si, že to není chroot nebo omezený shell. Umožňuje provádět pouze tyto příkazy přes ssh. S vaším příkladem by to bylo:

ssh somehost /local/remote_only_scripts/foo

Pro tento soubor autorizovaných klíčů:

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

Existuje mnoho způsobů, pokud nechcete, aby se váš uživatel mohl přihlásit místně. Můžete buď:

  • prostě nastavte jeho shell na /bin/false (možná budete potřebovat /bin/true protože ssh potřebuje platné přihlášení)
  • zamkněte své heslo, viz passwd -l

UPRAVIT :přidáno více možností omezení a objasněno, jak odeberete místní přístup.


Linux
  1. Jak nastavit klíče SSH na Debianu

  2. Jak spustit SSH a SCP v dávkovém režimu (pouze když je povoleno přihlášení bez hesla)

  3. Jak mohu provést řadu příkazů v subshell bash jako jiný uživatel pomocí sudo?

  1. Jak ssh jako jiný uživatel

  2. Vzdáleně jsem pokazil můj .bash_profile, nelze se vrátit pomocí ssh

  3. Jak omezit uživatele SSH, aby povolil pouze tunelování SSH?

  1. ssh tunelování pouze přístup

  2. přidání hesla do .ssh/config

  3. Jak povolit ssh uživateli root pouze z místní sítě?