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?