tavis nörttimaailmassa

EksisONE - artikkeleita ja ohjeita nörttimaailmasta

Root vai user

Kaikissa linux-jakeluissa lienee tapa antaa tavalliselle käyttäjälle admin-oikeudet, ainakin väliaikaisesti. Ubuntussa (ja ymmärrykseni mukaan kaikissa Debian-pohjaisissa, mitä niitä sitten onkaan) käyttäjä lisätään admin-ryhmään ja käyttämällä komentoa sudo pystyy tekemään saman kuin root. Tuon idea on lisätä turvallisuutta, mutta aika monelle se vain hieman monimutkaistaa asioita. Admin-ryhmä ja rootin pitäminen erossa ”normaaleista” käyttäjätunnuksista palvelee ympäristöä, jossa on useita käyttäjiä. Jos vain sinulla on pääsy, niin en aivan ymmärrä miksi pitäisi olla kirjautumatta root-tunnuksella – koska rootin hommia aina tehdään.

Sudon käyttämisellä saadaan rajattua ketkä pystyvät järjestelmää muuttamaan ja säätämään. Aivan perusteltua isoissa yrityksissä, tai jopa perheessä, jos omaa systeemiä pyöritetään linux-pohjaisena – saa hieman ainakin hidastettua muiden kokeiluja tai vahinkoja. Mutta jos käytät yksinäsi systeemiä, niin en näe mitään syytä olla kirjautumatta rootina.

Hallinta on aina sudoa

Ehkä omalla koneella jako admin-ryhmään ja tavallisiin tunnuksiin on perusteltua. En tiedä. Olen viimeksi kokeillut pingviiniä läppärissä 2017 ja silloin(kin) tilanne oli sama kuin ennenkin: liian hankala tavalliselle loppu/kotikäyttäjälle. Ei anna mitään etua, vaan Windows tekee kaiken helpommin ja selvemmin. Ja on käytännössä heti käyttövalmis. Mutta toki jos harrastaa käyttöjärjestelmän säätöä. koodaa tai pyörittää omaa serveriä, niin toki asia muuttuu – mutta silloin ei olla enää tavis-loppukäyttäjän tasolla, joita ehdottomasti suurin osa on.

Linuxit antavat kuitenkin osassa tapauksissa selvää etua suhteessa Windowsiin. Siksi optimitilanne olisi saada eräänlainen hybridikäyttöjärjestelmä, jossa olisi kaikki toimivat palikat yhdessä. Hieman lähemmäs tuota ideaalia pääsee kun asentaa Windows-koneeseen WSL:n (Windows Subsystems for Linux) ja siiten esimerkiksi juurikin Ubuntun.

Web-serverien hallinta on pääosin linuxpohjaista. CentOS, Ubuntu jne. Olen kerran asentanut DigitalOceanilla CentOS:n, koska kuvittelin tarvitsevani cPanelia omiin saittihommiin, eikä cPanel pyöri Ubuntussa, ja kun en saanut systeemejä (lue: sähköpostia) pyörimään yhden yön aikana, niin luovuin. Muutoin minulla on aina Ubuntu asennettuna. Minulla ei ole siihen mitään syviä intohimoja, vaan Ubuntuun löytyy parhaiten ohjeita. Sama syy siis miksi webpalvelin on Apache2, ei nginx. Tai tietokantaa pyörittää MySQL, ei jokin muu.

Kun lähtee asentamaan omaa pikku palaansa pilvessä tai VPS;nä, vaikka juurikin DigitalOceanissa (joku muuten on sieltä edullisimmasta päästä) ja käynnistää dropletin vain Ubuntu asennettuna, niin aivan ensimmäinen asia, joka käsketään tehdä, on tehdä oma käyttäjätunnus ja antaa sille sudo-oikeudet. Tai no, toinen asia, koska aivan ensimmäinen on vaihtaa rootin salasana, mutta ymmärtänette silti.

Sudo-käyttäjä

VPS:ssä kirjaudu sisään SSH:lla root-tunnuksella ja tehdään oma käyttäjätunnus:

adduser tunnus

DigitalOceanin ohjeissa todetaan pikkuisen vähättelevästi, että tunnukselle kannattaa antaa admin-oikeudet, koska joskus joutuu tekemään ylläpidollisia töitä. Muotoillaan näin – minä en ole koskaan joutunut tekemään mitään muuta kuin ylläpidollisia töitä, enkä edes tiedä mitä VPS:ssä (tai dropletissa DigitalOceanin kielellä) voisi tehdä jotain järkevää/tuottavaa omalla tunnuksella. Jos sinulla on ideoita, niin jaa kommenteissa.

Omassa Ubuntuasennuksessa sudo-käyttäjän luomista ei tarvitse tehdä, ellei tee tunnusta jollekin toiselle. Ja silloin kannattaa miettiä kahteen kertaan, että onko oikeuksia aidosti tarpeen antaa. Yhteinen sänky tai kaverisuhde ei ole sellainen peruste

Annetaan luodulle tunnukselle sudo-oikeudet.

usermod -aG sudo TUNNUS

Nyt omalla tunnuksellasi voi tehdä samoja asioita kuin rootina, kun laitat komennon eteen sudo. Sinulta kysytään omaa salasanaasi, ei siis rootin, ja järjestelmä muistaa sen jonkun aikaa, joten salasanaa ei tarvitse olla kirjoittamassa koko ajan. Ohjeiden mukaan aikajakso olisi 5 minuuttia, mutta sitä voidaan muuttaa asetuksissa. Minun tekisi mieli väittää, että aika on DigitalOceanilla pidempi – mutta ehkä viiden minuutin aika pyörähtää aina käyntiin siitä kun on antanut sudon. En tiedä, eikä sillä suurta merkitystä olekaan.

Sudon käyttö on minusta ainakin tuskaa. Sitä tuskaa voi hieman lieventää antamalla komennon sudo -s jolloin siirtyy yhdellä oman salasanan rootiksi. Tai sitten komennolla su - jolloin kysytään rootin salasanaa ennen kuin siirrytään root-tunnukselle. Molemmissa tapauksissa pääsee takaisin omalle tunnukselleen joko komentamalla exit tai logout.

Root koti-Ubuntussa

Ubuntu asentaa aidon root-tunnuksen, mutta lähtökohtaisesti estää sillä kirjautumisen. Se, että VPS-palveluissa root-tunnus tehdään, on niiden oma muunnos, että asiakkaat ylipäätään saadaan yostamansa serveripalan hallintaan.

Omassa elämässäni kirjaudun aina root-tunnuksella. Olen ainoa, joka systeemiä käyttää, joten en näe mitään tarvetta kirjoittaa sudoa joka paikkaan. Eikä tule enää tilanteita, että rakentaa uuden virtual hostin ja muokkaa example.com.conf -tiedoston kuntoon ja saakin ilmoituksen, että sorry vaan – ei tallenneta, koska taviskäyttäjällä ei ole oikeuksia moiseen; kaikki vain siksi, että sudo unohtui.

Minulle sanottiin kerran, että sudon käyttö suojelee itseäni omia hölmöilyjä vastaan. Ehkä, mutta aika nopeasti sudon käytöstä tulee toinen luonto, koska web-hommissa edelleenkin SSH:lla kirjautuessa ollaan aina menossa joko asentamaan tai säätämään. Ja jos juuressa kirjoitan sudo rm -rf / niin lopputulos on ihan yhtä katastrofaalinen kuin root-tunnuksella.

Jos sinulla on hyvä syy miksi ainoan käyttäjän kannattaa kirjautua omalla tunnuksellaan, ei rootina, ja käyttää sudoa, niin kerro se kommenteissa. Toki rootilla on einen enemmän valtaa ja oikeuksia kuin sudoa käyttävällä userilla, mutta tuo riippuu täysin asetuksista.

Komento sudo -s päästää rootiksi. Mutta kun kokee hieman turhaksi erikseen komentaa tuo joka kirjautumiskerta, niin samantien kirjautuisi suoraan root-tunnukselle. Se ei onnistu, koska Ubuntu ei luo rootille salasanaa. Joten tehdään sellainen.

Kirjaudu ensin rootiksi komennolla sudo -s. Vaihdetaan rootin salasana:

passwd root

Anna rootille uusi salasana ja vahvista se. Kirjaudu rootin bashista ulos komennolla exit ja kokeile komennolla su - ja antamalla juuri asettamasi rootin salasana. Jos löysit itsesi takaisin bashin komentokehoitteeseen, jossa käyttäjä on root ja ennen vilkkuvaa kursoria on #, niin kaikki on hyvin. Seuraavaksi voit alkaa kirjautumaan aina suoraan root-tunnuksellasi – paitsi jos sinulla on tarvetta tavis-userille.