Windows.  Vírusy.  Prenosné počítače.  internet.  Kancelária.  Verejné služby.  Vodiči

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í.

Sudo vs Su

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 sudo

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:

  • Sudo zaisťuje, že privilégiá existujú pre konkrétny príkaz (alebo pre určité časové obdobie) a nie pre celú reláciu, pretože to môže viesť k náhodnému zneužitiu privilégií superužívateľa.
  • Na obmedzenie používateľských práv môžete použiť sudo. Je to užitočné, keď nechcete, aby mal používateľ kontrolu nad všetkými právami superužívateľa pri práci so sudom.
  • Existuje protokol (auth.log), ktorý je udržiavaný pre každý sudoer. Tento súbor obsahuje informácie o príkazoch, ktoré boli vykonané pomocou sudo a čase ich vykonania. To pomáha správcovi sledovať aj dôveryhodných používateľov (sudoers).
  • Najväčšou výhodou je, že suda vyžaduje na prihlásenie vlastné heslo používateľa, nie heslo root. To pomáha udržať heslo root v súkromí a nie je potrebné ho meniť, aj keď používateľ (sudoer) odíde.
  • 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:

    • štandardne sudo zaznamenáva všetku aktivitu používateľa v kanáli authpriv syslog (spravidla sa výsledok umiestňuje do súboru /var/log/auth.log) a in su musí byť podobná funkcia povolená nastavením špeciálneho parametra v súbor nastavení, ktorý sa líši od distribúcie k distribúcii (SULOG_FILE v /etc/login.defs v Ubuntu Linux, /etc/login.conf a /etc/pam.d/su na FreeBSD atď.)
    • v prípade su správca systému nemôže obmedziť príkazy vykonávané užívateľmi, ale v sudo môže
    • ak by mal byť používateľ zbavený práv správcu, v prípade su musí po odstránení zo skupiny wheel zabudnúť heslo root, ak sa používa sudo, stačí ho odstrániť z príslušnej skupiny (napr. koleso alebo admin) a/alebo sudoers súbor, ak bol ďalej nakonfigurovaný.
    Otázka: Som jediný používateľ v mojom systéme a som zvyknutý na to, prečo potrebujem sudo?
    Odpoveď: Na otázku odpoviem otázkou: ak existuje správne sudo, prečo používať zastarané su?

    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.

    Čo je sudo

    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;

    Kde sa používa 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.

    Spustenie grafických programov 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.

    Spúšťanie programov s právami správcu v termináli

    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.

    Získanie práv superužívateľa na spustenie viacerých príkazov

    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.

    Pomocou tradičného účtu root a príkazu su

    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.

    Ubuntu 11.04 a staršie

    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.

    Ubuntu 11.10 a staršie

    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ň

    Nastavenie sudo a povolenia na spustenie rôznych príkazov

    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.

    Umožnite používateľovi vykonať príkaz bez zadania hesla

    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

    Vytváranie synoným (aliasov)

    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 ~/bashrc

    a 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"

    Doba platnosti zadaného hesla

    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 nepožaduje heslo

    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:

    • či niektorý používateľ môže získať práva správcu prostredníctvom príkazu sudo a
    • môže pomocou neho vykonávať všetky administratívne úkony?

    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.

    Ako získať práva root

    Existujú tri hlavné spôsoby, ako získať privilégiá superužívateľa, ktoré sa líšia obtiažnosťou.

    Prihláste sa ako root

    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.

    príkaz su

    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:

    príkaz sudo

    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ť.

    Čo je to Visudo?

    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:

    Úprava súboru sudoers

    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

    Štandardné parametre

    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.

    Nastavenia práv 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.

    • demo VŠETKY=(VŠETKY: VŠETKY) VŠETKY
    • Prvé pole špecifikuje meno používateľa, na ktorého sa má toto pravidlo vzťahovať (v tomto prípade ide o demo).
    • Prvé VŠETKO znamená, že pravidlo bude platiť pre všetkých hostiteľov.
    • Druhé ALL znamená, že zadaný používateľ môže spúšťať príkazy v relácii ktoréhokoľvek používateľa.
    • Tretie VŠETKO znamená, že určený používateľ môže spúšťať príkazy v ľubovoľnej skupine.
    • Posledné ALL označuje, že tieto pravidlá by sa mali aplikovať na všetky príkazy.

    To znamená, že používatelia root a demo môžu spúšťať všetky príkazy pomocou sudo so svojím heslom.

    Nastavenia skupinových privilégií

    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.

    Vlastné pravidlá

    Keď sa zoznámite so základnou syntaxou súboru, skúste sami vytvoriť niekoľko pravidiel.

    Vytváranie aliasov

    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.

    Pravidlá blokovania

    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

    Viac informácií

    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.

    Záver

    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: ,

    Ak si všimnete chybu, vyberte časť textu a stlačte Ctrl+Enter
    ZDIEĽAŤ: