Ako správca Linuxu som vždy používal a sudo, A su. A správca systému je veľmi dôležité, aby ste poznali rozdiel medzi nimi. Pre tých, ktorí nemajú všeobecnú predstavu o rozdieloch medzi týmito dvoma alebo si ich vždy pletú - tu je zoznam 12 otázok a odpovedí, ktorých cieľom je pomôcť vám porozumieť zložitosti sudo a su.
POZNÁMKA- Tento článok je špecifický len pre Ubuntu. Aj keď niektoré informácie sa môžu vzťahovať na väčšinu populárnych distribúcií.
Táto séria otázok a odpovedí by mala objasniť niektoré funkcie sudo vs su pre mnohých používateľov Ubuntu.
Q1. Ako sa používa sudo a su? Aký je medzi nimi rozdiel?
Odpoveď.Sudo sa používa na spustenie konkrétneho príkazu s oprávnením root. Zaujímavosťou je, že pri použití sudo pre konkrétny príkaz vás systém požiada o heslo aktuálneho používateľa. Po zadaní hesla sa príkaz spustí s oprávneniami superužívateľa.
Tu je príklad:
$ apt-get install skype E: Nepodarilo sa otvoriť zamknutý súbor /var/lib/dpkg/lock - otvoriť (13: Povolenie odmietnuté) E: Nepodarilo sa zamknúť administračný adresár (/var/lib/dpkg/), ste root ? $ sudo apt-get install heslo skype pre mylinuxbook: Čítam zoznamy balíkov... Hotovo Vytváranie stromu závislostí Čítam informácie o stave... Hotovo ... ...
Ako vidíte, najprv som sa pokúsil nainštalovať Skype pomocou príkazu apt-get ale dostal som chyba odmietnutia povolenia. Potom som použil sudo spolu s rovnakým príkazovým systémom a systémom hesiel pre používateľa mylinuxbook. Po zadaní správneho hesla je príkaz úspešne dokončený.
Na druhej strane su sa používa na prepnutie ľubovoľného používateľa. Nastaviť heslo príslušný používateľ je povolený. Ak sa su použije bez volieb, pripadne na účet root. V tomto prípade si systém vyžiada heslo superužívateľa.
Tu je príklad:
$ su mylinuxbook Heslo: mylinuxbook@mylinuxbook-Inspiron-1525:~$
Vo vyššie uvedenom príklade som použil su prejsť na používateľský účet mylinuxbook a po zadaní hesla pre mylinuxbook sa mi to podarilo.
Tu je ďalší príklad:
$ su Heslo: su: Zlyhanie autentifikácie
Vo vyššie uvedenom príklade som spustil su, aby som povolil oprávnenia účtu root pre bežného používateľa, ale nepodarilo sa to, pretože som nemal nakonfigurované heslo root. Distribúcie ako Ubuntu nemajú predvolene nakonfigurované heslá superužívateľov. Po jeho nastavení budete môcť toto heslo používať.
Q2. Čo ak nechcem konfigurovať heslo správcu v mojom Ubuntu, ale napriek tomu chcem prejsť na superužívateľa?
Odpoveď. V tomto prípade môžete skúsiť príkaz " sudo su". Tu je príklad:
$ sudo su heslo pre mylinuxbook: root@mylinuxbook-Inspiron-1525:/home/mylinuxbook#
Po použití sudo na spustenie su vás systém vyzve na zadanie hesla aktuálneho používateľa, nie hesla superužívateľa. Po jeho zadaní bol bežný účet prevedený na účet.
Q3. Čo ak chcem použiť su na navigáciu do iných používateľských účtov, ale nechcem si pamätať každé heslo používateľa?
Odpoveď. No v tom prípade stačí použiť príkaz su, zadať heslo správcu a prepnúť na účet. Odtiaľ sa pomocou su môžete prepnúť na ľubovoľný používateľský účet bez použitia hesiel.
Q4. Ak sa sudo používa na niečo s oprávneniami root, prečo je potrebné heslo aktuálneho používateľa a nie heslo root?
Odpoveď. Nie je to presne také, ako by každý normálny používateľ mohol robiť sudo a spúšťať príkazy, ktoré vyžadujú oprávnenia superužívateľa. Vy ako používateľ musíte byť sudoer To isté. To znamená, že na používanie sudo musíte mať oprávnenia. Ak ste platný sudoer, systém vás požiada o heslo, aby ste sa uistili, že rozumiete, že robíte nejakú prácu, ktorá vyžaduje oprávnenia root, a mali by ste všetko skontrolovať skôr, ako to skutočne urobíte.
Teraz vyvstáva otázka o sudoeroch. Ako sa stať používateľom sudoer? Používateľ sa môže stať sudoerom, ak je pridaný do skupiny sudo. Tu je príklad:
$ sudo adder
Stačí nahradiť skutočným používateľským menom účtu. Upozorňujeme, že predtým (pred Ubuntu 12.04) bolo potrebné zavolať skupinu admin, ale teraz to nie je potrebné.
Môžete použiť príkaz " skupina", aby ste skontrolovali všetky skupiny, v ktorých je tento používateľ. Tu je príklad:
$ groups mylinuxbook mylinuxbook: mylinuxbook adm cdrom sudo dip plugdev lpadmin sambashare
Takže vidíte, že používateľ " mylinuxbook“ je súčasťou všetkých týchto skupín, vrátane skupín sudo, a teda sudoer.
Q5. Všimol som si, že akonáhle som použil sudo, oprávnenia root zostali dlho, aj keď po chvíli sa všetko vrátilo do normálu. čo je to?
Odpoveď. Ubuntu si pamätá heslo pre sudo asi 15 minút. To znamená, že akonáhle použijete sudo na spustenie príkazu, systém vás nevyzve na zadanie hesla, ak spustíte iné príkazy, ktoré na spustenie vyžadujú oprávnenia root. Aj keď budete musieť použiť " sudo“ pred každým tímom.
Q6. Aké sú výhody sudo oproti su?
Odpoveď. Sudo má oproti su mnoho výhod.
Tu je zoznam:
Q7. Môže každý používateľ vykonávať sudo operácie?
Odpoveď. Nie, operácie sudo môžu vykonávať iba dôveryhodní používatelia alebo sudoisti. Tu je oficiálna stránka, ktorá popisuje, ako a čo môže používateľ sudoer robiť.
Q8. Mám záujem o su. Ako môžem nakonfigurovať používanie su spôsobom, ktorý dosiahne funkčnosť podobnú suda?
Odpoveď. Ak používate su, znamená to, že už máte nakonfigurované heslo superužívateľa. Na dosiahnutie funkčnosti podobnej sudo, t.j. ak chcete spustiť iba jeden príkaz s oprávneniami root pomocou su, všetko, čo musíte urobiť, je použiť túto možnosť -c z tímu su.
Tu je príklad:
$ su -c "apt-get install skype" Heslo:
Stačí zadať heslo a iba tento príkaz bude fungovať s oprávneniami superužívateľa. Aj keď je to rovnaké ako sudo, jediným rozdielom je, že namiesto aktuálneho hesla používateľa musíte zadať heslo superužívateľa.
Q9. Pracujem so sudom. Ako môžem prispôsobiť svoje používanie sudo spôsobom, ktorý dosiahne podobnú funkčnosť ako su?
Odpoveď. Ak chcete dosiahnuť funkčnosť su prostredníctvom sudo, vyskúšajte túto možnosť -i príkazy sudo.
Tu je príklad:
$ sudo -i heslo pre mylinuxbook: root@mylinuxbook-Inspiron-1525:~#
Vidíš to s " sudo -i", bol vykonaný prechod na účet root, hoci heslo zadané pre aktuálneho používateľa (mylinuxbook in v tomto prípade).
Q10. Rootové heslo môjho účtu ešte nebolo aktivované. Môžem použiť sudo na aktiváciu hesla superužívateľa?
Odpoveď. Ak chcete aktivovať heslo superužívateľa, môžete použiť príkaz passwd takto:
$ sudo passwd root
Tento príkaz vyžaduje oprávnenia root, takže budete musieť použiť sudo.
Q12. Môžem použiť sudo na udelenie špeciálnych práv používateľom?
Odpoveď. Konfiguračný súbor pre sudo - /etc/sudoers. Nedá sa upravovať ručne pomocou editora. Na tento účel sa odporúča použiť príkaz visudo.
Tu je presný príkaz:
$sudo vido
a toto dostanete:
Tento príkaz otvorí dočasný súbor /etc/sudoers.tmp v nano editore na úpravu. Visudo zaisťuje, že pri úprave viacerých kópií toho istého súboru nedochádza ku konfliktu.
Aby ste pochopili, ako udeliť obmedzené práva, pochopte dizajn tohto konfiguračného súboru, .
Od dávnych čias boli mnohí zmätení rôznymi možnosťami zabezpečenia pri vykonávaní operácií s maximálnymi privilégiami. Napríklad v úradnom Dokumentácia Ubuntu Ako príkaz na úpravu sa odporúča použiť niečo ako sudo nano av mnohých amatérskych príručkách (v štýle „5 trikov s príkazovým riadkom, ktoré prekvapia vašu babičku“) na získanie koreňového shellu sa odporúča napísať sudo su - . Pokúsim sa vysvetliť, prečo sa mi tento stav zdá nesprávny.
Historicky jediné univerzálnym spôsobom spustiť príkaz ako iný používateľ v Unixe existoval program s názvom su. Spustil sa bez parametrov, požiadal o heslo superužívateľa a ak bol úspešný, jednoducho nahradil aktuálne používateľské meno rootom, pričom zostalo takmer všetko premenné prostredia od starého používateľa (okrem PATH, USER a niekoľkých ďalších, pozri man su z vašej distribúcie). Správnejšie by bolo spustiť to ako su - v takom prípade by shell tiež dostal správne prostredie. Pomocou voľby -c môžete spustiť príkaz: su -c "vim /etc/fstab" .
V tomto prípade si dôveryhodní používatelia museli zapamätať heslo root a všetci používatelia uvedení v skupine „wheel“ (teda v skupine, ktorej členovia mohli spustiť príkaz su a stať sa superužívateľom) mali rovnaký neobmedzený prístup k celému systému systému, čo bol vážny bezpečnostný problém.
Potom prišiel príkaz sudo a bol to prelom. Teraz mohol administrátor špecifikovať zoznam povolených príkazov pre každého užívateľa (alebo skupinu užívateľov), súbory dostupné na úpravu, špeciálne premenné prostredia a oveľa viac (všetko toto krásne je ovládané z /etc/sudoers, pozri man sudoers z vašej distribúcie) . Po spustení sudo požiada používateľa o jeho vlastné heslo, nie o heslo root. Úplný shell možno získať pomocou "sudo -i"
Za zmienku stojí najmä špeciálny príkaz sudoedit, ktorý bezpečne spustí editor špecifikovaný v premennej prostredia $EDITOR. S tradičnejšou schémou sa úpravy súborov robili takto:
sudo vi /etc/fstab
Takto spustené vi zdedili shell s neobmedzenými právami a cez:! používateľ mohol spustiť ľubovoľný príkaz (pokiaľ sa o to, samozrejme, nepostaral správca vopred) a otvoriť ľubovoľný súbor.
Sudoedit skontroluje, či tento používateľ môže upravovať tento súbor, potom skopíruje určený súbor do dočasného adresára, otvorí ho v editore (ktorý zdedí práva používateľa, nie root) a po úprave, ak bol súbor zmenený, ho skopíruje späť so špeciálnymi opatreniami.
V distribúciách založených na Debiane používateľ root nemá heslo, všetky administratívne akcie sa musia vykonávať cez sudo alebo jeho grafický ekvivalent gksudo. Keďže ide o úplnú náhradu za su , sudo by malo byť jediným príkazom na prepínanie medzi používateľmi, avšak ako bolo povedané na začiatku, momentálne to tak nie je a z nejakého dôvodu si každý vymýšľa divoké sekvencie sudo, su, vi a čiarky.
Preto navrhujem, aby si každý raz a navždy zapamätal:
Po prvom zverejnení tejto poznámky som dostal niekoľko otázok. Z odpovedí sa nám podarilo urobiť mini-FAQ.
Otázka: Ako môžem použiť sudo na vykonanie príkazu su -c "echo 1 > /etc/privileged_file"? sudo echo 1 /etc/privileged_file sa sťažuje na „povolenie odmietnuté“
Odpoveď: Stáva sa to preto, že so zvýšenými právami sa vykonáva iba príkaz echo a výsledok je presmerovaný do súboru s právami bežného používateľa. Ak chcete niečo pridať do privilegovaného_súboru, musíte spustiť nasledujúci príkaz:
$ echo 1| sudo tee -a privilegovaný_súbor >/dev/null
Alebo sa dočasne stať rootom:
$ sudo -i # echo 1 > privilegovaný_súbor # ukončenie $
Otázka: sudo -i je dlhšie ako su -, ale zdá sa, že medzi nimi nie je žiadny rozdiel, prečo tlačiť viac?
A: sudo má niekoľko výhod, ktoré stoja za námahu napísať pár znakov navyše:
V každom systéme Linux je vždy jeden privilegovaný používateľ - root. Tento používateľ má práva vykonávať akékoľvek akcie, mazať akékoľvek súbory a meniť akékoľvek nastavenia. Je takmer nemožné nejako obmedziť slobodu pôsobenia rootu. Na druhej strane všetci ostatní používatelia systému väčšinou nemajú väčšinu potrebné práva, napríklad práva na inštaláciu programov, keďže ide o administratívnu operáciu, na ktorú má práva iba root. Ďalšou bežnou operáciou, ku ktorej má prístup iba superužívateľ, je kopírovanie a zmena súborov v systémových priečinkoch, kam bežný používateľ nemá prístup.
Skôr tento problém riešenie bolo celkom jednoduché: ak ste mali heslo root, mohli ste sa prihlásiť do systému pod jeho účtom alebo dočasne získať jeho práva pomocou príkazu su. Potom vykonajte všetky potrebné operácie a vráťte sa späť k bežnému používateľovi. Táto schéma v zásade funguje dobre, má však veľa významných nedostatkov, najmä nie je možné žiadnym spôsobom (presnejšie je to veľmi ťažké) obmedziť privilégiá správcu iba na určitý rozsah úloh.
Preto sa v moderných linuxových distribúciách namiesto root účtu používa na správu utilita sudo.
V Ubuntu je štandardne účet root úplne zakázaný, t.j. Neexistuje spôsob, ako sa stať rootom bez toho, aby ste to povolili. root je zakázaný, t.j. je prítomná v systéme, len sa do nej nemôžete prihlásiť. Ak chcete vrátiť možnosť používať root, pozrite si odsek nižšie o povolení účtu root.
sudo je utilita, ktorá udeľuje oprávnenia root na vykonávanie administratívnych operácií podľa svojich nastavení. Umožňuje vám jednoducho kontrolovať prístup k dôležitým aplikáciám v systéme. V predvolenom nastavení má pri inštalácii Ubuntu prvý používateľ (vytvorený počas inštalácie) plné práva na používanie sudo. Tie. v skutočnosti má prvý používateľ rovnakú slobodu konania ako root. Toto správanie sudo je však ľahké zmeniť, pozri nižšie v odseku o nastavení sudo;
sudo sa používa vždy, keď niečo spustíte z ponuky Správa systému. Napríklad, keď spustíte Synaptic, budete vyzvaní na zadanie hesla. Synaptic je nainštalovaný program na správu softvéru, takže na jeho spustenie potrebujete administrátorské práva, ktoré získate cez sudo zadaním hesla.
Nie všetky programy, ktoré vyžadujú oprávnenia správcu, sa však automaticky spúšťajú cez sudo. Zvyčajne musíte manuálne spúšťať programy s právami správcu.
Ak chcete začať grafické programy S administrátorskými právami môžete použiť dialógové okno spustenia programu, ktoré sa štandardne vyvoláva klávesovou skratkou Alt + F2.
Povedzme, že musíme bežať správca súborov Nautilus s právami správcu, takže cez GUI nejako zmeniť obsah systémové priečinky. Ak to chcete urobiť, zadajte príkaz v dialógovom okne spustenia aplikácie
Gksudo nautilus
gksudo môže byť nahradené gksu a používatelia KDE by tiež mali namiesto gksudo písať kdesu. Budete vyzvaní na zadanie hesla a ak ho máte potrebné práva, Nautilus sa spustí ako správca. Môžete spustiť ľubovoľný grafický softvér s právami správcu jednoduchým napísaním do spúšťacieho dialógu
Gksudo<имя_команды>
Buďte mimoriadne opatrní pri práci v aplikáciách spustených s právami správcu. Môžete vykonať akúkoľvek operáciu bez varovania zo systému, najmä odstrániť systémové súbory, čím sa systém stáva nefunkčným.
Ak chcete spustiť príkaz v termináli s právami správcu, jednoducho pred neho napíšte sudo:
Sudo<команда>
Budete vyzvaní na zadanie hesla. Pri zadávaní hesla buďte opatrní v žiadnom prípade sa nezobrazuje, je to normálne a robí sa to z bezpečnostných dôvodov, stačí zadať až do konca a stlačiť Enter. Po zadaní hesla sa zadaný príkaz vykoná ako root.
Systém si na nejaký čas zapamätá zadané heslo (uchová reláciu sudo otvorenú). Preto následné spustenie sudo nemusí vyžadovať zadanie hesla. Ak chcete zaručiť ukončenie relácie sudo, zadajte terminál
Okrem toho sú bežné chyby súvisiace s kanálmi v systéme Linux. Pri vykonávaní príkazu
Sudo cat test.txt | grep text > vysledok.txt
s root práva vykoná sa iba cat, takže súbor vysledok.txt sa nemusí zaregistrovať. Pred každým príkazom musíte buď napísať sudo, alebo dočasne prepnúť na superužívateľa.
Niekedy je potrebné spustiť niekoľko príkazov za sebou s právami správcu. V tomto prípade sa môžete dočasne stať superužívateľom pomocou jedného z nasledujúcich príkazov:
Sudo -s sudo -i
Tým sa dostanete do režimu superužívateľa (s obmedzeniami uloženými prostredníctvom nastavení sudo), ako to naznačuje symbol # na konci výzvy. príkazový riadok. Tieto príkazy sú v činnosti podobné ako su, avšak: - sudo -s- nezmení domovský adresár na /root, domovský adresár volajúceho užívateľa zostáva domovom sudo -s, čo je zvyčajne veľmi pohodlné. - sudo -i- tiež zmení domovský adresár na /root.
Ak sa chcete vrátiť späť do normálneho používateľského režimu, napíšte exit alebo jednoducho stlačte Ctrl + D.
Odomknutie účtu root vedie k zbytočným rizikám (pri nepretržitej práci pod rootom máte 100 500 spôsobov, ako sa „streliť do nohy“) a tiež uľahčuje útočníkovi získať prístup k vášmu počítaču.
Ak sa chcete prihlásiť ako root, stačí mu zadať heslo:
Sudo passwd root
Potom na prihlasovacej obrazovke kliknite na Iné... a zadajte používateľské meno (root) a heslo, ktoré ste nastavili.
Počnúc verziou 11.10 bol nainštalovaný správca prihlásení lightdm a prihlásenie ako root je trochu komplikovanejšie.
1. Nastavte heslo používateľa root. Zadajte do terminálu:
Sudo passwd root
2. Zapnite položku „Zadať prihlásenie“. Zadajte do terminálu:
Gksu gedit /etc/lightdm/lightdm.conf
Na koniec súboru pridajte:
Greeter-show-manual-login=true
3. Reštartujte lightdm. Zadajte do terminálu:
Reštartujte službu Sudo lightdm
To je všetko, na prihlasovacej obrazovke sa zobrazí položka „Prihlásenie“. Do prihlasovacieho poľa zadáme „root“, do poľa heslo - heslo, ktoré sme nastavili v prvej fáze.
Ak chcete zvrátiť uzamknutie účtu root, budete musieť vrátiť späť zmeny v nastaveniach lightdm a tiež uzamknúť účet root pomocou príkazu v termináli:
Sudo passwd -l koreň
sudo vám umožňuje povoliť alebo zakázať používateľom spúšťať špecifickú sadu programov. Všetky nastavenia súvisiace s prístupovými právami sú uložené v súbore /etc/sudoers. Toto nie je obyčajný súbor. Aby ste to upravili nevyhnutné(z bezpečnostných dôvodov) použite príkaz
Sudo videnie
V predvolenom nastavení sa uvádza, že všetci členovia skupiny admin mať plný prístup k sudo, ako naznačuje riadok
%admin VŠETKY=(VŠETKY) VŠETKY
Spustením si môžete prečítať viac o syntaxi a možnostiach prispôsobenia tohto súboru
Muž sudoers
Ak sa pri úprave tohto súboru pomýlite, môžete úplne stratiť prístup k administratívnym funkciám. Ak sa to stane, musíte spustiť systém režim obnovy, v tomto prípade automaticky získate administrátorské práva a budete môcť všetko opraviť. Tento súbor môžete upraviť aj z LiveCD.
Aby systém nežiadal heslo pre určité príkazy, je potrebné pridať sudoery za riadok # Špecifikácia aliasu Cmnd pridajte riadok, kde vypíšete požadované príkazy s úplnou cestou oddelenou čiarkami (cestu príkazu možno nájsť spustením ktorý názov_príkazu:
# Špecifikácia aliasu Cmnd Cmnd_Alias SHUTDOWN_CMDS = /sbin/shutdown, /usr/sbin/pm-hibernate, /sbin/reboot
A pridajte riadok na koniec súboru
Používateľské meno ALL=(ALL) NOPASSWD: SHUTDOWN_CMDS
Pozor! Vyššie uvedené kroky nenahrádzajú potrebu zadať príkaz sudo pred vaším príkazom
Aby ste sa vyhli nielen zadávaniu hesla pre sudo, ale aby ste sudo nemuseli zadávať vôbec, postupujte takto: otvorte súbor .bashrc umiestnený vo vašom domovskom adresári
nano ~/bashrca pridajte riadky na koniec súboru
alias reboot ="sudo reboot" alias poweroff ="sudo vypnutie" alias pm-hibernate="sudo pm-hibernate" alias hibernate ="sudo pm-hibernate" alias shutdown ="sudo shutdown"Možno budete chcieť zmeniť dĺžku trvania sudo bez zadania hesla. To sa dá ľahko dosiahnuť pridaním niečoho podobného do /etc/sudoers (visudo):
Predvolené: foo timestamp_timeout=20
Tu je sudo pre používateľa foo platné bez nutnosti zadávania hesla 20 minút. Ak chcete, aby sudo vždy vyžadovalo heslo, nastavte timestamp_timeout na 0.
sudo bez hesla je strasna bezpecnostna diera, kazdy si moze robit co chce. Ak ste to dovolili úmyselne, okamžite to vráťte späť do stavu, v akom to bolo.
V niektorých prípadoch však sudo náhle prestane vyžadovať heslo samo. Ak urobíte visudo , môžete vidieť niečo ako tento riadok, ktorý používateľ zjavne nepridal:
VŠETKY VŠETKY=(VŠETKY) NOPASSWD:ALL
S najväčšou pravdepodobnosťou bola táto katastrofálna línia pridaná pri inštalácii programu ako Connect Manager od MTS alebo Megafon. V tomto prípade ho treba zmeniť na riadok, ktorý umožňuje spustenie iba tohto správcu pripojenia ako root, niečo takéto:
Používateľské meno VŠETKO= NOPASSWD: /cesta/k/programu
Sú aj iné možnosti riešenia problému, krátka diskusia.
Paradoxne, príkaz sudo nebráni spusteniu administrátorskej relácie v rámci bežnej užívateľskej relácie. Pretože s jeho pomocou môžete spustiť rovnaký príkaz su:
$sudo su
A to je dokonca aj v Ubuntu, kde nie je účet root; presnejšie, neexistuje žiadne predvolené heslo. Ale pomocou sudo je to zbytočné aj pre príkaz su. Nie je však zakázané nastaviť heslo superužívateľa - koniec koncov, na to stačí zadať príkaz
$sudo passwd
aby ste mohli v budúcnosti používať su obvyklým spôsobom. A dokonca, ak chcete, prihláste sa ako root pri registrácii v systéme.
Aj tu však príkaz sudo poskytuje „ideologicky správnu“ metódu, a nie len jednu. Sú to voľby -s a -i, ktoré predlžujú, hoci trochu odlišným spôsobom, pôsobenie príkazu sudo na dobu neurčitú, kým sa „sekundárna relácia“ neukončí príkazom exit.
Voľba -s pri otváraní sekundárnej koreňovej relácie zachová všetky premenné prostredia pôvodného používateľa. Ak k tomu však pridáte voľbu -H, tieto premenné sa znova načítajú z profilových súborov domovského adresára správcu, teda /root, ako pri spustení interaktívnej inštancie shellu. Adresár, ktorý bol aktuálny v čase zadávania príkazu, sa však nezmení ani sa nezmení vzhľad príkazového riadka.
Voľba -i úplne reprodukuje prostredie root a spúšťa svoj príkazový shell ako prihlasovací shell. Samozrejme, v tomto prípade sa aktuálny adresár zmení na /root a príkazový riadok nadobudne podobu opísanú v príslušnej premennej v profilovom súbore administrátorského shellu (v bash - PS1).
V praxi nie je rozdiel medzi oboma formami získania trvalých administrátorských práv veľký, najmä v bash. Ale v zsh, s príslušnými nastaveniami profilových súborov, ak je to žiaduce, môžete dosiahnuť výrazne odlišné prostredie v každom z týchto prípadov. Je pravda, že ako veľmi to používateľ potrebuje, je veľká otázka. Ale skutočnosť, že pri použití možností -H sa trvalý administratívny režim nijako navonok nezdá, je plná chýb. A vo väčšine prípadov je vhodnejšie použiť voľbu -i.
Mimochodom, možnosti sudo nie sú obmedzené na spúšťanie príkazov ako administrátor: zadaním voľby -u username môžu byť spustené v mene užívateľa, ktorého prihlásenie je zadané ako jeho hodnota. To môže byť užitočné pri prezeraní alebo kopírovaní bodkových súborov a bodových adresárov iného používateľa, ktoré sú často čitateľné a upraviteľné iba vlastníkom.
Mimochodom, príkaz sudo sa dá spustiť tak, že si pýta heslo používateľa, pod menom ktorého sa príkaz vykoná (napríklad administrátora), a nie toho, kto vyžaduje jeho práva. Na to existuje možnosť -targetpw. A aby bola požiadavka root hesla trvalá, stačí definovať napríklad alias like
Alias sudo -targetpw
Vyžadovanie zadania hesla root pri spustení sudo je predvolené správanie v niektorých distribúciách, napríklad, ako sa hovorí, v Suse.
Príkaz sudo má oveľa viac možností – vyššie som uviedol len tie, ktoré som musel použiť. Ostatné sa dajú ľahko vyhľadať v man sudo. Z tých, ktoré nie sú uvedené, spomeniem aj voľbu -b, ktorá dáva pokyn na spustenie príkazu „supervisory“ na pozadí. Môže to byť užitočné pri vykonávaní dlhodobých akcií, ako je napríklad kopírovanie obrázky z USB na flash disk pomocou príkazu dd.
Ako sme práve videli, príkaz sudo dáva používateľovi takmer neobmedzené právomoci na akékoľvek akcie v celom systéme, ako aj na manipuláciu s používateľskými údajmi iných ľudí. V tejto súvislosti si položme nasledujúce otázky:
Ak hovoríme o rodine Ubuntu, v ktorej bol tento mechanizmus prvýkrát použitý „out of box“, potom „out of box“ bude odpoveď na prvú otázku negatívna, na druhú - pozitívna. Vo všeobecnosti to závisí od nastavení programu sudo, ktoré sú popísané v súbore /etc/sudoers. A v ňom môžete nastaviť pravidlá, ktoré umožňujú vykonávať určité príkazy iba určitým používateľom. V súhrne to vyzerá takto:
Používateľské meno hostiteľ = príkaz
Tu, ako by ste mohli uhádnuť, používateľské meno je meno používateľa, pre ktorého je toto pravidlo, hostiteľ - názov stroja, z ktorého sa môže uchýliť k tomuto pravidlu, príkaz - špecifický príkaz, ktorého použitie je povolené tomuto používateľovi z tohto stroja. Príkaz musí byť zadaný s úplnou absolútnou cestou (tj /sbin/fdisk, nie fdisk). Pole popisu príkazu môže obsahovať viacero hodnôt oddelených čiarkami, napríklad:
Používateľské meno ALL = /sbin/fdisk,/bin/mount
V Ubuntu sú predvolené pravidlá pre prístup používateľov k oprávneniam správcu popísané takto:
# Špecifikácia privilégií užívateľa root VŠETCI=(VŠETCI) VŠETCI # Členovia skupiny správcov môžu získať privilégiá root %admin VŠETCI=(VŠETCI) VŠETCI
To znamená, že užívateľ root môže podľa očakávania vykonávať ľubovoľné príkazy z ľubovoľného hostiteľa. Ale iba používatelia, ktorí sú členmi skupiny administrátorov (analogicky k skupine wheel, o ktorej sa hovorilo v) môžu získať jej práva. Používateľ vytvorený pri bežnej inštalácii sa automaticky stáva členom tejto skupiny – a má teda k dispozícii plné administrátorské práva bez akýchkoľvek obmedzení. ďalšie nastavenia. Ostatným používateľom, ktorých účty budú následne vytvorené, je však toto privilégium odňaté. Ak, samozrejme, neboli konkrétne zaradení do skupiny správcov.
V iných distribúciách, ktoré nepoužívajú sudo hneď po vybalení, ho budete musieť upraviť konfiguračný súbor- rovnaké /etc/sudoers uvedené vyššie.
Súbor /etc/sudoers je obyčajný textový súbor, a preto ho možno upravovať v ľubovoľnom textový editor(alebo povedzme pomocou ed alebo sed). Existuje však určité riziko, že niečo pokazíte (kvôli obyčajným preklepom), a to až do takej miery, že vám úplne zablokujete prístup k oprávneniam superužívateľa. Samozrejme, tieto situácie sa dajú napraviť – napríklad reštartom v režime pre jedného používateľa. Je však lepšie ich nebiť. A preto spoľahlivejším prostriedkom na úpravu /etc/sudoers by bolo použitie nástroja špeciálne navrhnutého na tento účel - visudo.
Utilita visudo nerobí nič nadprirodzené - jednoducho otvorí /etc/sudoers v textovom editore popísanom superuser premennou EDITOR (ak nie je zadefinovaná, bude to opäť klasické vi - odtiaľ názov) a umožní vám ho upravovať obvyklým spôsobom a potom ukončite editor s uložením výsledkov pomocou jeho štandardných prostriedkov. Predtým sa však skontroluje správnosť výsledku úprav. A ak sa zistí porušenie syntaxe akceptovanej pre /etc/sudoers, vydá sa príslušné varovanie. Potom sa môžete vrátiť k úpravám, odmietnuť vykonané zmeny alebo ich stále prijať (samozrejme na osobnú zodpovednosť).
Nástroj visudo nezaručuje 100% úspešnosť úprav. Pretože kontroluje iba konzistenciu syntaxe, ale nie „správnosť samotných pravidiel“. To znamená, že ak dôjde k chybe pri zadávaní cesty k príkazu požadovanému pre dané pravidlo, tento príkaz cez sudo nebude fungovať.
V skutočnosti to však zvyčajne vyzerá oveľa jednoduchšie a vôbec nie strašidelne. Takže vo Fedore 11 som musel vo vzorovej konfigurácii /etc/sudoers odkomentovať iba riadok
%wheel VŠETKY=(VŠETKY) VŠETKY
dať používateľovi zo zadanej skupiny (a ja som sa tam vopred zaradil, ako je popísané v) všetky práva udelené správcovi. Zároveň si môžete dať možnosť použiť sudo bez hesla. To by vyžadovalo odkomentovanie riadku
# %wheel ALL=(ALL) NOPASSWD: ALL
Obmedzil som sa však na predĺženie platnosti hesla pridaním (pôvodne chýbajúci riadok
Predvolené nastavenie timestamp_timeout=10
kde je hodnota časového limitu špecifikovaná v minútach. Mimochodom, ak ho zmeníte na nulu -
Predvolené nastavenie timestamp_timeout=0
potom sa heslo bude vyžadovať pri každom použití príkazu sudo.
Časový limit sudo akcie môžete naopak zakázať zadaním zápornej hodnoty:
Predvolené nastavenie timestamp_timeout=-1
V tomto prípade sa heslo bude vyžadovať iba pri prvom zavolaní tohto príkazu.
Bližší pohľad na súbor /etc/sudoers ľahko odhalí možnosti udeliť určitým používateľom alebo skupinám iba obmedzený súbor práv. Tu však začínajú jemnosti skutočnej administratívy. Jednoducho som odobral môjmu dvojitému experimentátorovi prístup k akýmkoľvek administratívnym úkonom, aby som zastavil všetky jeho pokusy v tejto oblasti. Ani toto mi však nie vždy dovolí sa s ním vyrovnať – tak ako sa Timur Shaov nedokáže vyrovnať so svojím lyrickým hrdinom.
Oddelenie prístupových práv je jednou z najdôležitejších bezpečnostných paradigiem implementovaných v operačných systémoch Linux a Unix. Bežní používatelia pracujú s obmedzenými právami; Tým sa znižuje rozsah ich vplyvu na ich vlastné prostredie a na operačný systém všeobecne.
Používateľ root má privilégiá superužívateľa. Tento administrátorský účet nemá obmedzenia, ktoré platia pre bežné používateľské účty. Iní používatelia môžu byť schopní spúšťať príkazy ako root v mnohých špecifických prípadoch.
Táto príručka vám ukáže, ako správne a bezpečne preniesť oprávnenia root do vášho systému.
Poznámka: Tento návod bol vytvorený dňa Server Ubuntu 12.04, avšak najmodernejšie Linuxové distribúcie sa bude správať podobne.
Ak chcete dokončiť tutoriál, musíte najprv dokončiť počiatočné nastavenie servera:
Prihláste sa na server ako užívateľ typu non-root.
Existujú tri hlavné spôsoby, ako získať privilégiá superužívateľa, ktoré sa líšia obtiažnosťou.
Najjednoduchším spôsobom je, samozrejme, prihlásiť sa ako root.
Ak sa pripájate cez SSH, zadajte IP adresu alebo názov hostiteľa:
ssh root@IP_address_or_domain
Po zobrazení výzvy zadajte heslo používateľa root.
Používajte neustále účtu root sa neodporúča, pretože absolútne prístupové práva môžu náhodne spôsobiť nenapraviteľné poškodenie systému.
Preto má systém príkaz su, ktorý umožňuje bežnému používateľovi kedykoľvek získať práva root.
Poznámka: Príkaz su je skratka pre náhradníka.
Ak chcete rootovať, stačí zadať:
Systém požiada o heslo používateľa root, po ktorom otvorí prístup k relácii shell používateľa root.
Po dokončení všetkých úloh, ktoré vyžadujú práva root, sa môžete vrátiť k predchádzajúcej relácii:
Posledný spôsob, ako získať práva root, je príkaz sudo.
Príkaz sudo vám umožňuje spúšťať špecifické príkazy ako root bez toho, aby ste museli otvárať novú reláciu.
sudo command_to_execute
Poznámka: Na rozdiel od su príkaz sudo nepožaduje heslo root, ale heslo používateľa, ktorý príkaz volá.
Z bezpečnostných dôvodov príkaz sudo nie je štandardne dostupný, prístup k nemu musí byť nakonfigurovaný. Ak ste postupovali podľa úvodného sprievodcu nastavením servera, už viete, ako to urobiť.
Príkaz sudo sa konfiguruje pomocou súboru /etc/sudoers.
Dôležité! Nikdy neupravujte tento súbor pomocou bežného textového editora! Na tento účel by ste mali použiť visudo.
Nesprávna syntax pridaná do tohto súboru môže úplne narušiť rozdelenie práv medzi používateľov. Preto sa na prácu s týmto súborom používa príkaz visudo.
Príkaz visudo otvorí súbor v bežnom textovom editore, ale pri ukladaní súboru kontroluje jeho syntax. Vyhnete sa tak chybám v konfigurácii.
Visudo zvyčajne otvorí súbor /etc/sudoers v editore vi. V systéme Ubuntu používa visudo nano.
Ak chcete nakonfigurovať príkaz visudo na používanie vi v systéme Ubuntu, spustite príkaz:
sudo update-alternatives --config editor
Sú 3 možnosti pre alternatívny editor (poskytujúci /usr/bin/editor).
Stav priority výberu cesty
————————————————————
* 0 /bin/nano 40 automatický režim
1 /bin/nano 40 manuálny režim
2 /usr/bin/vim.basic 30 manuálny režim
3 /usr/bin/vim.tiny 10 manuálny režim
Vyberte číslo zodpovedajúce textovému editoru, ktorý chcete použiť.
V systéme CentOS je možné túto hodnotu zmeniť pridaním nasledujúceho riadku do ~/.bashrc:
export EDITOR=/cesta/k/editorovi
Ak chcete aktualizovať nastavenia, zadajte:
Ak chcete otvoriť /etc/sudoers, zadajte:
Takže v textovom editore podľa vášho výberu sa na obrazovke otvorí súbor sudoers.
Nižšie sú uvedené parametre súboru Systémy Ubuntu 12.04 (komentované riadky sú vynechané a zmeny vykonané počas úvodného nastavenia servera sú uložené).
Poznámka: Súbor CentOS sudoers je oveľa väčší; Niektoré jeho parametre nie sú v tomto návode popísané.
Predvolené nastavenie env_reset
Predvolené secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
root ALL=(ALL:ALL) ALL
demo VŠETKY=(VŠETKY: VŠETKY) VŠETKY
%admin VŠETKY=(VŠETKY) VŠETKY
%sudo VŠETKY=(VŠETKY: VŠETKY) VŠETKY
Prvý riadok, Defaults env_reset, resetuje prostredie terminálu a odstráni všetky užívateľské premenné. Toto bezpečnostné opatrenie sa používa na elimináciu potenciálne škodlivých účinkov premenných prostredia z relácie sudo.
Druhý parameter, Defaults secure_path=…, nastavuje cestu (PATH, bodky súborový systém, v ktorom OS bude hľadať aplikácie) pre sudo operácie. Tým sa zabráni použitiu potenciálne nebezpečných ciest používateľa.
Tretí a štvrtý parameter by vám mal byť známy. Štvrtý riadok ste pridali sami, ale možno ste ho podrobne neskúmali.
To znamená, že používatelia root a demo môžu spúšťať všetky príkazy pomocou sudo so svojím heslom.
Posledné dva riadky sú podobné nastaveniam používateľských práv, ale zodpovedajú za skupinové práva.
Názvy skupín začínajú symbolom %.
Ako vidíte, správcovská skupina môže vykonať ľubovoľný príkaz ako ktorýkoľvek používateľ alebo hostiteľ. Skupina sudo má podobné práva, ale môže tiež spustiť príkaz ako každá skupina.
Keď sa zoznámite so základnou syntaxou súboru, skúste sami vytvoriť niekoľko pravidiel.
Súbor sudoers môže byť pohodlnejšie štruktúrovaný pomocou rôznych aliasov.
Môžete napríklad vytvoriť tri rôzne skupiny používateľov s kombinovanými právami:
User_Alias GROUPONE = abby, brent, carl
User_Alias GROUPTWO = brent, doris, eric,
User_Alias GROUPTHREE = doris, felicia, grant
Názvy skupín musia začínať veľkým písmenom. Potom môžete používateľom GROUPTWO udeliť právo zmeniť databázu apt-get:
GROUPTWO ALL = /usr/bin/apt-get update
Ak pravidlo nešpecifikuje používateľa a skupinu, sudo sa nastaví na root.
Potom môžete povoliť používateľom GROUPTHREE vypnúť a reštartovať počítač; Ak to chcete urobiť, musíte vytvoriť alias príkazu:
Cmnd_Alias POWER = /sbin/shutdown, /sbin/halt, /sbin/reboot, /sbin/restart
GROUPTHREE VŠETCI = MOC
Alias príkazu POWER obsahuje príkazy na vypnutie a reštartovanie počítača.
Môžete tiež vytvoriť alias Spustiť ako, ktorý nahradí časť pravidla, ktorá určuje používateľa, v ktorého relácii sa má príkaz vykonať.
Runas_Alias WEB = www-data, apache
GROUPONE VŠETKY = (WEB) VŠETCI
Teraz môže ktorýkoľvek používateľ skupiny GROUPONE vykonávať príkazy v používateľských reláciách www-data alebo apache.
Poznámka Poznámka: Pamätajte, že predtým vytvorené pravidlá majú prednosť v prípade konfliktu pravidiel.
Existuje niekoľko spôsobov, ako ovládať, ako sa sudo správa a reaguje na hovory.
Napríklad príkaz updatedb v kombinácii s balíkom mlocate je relatívne neškodný. Aby to bežný používateľ mohol vykonať s oprávneniami superužívateľa bez zadania hesla, môžete vytvoriť nasledujúce pravidlo:
GROUPONE ALL = NOPASSWD: /usr/bin/updatedb
Príkaz NOPASSWD znamená, že systém nebude vyžadovať heslo. Existuje aj príkaz PASSWD, ktorý má opačné správanie a používa sa štandardne.
NOPASSWD platí pre celé pravidlo, pokiaľ ho príkaz PASSWD nenahradí. Riadok môže vyzerať napríklad takto:
GROUPTWO ALL = NOPASSWD: /usr/bin/updatedb, PASSWD: /bin/kill
Ďalším šikovným príkazom je NOEXEC, ktorý slúži na zabránenie nebezpečnému správaniu určitých programov. Napríklad niektoré príkazy, ako napríklad less, môžu volať iné príkazy:
Tento príkaz vykoná akýkoľvek príkaz s oprávneniami používateľa, ktorý beží menej, čo môže byť veľmi nebezpečné.
Ak chcete zabrániť tomuto správaniu, môžete použiť nasledujúci riadok:
užívateľské meno ALL = NOEXEC: /usr/bin/less
IN túto sekciu zbierané rôzne užitočné tipy o práci so sudom.
Ak ste v parametri Spustiť ako zadali používateľa alebo skupinu, príkazy v relácii tohto používateľa môžete spustiť pomocou príznakov -u a –g:
príkaz sudo -u run_as_user
príkaz sudo -g run_as_group
V predvolenom nastavení sudo ukladá poverenia na určitý čas v jednom termináli. To znamená, že počas tohto obdobia nebudete musieť znova zadávať heslo.
Ak z bezpečnostných dôvodov chcete tento časovač resetovať, použite príkaz:
Ak chcete zistiť práva používateľa, zadajte:
Tento príkaz zobrazí zoznam všetkých povolení zadaných v súbore /etc/sudoers pre daného používateľa.
Ak sa bežný používateľ pokúsi spustiť príkaz správcu bez predpony sudo, príkaz nebude fungovať. Aby ste nemuseli znova zadávať príkaz, použite funkciu bash, ktorá príkaz zopakuje:
Dvojité výkričník zopakuje posledný príkaz.
Teraz máte základné zručnosti so súborom sudoers a právami root.
Pri práci s právami superužívateľa na to pamätajte bežných používateľov z bezpečnostných dôvodov takéto práva štandardne nemajú. Nezneužívajte práva root, inak môžete náhodne spôsobiť nenapraviteľné poškodenie systému.
Značky: ,