GNU/Linux >> Znalost Linux >  >> Linux

Spusťte skript prostředí jako jiný uživatel

Řešení 1:

Chcete-li skript spustit jako jiný uživatel jako jeden příkaz, spusťte:

/bin/su -c "/path/to/backup_db.sh /tmp/test" - postgres

Breaking it down:
 /bin/su : switch user
 -c "/path/to..." : command to run
 - : option to su, make it a login session (source profile for the user)
 postgres : user to become

Doporučuji vždy používat úplné cesty ve skriptech, jako je tento - nemůžete vždy zaručit, že budete ve správném adresáři, když jste su (možná vám někdo změnil homedir, kdo ví). Také vždy používám úplnou cestu k su (/bin/su), protože jsem paranoidní. Je možné, že někdo může upravit vaši cestu a způsobit, že použijete kompromitovanou verzi su.

Řešení 2:

Pokud má cílový uživatel, který má být spuštěn, definován shelll nologin, můžete použít volbu -s k určení shellu:

/bin/su -s /bin/bash -c '/path/to/your/script' testuser

Viz následující otázka:spusťte skript jako uživatel, který má nologin shell

Řešení 3:

Chcete-li to zautomatizovat podle plánu, můžete to umístit do crontab uživatele. Úlohy Cron sice nezískají úplné prostředí, ale i tak by mohlo být lepší umístit všechny proměnné env, které potřebujete, do samotného skriptu.

Chcete-li upravit crontab uživatele:

sudo crontab -u postgres -e

Řešení 4:

Toto by mělo být informativní čtení -- setuid na skriptech shellu

Pokud spustíte su s "- username " argument sekvence, vytvoří přihlašovací shell pro uživatele, který poskytne stejné prostředí jako uživatel. Obvykle se používá k rychlému spuštění skriptu s vaším domácím prostředím z jiného přihlášení.

Řešení 5:

Zkuste manuálovou stránku su:

su -c script_run_as_postgres.sh - postgres

Alternativně můžete použít sudo, které vám umožní spustit právě tento příkaz jako postgres bez hesla. Chce to však nějaké nastavení ve vašem /etc/sudoers.


Linux
  1. Jak zajistit, aby skript Shell vždy běžel jako root?

  2. Spustit skript s argumenty jako uživatel?

  3. Odkud se spouští skript Shell?

  1. Jak spouštět skripty Pythonu ze shellu

  2. UNIX / Linux:Co je to Shell? Jaké jsou různé Shelly?

  3. Jak spustíte skript při přihlášení v *nix?

  1. Spusťte shell skript v novém terminálu z aktuálního terminálu

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

  3. Spustit příkaz shell v jenkins jako uživatel root?