GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak se vyhnout žádosti o heslo pro sudo pro skripty Crontab?

Potřebuji, aby nový uživatel mohl spustit sudo bez požadavku na heslo, protože tento uživatel má v crontab .sh který používá sudo pro některé příkazy.

Vytvořil jsem nového uživatele na svém serveru ubuntu 16.04 x64

adduser my-user sudo
gpasswd -a my-user sudo

Poté pomocí visuo Tento řádek jsem přidal na základě této otázky

my-user ALL=(ALL) NOPASSWD : ALL

Poté restartován

Po restartu jsem se přihlásil pomocí my-user a pokusil se provést sudo clear, ale zeptal se mě na heslo sudo.

POZNÁMKA :Přidal jsem crontab pomocí crontab -e my-user takže předpokládám, že můj skript je spuštěn jako my-user . Ve skutečnosti se skript crontabbed zhroutí a v protokolu mi řekne o sudo žádost o heslo. Opravdu potřebuji spustit skript tímto způsobem, abych mohl vytvořit soubor s my-suer jako vlastník.

Řekněte mi prosím, zda některé kroky/řádky nebyly potřeba a jak zpřístupnit my-user pro provedení sudo bez požadavku na heslo.

Díky

PS:Viděl jsem tuto otázku, ale nejsem schopen ji zprovoznit, takže potřebuji přesnější vysvětlení, protože moje situace je jiná:spouštím skript crontab a potřebuji jej nepožadovat heslo sudo

Přijatá odpověď:

Někdy spouští proces z crontab uživatele root může způsobit problémy s počátečním vlastnictvím souboru a rwx režim; ty nemusí být správně zachovány.

V každém případě:

1) Chcete-li vytvořit nového uživatele, postupujte jednoduše:

 $ sudo deluser my-user  # if "my-user" is a regular user
 $ adduser my-user
 $ sudo gpasswd -a my-user sudo

2) zahrnout nový záznam s NOPASSWD tag v sudoers nebo v souboru (např. /etc/sudoers.d/60_my-user_rules ), umístěte dvojtečku na značku, tj. NOPASSWD:
Ještě jsem to neviděl s rozptýleným prostorem a pravidlo yr se stává:

 my-user my-host = NOPASSWD: /full/path/to/cmd [parameter1 [| parameter2 [| ...]]]

Přidání (ALL) před NOPASSWD: je nepovinné, protože výchozí pravidlo je (ALL:ALL) tak jako tak. Můžete však chtít nejen spouštět svůj cmd/script s oprávněním root, ale také jej spouštět jako daný uživatel (spec-user ) nebo jako člen dané skupiny (spec-group ) nebo oboje. V takovém případě se pravidlo změní na:

 my-user my-host = ([spec-user][:spec-group]) NOPASSWD: /full/path/to/cmd [parameter1 [| parameter2 [| ...]]]

To ve skutečnosti omezí dispozice sudo bez hesla na jednoho uživatele, jednoho hostitele a jeden příkaz. Toto pravidlo můžete zpřísnit zadáním volitelných parametrů daného příkazu. V takovém případě bude pravidlo platit pouze pro ten/tyto přesné parametry.
U skriptů můžete toto pravidlo dále zpřísnit tím, že zajistíte, aby pravidlo platilo pouze v případě, že skript nebyl žádným způsobem upraven . Toto je způsob, jak se vyhnout únosu skriptů. To se provádí pomocí cmd-aliasing a zadáním součtů SHA v /etc/sudoers.d/60_my-user_rules .

HTH. Pokud máte s touto odpovědí problémy, nahlaste to.

Související:Úplná záloha iPhone bez iTunes?
Ubuntu
  1. Jak obnovit heslo pro sudo v Debianu

  2. Jak odstranit požadavek na heslo Ubuntu?

  3. Jak nastavit cestu pro příkazy sudo

  1. Jak udělat sudo zapamatovat si heslo déle

  2. Jak změnit časový limit hesla Sudo

  3. Jak přinutím sudo, aby požádal o heslo uživatele root?

  1. Jak změnit Sudo nebo Root heslo v Ubuntu

  2. Jak najít/změnit výchozí heslo roota Ubuntu

  3. Jak obnovit heslo sudo