GNU/Linux >> Znalost Linux >  >> Linux

Sudo - existuje příkaz pro kontrolu, zda mám sudo a/nebo kolik času zbývá?

Vím, že je to opravdu stará otázka, ale dnes jsem to udělal ve skriptu. Za předpokladu, že být sudo znamená být schopen spustit jakýkoli příkaz jako sudo (nebo alespoň uptime)

CAN_I_RUN_SUDO=$(sudo -n uptime 2>&1|grep "load"|wc -l)
if [ ${CAN_I_RUN_SUDO} -gt 0 ]
then
    echo "I can run the sudo command"
else
    echo "I can't run the Sudo command"
fi

Pokud má však váš uživatel omezení ve visudu, nebude tato kontrola dostatečná, např. pokud váš uživatel může použít pouze příkaz make. Zkuste spustit nějaký příkaz, o kterém víte, že bude fungovat. Můžete přidat filtr grep -v Sorry, např.:$(sudo -n uptime 2>&1|grep "load" | grep -v Sorry|wc -l), abyste se vyhnuli těmto falešným poplachům.


-n možnost je k dispozici v novějších verzích sudo, ale jak jste uvedli, není to možnost. Neexistuje žádný skutečný způsob, jak udělat to, co hledáte, kromě toho, že byste zkusili sudo a zjistili, zda se vrátí s výzvou k zadání hesla. Pokud chcete vizuální indikaci, proč nespustit sudo /bin/bash a zahájit relaci root bash? Všimněte si, že to není bezpečné, ale také je to poněkud nejisté, pokud si někdo uvědomí vaše rychlé změny v sudu.


Pro zjednodušení odpovědi poskytnuté @wags007

if sudo -n true
then
  sudo id
else
  echo "sorry, but did not want to bother you"
fi

Pokud však v konfiguraci https://www.sudo.ws/man/1.8.15/sudoers.man.html máte defaults mail_badpass bude odeslán e-mail pro každý test, jehož výsledkem je nepravda (by se zobrazila výzva). Abyste se vyhnuli takovému obtěžování, změňte část vašeho souboru sudoers na

Defaults       mail_badpass
Defaults!      /bin/true !mail_badpass

V důsledku toho jsou e-maily s výstrahou zabezpečení odesílány pro všechny příkazy kromě /bin/true. No ano, někdo by se teď mohl pokusit vynutit heslo zavoláním sudo true neomezený počet opakování, aniž by se odeslal e-mail s upozorněním na zabezpečení.

Poznámka:Vždy používejte visudo místo vašeho oblíbeného editoru upravte soubor sudoers. Pokud tak neučiníte, riskujete uzamčení.


Linux
  1. Jak zkontrolovat, zda je potrubí prázdné, a spustit příkaz na datech, pokud není?

  2. Zkontrolujte, jak dlouho trvá spuštění Bash skriptu s Time Command

  3. Jak mohu zkontrolovat, zda soubor existuje, a provést příkaz, pokud ne?

  1. Jak zkontrolovat, zda je systém Linux 32bitový nebo 64bitový

  2. Jak zajistit, aby se příkaz Linux ls zobrazoval jako druhý v časové značce

  3. Jak zjistím, kolik volného místa zbývá na zařízení k vytvoření oddílu

  1. Jak kopírovat soubory a měnit vlastnictví, oprávnění současně

  2. Jak si zapamatovat možnosti příkazů?

  3. Triky příkazového řádku:Jak identifikovat datum a čas provedení příkazu Unixu