Tento článek zkoumá rozdíly mezi sudo
a su
příkazy v Linuxu. Můžete se také podívat na toto video, kde se dozvíte o těchto příkazech. Trvale se stát root pomocí su
je dobře známé „ne-ne“ ve vesmíru *nix. Proč? Protože se stanete rootem pomocí su
znamená, že jste root, což je stejné jako přihlášení do terminálu jako uživatel root s heslem root. A to je nebezpečné z mnoha důvodů.
[ Mohlo by se vám také líbit: Základy příkazového řádku Linuxu:sudo ]
Práce jako root znamená, že máte pravomoc:
- Odstraňte některé nebo všechny soubory
- Změnit oprávnění některého nebo všech souborů
- Změňte úroveň běhu systému
- Změnit uživatelské účty
- Připojte nebo odpojte souborové systémy
- Odeberte nebo nainstalujte software
- Vytvářejte, odebírejte a upravujte systémy souborů
V zásadě můžete jako uživatel root se systémem dělat cokoli. Je to všemocný administrativní účet. A na rozdíl od jiných více upovídaných operačních systémů neuvidíte:"Jste si jistý?" dialogu, abyste se ujistili, že rm -rf *
příkaz, který jste právě vydali, byl v /opt/tmp
spíše než na /
. Jak si dokážete představit, chyby provedené jako uživatel root mohou být nevratné a zničující. Existuje alternativa:sudo
.
sudo
sudo
, což je zkratka pro superuser dělat nebo náhradní uživatel dělat , je příkaz, který spouští výzvu se zvýšenými oprávněními bez nutnosti měnit vaši identitu. V závislosti na vašem nastavení v /etc/sudoers
můžete zadávat jednotlivé příkazy jako root nebo jako jiný uživatel. Chcete-li pokračovat ve spouštění příkazů s oprávněním root, musíte vždy použít příkaz sudo. Pokud například chcete nainstalovat Nginx balíček, spustíte:
$ dnf install nginx
Ale pokud nejste root nebo ve skupině sudo, uvidíte chybu. Místo toho, pokud spustíte tento příkaz:
$ sudo dnf install nginx
Budete požádáni o zadání hesla a poté můžete příkaz spustit, pokud jste součástí skupiny sudo.
Jednoduchý způsob, jak přepnout na interaktivní relaci jako uživatel root, je následující:
$ sudo -i
Teorie za používáním sudo je taková, že vydání příkazu sudo před jakýmkoli příkazem, který spustíte, vás nutí více přemýšlet o tom, co děláte, a doufejme, že budete dělat méně chyb s účtem, který má neomezenou moc.
su
su
, na druhé straně, je zkratka pro přepnout uživatele nebo náhradního uživatele . V podstatě přecházíte na konkrétního uživatele a potřebujete heslo pro uživatele, na kterého přecházíte. Nejčastěji je uživatelským účtem, na který přepnete, účet root, ale může to být jakýkoli účet v systému.
Pokud například zadáte:
$ su -
Ve výše uvedeném příkladu přecházíte na root a potřebujete heslo root. (-
) switch vám poskytuje prostředí root (proměnné cesty a shellu), spíše než aby vám jednoduše poskytoval oprávnění uživatele root pro jeden příkaz a zároveň si ponechal své vlastní prostředí.
$ su bryant
Ve druhém příkladu přecházíte na bryant , a proto potřebujete bryantovo heslo, pokud nejste root.
Pokud chcete přejít na bryant uživatelský účet včetně bryant's path a proměnných prostředí, použijte (-
) přepínač:
$ su - bryant
(-
) má stejný účinek jako přihlášení do systému přímo pomocí tohoto uživatelského účtu. V podstatě se stáváte tohoto uživatele.
Sbalit
Shrnutí toho, co jste se naučili.
sudo
umožňuje zadávat příkazy jako jiný uživatel bez změny identity- Musíte mít záznam v
/etc/sudoers
k provedení těchto omezených oprávnění sudo -i
vás přenese do interaktivní relace jako rootsu
znamená přejít na konkrétního uživatele- Stačí zadat
su
přepne na uživatele root sudo
požádá o vaše heslo, zatímcosu
požádá o heslo uživatele, na kterého přecházíte
[ Chcete se dozvědět více o zabezpečení? Podívejte se na kontrolní seznam zabezpečení IT a dodržování předpisů. ]
Ale kdy použijete jeden, ne jiný? Od sudo
politika je definována v /etc/sudoers
, to může poskytnout výkonné ovládací prvky oprávnění. Od sudo
dokáže v podstatě vše, co su
může, řekl bych, že je nejlepší zůstat u sudo
pokud nepracujete s některými staršími kódy, které vyžadují su
příkaz.