GNU/Linux >> Znalost Linux >  >> Linux

10 rychlých tipů o příkazu sudo pro systémy Linux

Přehled

sudo znamená superuser do . Umožňuje oprávněným uživatelům provádět příkazy jako jiný uživatel. Dalším uživatelem může být běžný uživatel nebo superuživatel. Většinu času jej však používáme k provádění příkazů se zvýšenými oprávněními.

příkaz sudo funguje ve spojení s bezpečnostními politikami, výchozí bezpečnostní politika je sudoers a je konfigurovatelná pomocí /etc/sudoers soubor. Jeho bezpečnostní zásady jsou vysoce rozšiřitelné. Je možné vyvíjet a distribuovat vlastní zásady jako pluginy.

Jak se to liší od su

V GNU/Linuxu existují dva způsoby, jak spustit příkaz se zvýšenými oprávněními:

  • Pomocí su příkaz
  • Pomocí sudo příkaz

ne znamená přepnout uživatele . Pomocí su se můžeme přepnout na uživatele root a spustit příkaz. Tento přístup má ale několik nevýhod.

  • Potřebujeme sdílet heslo uživatele root s jiným uživatelem.
  • Nemůžeme poskytnout řízený přístup, protože uživatel root je superuživatel
  • Nemůžeme kontrolovat, co uživatel dělá.

sudo řeší tyto problémy jedinečným způsobem.

  1. Za prvé, nepotřebujeme kompromitovat heslo uživatele root. Běžný uživatel používá své vlastní heslo ke spuštění příkazu se zvýšenými oprávněními.
  2. Můžeme ovládat přístup uživatele sudo, což znamená, že můžeme omezit uživatele na provádění pouze určitých příkazů.
  3. Kromě toho jsou všechny aktivity uživatele sudo protokolovány, takže můžeme vždy zkontrolovat, jaké akce byly provedeny. Na GNU/Linuxu založeném na Debianu jsou všechny aktivity protokolovány /var/log/auth.log soubor.

Následující části tohoto návodu tyto body osvětlí.

Ruce se sudo

Nyní si rozumíme se sudo. Ušpiněme si ruce od praktického. Pro ukázku používám Ubuntu. Chování s jinou distribucí by však mělo být totožné.

Povolit přístup sudo

Pojďme přidat běžného uživatele jako uživatele sudo. V mém případě je uživatelské jméno linuxtechi

1) Upravte soubor /etc/sudoers následovně:

$ sudo visudo

2) Přidejte pod řádek, abyste umožnili sudo přístup uživateli linuxtechi:

linuxtechi ALL=(ALL) ALL

Ve výše uvedeném příkazu:

  • linuxtechi označuje uživatelské jméno
  • Nejprve VŠECHNY pokyny k povolení přístupu sudo z libovolného terminálu/stroje
  • Druhý (ALL) dává pokyn sudo příkazu, který má být spuštěn jako jakýkoli uživatel
  • Třetí ALL označuje, že všechny příkazy lze provést jako root

Spustit příkaz se zvýšenými oprávněními

Chcete-li provést příkaz se zvýšenými oprávněními, stačí před příkaz zadat sudo slovo takto:

$ sudo cat /etc/passwd

Když provedete tento příkaz, požádá o heslo linuxtechi, nikoli o heslo uživatele root.

Provést příkaz jako jiný uživatel

Kromě toho můžeme použít sudo k provedení příkazu jako jiný uživatel. Například v níže uvedeném příkazu uživatel linuxtechi provede příkaz jako uživatel devesh:

$ sudo -u devesh whoami
[sudo] password for linuxtechi:
devesh

Vestavěné chování příkazů

Jedním z omezení sudo je – vestavěný příkaz Shell s ním nefunguje. Například v příkazu je zabudována historie, pokud se pokusíte provést tento příkaz pomocí sudo, chyba příkazu nenalezena bude hlášena následovně:

$ sudo history
[sudo] password for linuxtechi:
sudo: history: command not found

Přístup k root shellu

Abychom předešli výše uvedenému problému, můžeme získat přístup ke kořenovému shellu a spustit odtud jakýkoli příkaz, včetně vestavěného Shell.

Pro přístup k root shellu spusťte níže uvedený příkaz:

$ sudo bash

Po provedení tohoto příkazu – uvidíte, že se znak výzvy změní na znak libra (#).

Recepty

V této části probereme několik užitečných receptů, které vám pomohou zvýšit produktivitu. Většinu příkazů lze použít k dokončení každodenních úkolů.

Proveďte předchozí příkaz jako uživatel sudo

Předpokládejme, že chcete provést předchozí příkaz se zvýšenými oprávněními, pak bude užitečný trik:

$ sudo !4

Výše uvedený příkaz provede 4. příkaz z historie se zvýšenými oprávněními.

Pokud chcete provést předchozí příkaz s právy root pomocí příkazu sudo, použijte následující příkaz,

$ sudo !!

příkaz sudo s Vim

Mnohokrát upravujeme konfigurační soubory systému a při ukládání si uvědomujeme, že k tomu potřebujeme přístup root. Protože tím můžeme přijít o své změny. Není třeba propadat panice, k záchraně z této situace můžeme použít níže uvedený příkaz ve Vimu:

:w !sudo tee %

Ve výše uvedeném příkazu:

  • Dvojtečka (:) označuje, že jsme ve Vimově bývalém režimu
  • Vykřičník (!) označuje, že spouštíme příkaz shell
  • sudo a tee jsou příkazy shellu
  • Znak procenta (%) označuje všechny řádky z aktuálního řádku

Provádění více příkazů pomocí sudo

Dosud jsme provedli pouze jeden příkaz pomocí sudo, ale můžeme s ním provést více příkazů. Jednoduše oddělte příkazy středníkem (;) takto:

$ sudo -- bash -c 'pwd; hostname; whoami'

Ve výše uvedeném příkazu:

  • Dvojitá pomlčka (–) zastaví zpracování přepínačů příkazového řádku
  • bash označuje název shellu, který se má použít ke spuštění
  • Po příkazech, které se mají provést, následuje volba –c

Spustit příkaz sudo bez hesla

Když je příkaz sudo spuštěn poprvé, zobrazí výzvu k zadání hesla a ve výchozím nastavení bude heslo uloženo do mezipaměti po dobu dalších 15 minut. Toto chování však můžeme přepsat a zakázat ověřování hesla pomocí klíčového slova NOPASSWD následovně:

linuxtechi ALL=(ALL) NOPASSWD: ALL

Omezit uživatele na provádění určitých příkazů

Abychom zajistili kontrolovaný přístup, můžeme omezit uživatele sudo na provádění pouze určitých příkazů. Například pod řádkem lze provádět pouze příkazy echo a ls

linuxtechi ALL=(ALL) NOPASSWD: /bin/echo /bin/ls

Přidat řádek nebo textový řetězec k souboru pomocí příkazu sudo

Existují některé scénáře, kdy přidáme několik řádků k existujícímu souboru s místním uživatelem, který má práva sudo,

$ echo ‘textový řetězec’ | sudo tee -a

Příklad je uveden níže:

[email protected]:~$ echo "deb http://ftp.de.debian.org/debian buster main contrib" | sudo tee -a /etc/apt/sources.list
deb http://ftp.de.debian.org/debian buster main contrib
[email protected]:~$

Alternativní způsob připojení řádků nebo textu k existujícímu souboru pomocí příkazu sudo,

sudo sh -c 'echo "deb http://ftp.de.debian.org/debian buster main contrib" >> /etc/apt/sources.list'

Statistiky sudo

Pojďme se podívat na příkaz sudo a získat o něm přehled.

$ ls -l /usr/bin/sudo
-rwsr-xr-x 1 root root 145040 Jun 13  2017 /usr/bin/sudo

Pokud pečlivě sledujete oprávnění k souboru, setuid bit je povolen na sudo. Když některý uživatel spustí tento binární soubor, spustí se s oprávněními uživatele, který soubor vlastní. V tomto případě je to uživatel root.

Abychom to demonstrovali, můžeme s ním použít příkaz id takto:

$ id
uid=1002(linuxtechi) gid=1002(linuxtechi) groups=1002(linuxtechi)

Když provedeme příkaz id bez sudo, zobrazí se id uživatele linuxtechi.

$ sudo id
uid=0(root) gid=0(root) groups=0(root)

Ale pokud provedeme příkaz id pomocí sudo, zobrazí se id uživatele root.

Závěr

Z tohoto článku vyplývá, že sudo poskytuje běžným uživatelům kontrolovanější přístup. Pomocí těchto technik může více uživatelů komunikovat s GNU/Linux bezpečným způsobem.

Přečtěte si také:Jak vytvořit pevné a měkké (symlink) odkazy na systémech Linux


Linux
  1. 8 tipů pro příkazový řádek Linuxu

  2. Zkrocení příkazu tar:Tipy pro správu záloh v Linuxu

  3. Spusťte příkaz cd jako superuživatel v Linuxu

  1. 3 tipy pro tisk s Linuxem

  2. 4 nástroje pro budování vestavěných linuxových systémů

  3. 8 Příklady příkazů rychlého data v Linuxu

  1. Tipy pro příkazový řádek Linuxu pro zvýšení produktivity

  2. Příklady příkazů sudo v Linuxu

  3. Jaký je ekvivalent linuxového příkazu updatedb pro Mac?