GNU/Linux >> Znalost Linux >  >> Linux

Spusťte část bash skriptu jako jiný uživatel

Ve skriptu použijte příkaz sudo.

Ve tvaru:

sudo -u username command

příkaz sudo spustí příkaz jako uživatel uživatelské jméno .

Pokud je skript spuštěn jako root, nemyslím si, že bude vyžadovat heslo. Jinak tento článek pojednává o tom, jak používat sudo s heslem v jednom příkazovém řádku?, a tento článek pojednává o tom, jak používat sudo bez hesla?


Tato odpověď je dobrá, ale rada ohledně chyby serveru je mírně nebezpečná – umožnila by komukoli spustit cokoli jako root! Zveřejňuji tedy příspěvek sem, protože nemohu formátovat komentář.

Doporučil bych použít visudo, abyste udělili potřebná oprávnění co nejpřesněji. Zadejte visudo a přidejte řádek jako:

username hostname = NOPASSWD: /full/path/to/command1, full/path/to/command2

Pokud potřebujete spustit stejnou věc na mnoha hostitelích, můžete ji otevřít pomocí:

username ALL = NOPASSWD: /full/path/to/command1, full/path/to/command2

Ale **nepoužil bych* ani jedno:

username ALL=(ALL) NOPASSWD: ALL

orusername hostname =ALL

Manuová stránka sudoeru obsahuje spoustu krvavých detailů


# Líbí se mi:

#test if running bash as a different user works
sudo -u nobody bash -c : && RUNAS="sudo -u nobody"

echo 1: $USER

#Runs bash with commands between '_' as nobody if possible
$RUNAS bash<<_
echo 2: \$USER
_

echo 3: $USER

# ./run

1: root
2: nobody
3: root

Linux
  1. Jak zpětně zajistit, aby skript běžel jako root?

  2. Spustit skript s argumenty jako uživatel?

  3. Jak spustit skript jako jiný uživatel bez hesla?

  1. Ubuntu - Spusťte příkaz při spuštění pomocí sudo

  2. Spusťte textový soubor jako příkazy v Bash

  3. Jak spustit příkaz jako konkrétní uživatel ve skriptu init?

  1. Spusťte bash skript jako démona

  2. Jak opakovaně spouštět bash skript každých N sekund?

  3. Spusťte příkaz bash na jenkins pipeline