GNU/Linux >> Znalost Linux >  >> Linux

Jak spouštět konkrétní příkazy bez hesla Sudo v Linuxu

Používám skript ve svém systému Ubuntu nasazeném na AWS. Primárním účelem tohoto skriptu je zkontrolovat, zda určitá služba běží v pravidelných intervalech (přesněji každou minutu) a automaticky tuto službu spustit, pokud je z nějakého důvodu zastavena. Problém je však v tom, že ke spuštění služby potřebuji oprávnění sudo. Jak již možná víte, měli bychom poskytnout heslo, když něco spustíme jako uživatel sudo. Ale já to dělat nechci. Co vlastně chci udělat, je spustit službu jako sudo bez hesla. Pokud se někdy ocitnete v takové situaci, vím o malém řešení. Dnes vás v tomto krátkém průvodci naučím spouštět konkrétní příkazy bez sudo hesla v operačních systémech Linux a Unix.

Podívejte se na následující příklad.

$ sudo mkdir /ostechnix
[sudo] password for sk:

Jak můžete vidět na výše uvedeném snímku obrazovky, musím při vytváření adresáře s názvem ostechnix v kořenové složce (/) zadat heslo sudo. Kdykoli se pokusíme provést příkaz s právy sudo, musíme zadat heslo. V mém scénáři však nechci poskytnout sudo heslo. Zde je to, co jsem udělal, abych na svém Linuxovém boxu spustil příkaz sudo bez hesla.

Odmítnutí odpovědnosti: Toto je pouze pro vzdělávací účely. Při aplikaci této metody byste měli být velmi opatrní. Tato metoda je produktivní i destruktivní. Řekněme například, pokud uživatelům povolíte spouštět 'rm' příkaz bez sudo hesla, mohli by náhodně nebo záměrně smazat důležité věci. Byli jste varováni!

Spouštějte konkrétní příkazy bez hesla sudo v Linuxu

Z jakýchkoli důvodů, pokud chcete uživateli povolit spuštění určitého příkazu bez zadání hesla sudo, musíte tento příkaz přidat do sudoers soubor.

Chci uživatele s názvem sk spustit mkdir příkaz bez zadání hesla sudo. Pojďme se podívat, jak na to.

Upravit soubor sudoers:

$ sudo visudo

Přidejte následující řádek na konec souboru.

sk ALL=NOPASSWD:/bin/mkdir

Zde sk je uživatelské jméno. Podle výše uvedeného řádku uživatel sk může spustit 'mkdir' příkaz z libovolného terminálu, bez hesla sudo.

Můžete přidat další příkazy (například chmod ) s hodnotami oddělenými čárkami, jak je uvedeno níže.

sk ALL=NOPASSWD:/bin/mkdir,/bin/chmod

Uložte a zavřete soubor. Odhlaste se (nebo restartujte) svůj systém. Nyní se přihlaste jako normální uživatel 'sk' a zkuste tyto příkazy spustit pomocí sudo a uvidíte, co se stane.

$ sudo mkdir /dir1

Vidět? I když jsem spustil 'mkdir' příkaz s právy sudo, nebyla výzva k zadání hesla. Od této chvíle uživatel sk při spuštění 'mkdir' nemusíte zadávat heslo sudo příkaz.

Při spouštění všech ostatních příkazů kromě příkazů přidaných do souborů sudoers budete vyzváni k zadání hesla sudo.

Spusťte další příkaz pomocí sudo.

$ sudo apt update

Vidět? Tento příkaz mě vyzve k zadání hesla sudo.

Pokud nechcete, aby vás tento příkaz vyzýval k zadání hesla sudo, upravte soubor sudoers:

$ sudo visudo

Přidejte 'apt' příkaz v souboru visudo jako níže:

sk ALL=NOPASSWD: /bin/mkdir,/usr/bin/apt

Všimli jste si, že cesta k binárnímu spustitelnému souboru apt se liší od cesty mkdir? Ano, musíte zadat správnou cestu ke spustitelnému souboru. Chcete-li najít cestu ke spustitelnému souboru libovolného příkazu, například 'apt' , použijte 'whereis' příkaz jako níže.

$ whereis apt
apt: /usr/bin/apt /usr/lib/apt /etc/apt /usr/share/man/man8/apt.8.gz

Jak vidíte, spustitelný soubor pro příkaz apt je /usr/bin/apt , proto jsem jej přidal do souboru sudoers.

Jak jsem již zmínil, můžete přidat libovolný počet příkazů s hodnotami oddělenými čárkami. Jakmile budete hotovi, uložte a zavřete soubor sudoers. Odhlaste se a přihlaste se zpět do systému.

Nyní zkontrolujte, zda můžete příkaz spustit bez použití hesla sudo:

$ sudo apt update

Vidět? Příkaz apt mě nepožádal o heslo, i když jsem jej spustil pomocí sudo.

Zde je další příklad. Pokud chcete spustit konkrétní službu, například apache2, přidejte ji, jak je uvedeno níže.

sk ALL=NOPASSWD:/bin/mkdir,/usr/bin/apt,/bin systemctl restart apache2

Nyní může uživatel spustit 'sudo systemctl restart apache2' příkaz bez hesla sudo.

Doporučené stažení - Zdarma Cheat Sheet:"Linux Command Line Cheat Sheet"

Mohu se ve výše uvedeném případě znovu přihlásit ke konkrétnímu příkazu? Samozřejmě ano! Stačí odstranit přidaný příkaz. Odhlaste se a přihlaste se zpět.

Případně můžete přidat 'PASSWD:' direktiva před příkazem. Podívejte se na následující příklad.

Přidejte/upravte následující řádek, jak je uvedeno níže.

sk ALL=NOPASSWD:/bin/mkdir,/bin/chmod,PASSWD:/usr/bin/apt

V tomto případě uživatel sk může spustit 'mkdir' a 'chmod' příkazy bez zadání hesla sudo. Při spuštění 'apt' však musí zadat heslo sudo příkaz.

Doporučené čtení:

  • Jak udělit a odebrat oprávnění Sudo uživatelům na Ubuntu
  • Jak změnit výchozí soubor protokolu sudo v systému Linux
  • Jak obnovit oprávnění uživatele Sudo
  • Jak najít všechny uživatele Sudo ve vašem systému Linux
  • Jak přinutit uživatele, aby při použití sudo používali heslo root místo vlastního hesla

Linux
  1. Jak spustit konkrétní program jako root bez výzvy k zadání hesla?

  2. Jak spustit skript na pozadí (linux openwrt)?

  3. Ansible:sudo bez hesla

  1. Spusťte kontejnery na Linuxu bez sudo v Podman

  2. Jak zobrazit hvězdičky při psaní hesla Sudo v Linuxu

  3. Jak spustit příkazy bash Linuxu ve skriptu PERL?

  1. Jak udržet relaci časového limitu hesla „sudo“ déle v Linuxu

  2. Ssh – Potřebujete Tty ke spuštění sudo, pokud mohu sudo bez hesla?

  3. Jak spustit SCP bez přerušení výzvy k zadání hesla v Linuxu