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?