GNU/Linux >> Znalost Linux >  >> Linux

Jak spouštět příkazy Sudo bez hesla

Při práci s Linuxem jsme zjistili, že přístup k některým souborům nebo provádění citlivých operací vyžaduje, aby uživatelé měli zvýšená oprávnění. příkaz sudo dočasně zvyšuje uživatelská oprávnění a umožňuje uživateli provádět citlivé příkazy nebo přistupovat k souborům bez omezení.

Syntaxe příkazu sudo je následující:

$ sudo --help

Probíráme čtyři způsoby, jak můžeme provádět příkazy sudo aniž byste museli pokaždé zadávat heslo. První dva zahrnují úpravu sudoers a sudoers.d soubory, zatímco poslední dva zahrnují provádění příkazů ke zvýšení uživatelských práv na root.

1. Úprava souboru /etc/sudoers

Nejprve zkusme provést příkaz pomocí sudo a uvidíme, zda se zobrazí výzva k zadání hesla:

$ sudo systemctl start mariadb

Spouštět příkazy Sudo bez hesla

Pokud chceme, uživatel Alice pro provedení všech sudo příkazy bez potřeby sudo heslo pro všechny/všechny hostitele, upravíme soubor sudoers.

$ sudo visudo

a použijte NOPASSWD direktiva, jak je znázorněno:

alice ALL=(ALL) NOPASSWD: ALL

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

Povolit uživateli Alice Chcete-li provést jeden konkrétní příkaz sudo bez zadání hesla, musíte použít následující řádek k souboru sudoers.

alice ALL=(ALL) NOPASSWD: /bin/systemctl start mariadb

Nyní zkuste provést několik příkazů a uvidíte…

$ sudo systemctl start mariadb
$ sudo systemctl status mariadb
$ cat /etc/sudoers

Z výše uvedené terminálové relace jsme spustili MariaDB kvůli změnám, které jsme provedli v souboru sudoers, nemáme výzvu k zadání hesla. Všimněte si také, že pro následující příkazy máme výzvu k zadání hesla.

Spouštějte příkazy Sudo na konkrétním hostiteli bez hesla

Aby uživatel mohl spouštět příkazy na konkrétním hostiteli jako root , namísto použití VŠECHNY píšeme:

alice linuxshelltips1=(root) NOPASSWD: /bin/systemctl start mariadb

Výše uvedené umožňuje Alice k provedení uvedeného příkazu na hostiteli s názvem linuxshelltips1 bez zadání hesla.

Chcete-li umožnit provádění tří příkazů pomocí sudo oprávnění pro hostitele linuxshelltips1 a nemáme výzvu k zadání hesla, uvádíme je následovně:

alice linuxshelltips1=(ALL) NOPASSWD: /bin/systemctl start mariadb, /bin/systemctl status mariadb, /bin/cat /etc/sudoers

Zde umožňujeme uživateli Alice ke spuštění a kontrole stavu mariadb službu bez zadání hesla na hostiteli s názvem hostitele linuxshelltips1 . Uživatel může také zřetězit /etc/sudoers soubor bez zadání hesla.

Všechny tři příkazy se provádějí bez nutnosti zadání hesla. Když se však pokusíme zastavit službu mariadb, jsme vyzváni k zadání hesla, protože jsme ho nezadali v souboru sudoers.

Spouštět příkazy Sudo bez hesla pro skupinové uživatele

Můžeme také povolit spouštění příkazů sudo bez zadání hesla pro skupinu uživatelů, řekněme group1 kterému uživateli Alice patří.

%group1 ALL=(ALL) NOPASSWD: ALL

Můžeme také kombinovat uživatele, skupiny a příkazy. Pokud například chceme, aby konkrétní uživatel nebo skupina spouštěla ​​konkrétní příkazy, vložíme do souboru sudoers následující řádek:

alice,%group2 ALL=(ALL) NOPASSWD: /bin/systemctl, /bin/cat, /bin/kill

Alice a všichni uživatelé patřící do group2 může spouštět všechny příkazy systemctl, cat a kill pomocí sudo a nemusí mít výzvu k zadání hesla.

Můžeme také povolit konkrétním uživatelům (alice, bob) spouštět konkrétní příkazy (systemctl, cat, kill) tím, že je uvedeme takto:

bob,alice, ALL=(ALL) NOPASSWD: /bin/systemctl, /bin/cat, /bin/kill

Po uložení souboru alice a bobe může spouštět příkazy systemctl, cat a kill na všech hostitelích bez výzvy k zadání hesla.

Všimněte si, jak uvádíme příkazy v /bin/ adresář, jako je; bin/systemctl nebo /bin/cat. Místo toho bychom mohli zahrnout celý adresář a končit znakem ‘/’ charakter. To by znamenalo, že uživatel může provést jakýkoli příkaz v /bin adresář. To však neplatí pro příkazy v podadresářích /bin adresář.

Chcete-li například povolit Alice pro provedení všech příkazů v /bin/ adresář, který zapisujeme:

alice ALL=(ALL) NOPASSWD: /bin/

Alice nyní může provádět všechny příkazy na všech hostitelích, kteří vyžadují oprávnění sudo umístěná v /bin/ adresář bez vyžadování hesla.

2. Úprava souboru /etc/sudoers.d

Případně je bezpečnější provést změny v souboru /etc/sudoers.d místo souboru sudoers. Díky tomu je správa práv sudo snadnější a ponechává soubor sudoers nedotčený.

Všimněte si, že vše, co jsme probrali v předchozí části, platí zde, jediný rozdíl je v tom, že budeme pracovat s sudoers.d soubor z bezpečnostních důvodů.

Vytvořme například soubor pro alice což jí umožňuje provádět příkazy sudo na konkrétním hostiteli bez zadání hesla.

$ sudo nano /etc/sudoers.d/alice

Po otevření souboru vložíme následující řádek:

alice linxshelltips=(root) NOPASSWD: /bin/

Uživatel nyní může provádět všechny příkazy sudo v /bin/ adresář bez zadání hesla na hostiteli s názvem hostitele linuxshelltips .

Mohli bychom také specifikovat příkazy sudo, které může provádět skupina uživatelů následovně:

$ sudo nano /etc/sudoers.d/groups

Následující řádek vložíme, abychom povolili všem členům skupiny1 spouštět všechny příkazy sudo na všech hostitelích bez zadání hesla.

%group1 ALL=(ALL) NOPASSWD: ALL

Správa práv sudo tímto způsobem nám umožňuje snadno je spravovat, aniž bychom se museli obávat, že něco porušíme.

3. Oprava souboru Sudoers

Všimněte si, jak používáme vizuo upravit soubory sudoers? Toto je konvence, protože se chceme vyhnout porušení systému. Když spustíme vizuo zkontroluje soubor, aby se ujistil, že jsme nic nepokazili, například pokud jde o syntaxi.

Pokud jsme místo toho použili editor prostého textu a udělali chyby, zabrání nám to v úpravách souboru, protože k úpravám souboru potřebujeme oprávnění sudo.

Pomocí vizua také zabraňuje vícenásobným úpravám souboru sudoers najednou, to znamená, že pokud soubor upravuje jiný uživatel, ostatní uživatelé nebudou moci soubor upravovat.

Za předpokladu, že je soubor sudoers zpackaný a my jsme zablokováni. Používáme pkexec příkaz, který je alternativou k příkazu sudo.

$ pkexec visudo

Poté, co budeme mít přístup k souboru sudoers, můžeme chybu opravit. Chcete-li například opravit /etc/sudoers.d/alice soubor, zapíšeme:

$ pkexec visudo /etc/sudoers.d/alice

4. Pomocí příkazu „sudo -s“

Pro spuštění těchto příkazů bez nutnosti pokaždé zadávat heslo, provedeme příkaz:

$ sudo -s

Když zadáme heslo jednou, pro všechny následující příkazy sudo v této relaci terminálu ho nemusíme zadávat znovu.

Nyní, když se pokusíme spustit příkaz sudo, nebudeme vyzváni k zadání hesla:

$ sudo systemctl start mariadb.service

Tento režim ukončíme vydáním ukončení příkaz:

$ exit

5. Pomocí příkazu „sudo su“

Dalším způsobem, jak spouštět příkazy sudo bez výzvy k zadání hesla, je spustit příkaz sudo su stát se uživatelem root. Po provedení tohoto příkazu a zadání hesla jednou, pak pro všechny následující příkazy sudo nemusíme zadávat heslo, aby se spustily.

$ sudo su

Nyní máme oprávnění root, takže žádné následné příkazy sudo, které provedeme, po nás nebudou vyžadovat zadání hesla.

Obecně platí, že ke spouštění příkazů sudo bez hesla používáme při úpravě souboru sudoers.d následující syntaxi soubor:

user_list host_list=effective_user_list tag_list command_list

Kde,

  • seznam_uživatelů mohou být konkrétní uživatelé, skupiny, aliasy.
  • seznam_hostitelů jsou názvy hostitelů, ve kterých může uživatel spouštět příkazy sudo bez hesla.
  • effective_user_list určuje seznam uživatelů spuštěných jako aktuální uživatel nebo jako alias aktuálního uživatele.
  • seznam_značek určuje značky jako NOPASSWD .
  • seznam_příkazů určuje seznam příkazů sudo, které může uživatel nebo skupina provádět bez nutnosti zadání hesla.

Provádění příkazů sudo bez výzvy k zadání hesla je považováno za bezpečnostní riziko. Výzva k zadání hesla nám nejen dává možnost potvrdit příkaz před jeho provedením, ale také zabraňuje neoprávněným uživatelům provádět akce nad rámec jejich oprávnění.

Například ‘sudo rm -rf /’ příkaz vymaže celý souborový systém. Tento příkaz je nevratný, a proto je moudré mít výzvu k zadání hesla, protože nám to dává šanci vyhodnotit tuto akci.


Linux
  1. MySQLdump bez hesla v cronjob

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

  3. Jak předat heslo do su/sudo/ssh bez přepsání TTY?

  1. Jak spustit skript jako jiný uživatel bez hesla?

  2. Ansible:sudo bez hesla

  3. Jak automaticky spouštět příkazy při přihlášení SSH?

  1. Ssh – Jak spustit Ssh-add automaticky, bez výzvy k zadání hesla?

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

  3. Spusťte ifconfig bez sudo