Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: reichl - 09.07.09 - klo:22.14
-
Haluaisin muokata etc/hosts -tiedostoa skriptin kautta.
Yritin seuraavaa:
echo salasana | sudoedit -S echo "127.0.0.1 uusi" >> /etc/hosts
tai
echo salasana | sudo -S -e echo "127.0.0.1 uusi" >> /etc/hosts
Seurauksena viesti: lupa evätty.
Komennolla
sudo pico /etc/hosts
pääsen muokkaamaan tiedostoa picolla annettuani salasanan. Mikä tässä on erona?
hosts oikeudet = 644.
Lisäsin myös etc/sudoers -tiedostoon rivin
kayttaja ALL=(ALL) sudoedit /etc/hosts
mutta sillä ei ollut mitään vaikutusta.
Kiitos jos joku osaa neuvoa :)
-
echo ja tee komennoilla onnistuu.
echo "haluttu asia" |sudo tee -a tiedosto
Nyt tuo epäonnistuu koska oikeudet loppuu >> tuohon.
eiköhän kohta joku ohjelmointiin paremmin perehtynyt kerro paremman tavan toteuttaa asia.
-
Olisi todella huonoa tietoturvaa kirjoittaa salasanoja selväkielisenä tekstinä mihinkään tiedostoon (eli tuohon sinun skriptiisi).
Kysymys: mikset aja sitä skriptiä sudona? silloin kaikki skriptissä ajetut komennot voi suorittaa ilman tuota sudoa sillä ne saavat automaattisesti "isäntäprosessin" oikeudet...
-
Tarkoitus on kyllä laittaa salasana eri tiedostoon josta se sitten luetaan, mutta haluaisin saada tämän ensin toimimaan näin. En voi ajaa sudona, koska tarvitsee luoda kansioita joiden omistajaksi tulee tavallinen käyttäjä. Paitsi jos muuttujan välittäminen tiedostosta toiseen onnistuu? Kun käyttäjä syöttää muuttujan arvon tavallisena käyttäjänä ajettavaan skriptiin, niin saanko sen välitettyä sudona ajettavaan skriptiin? Tai voinko sudona ajettavassa skriptissä määrittää, että luotavan kansion omistajaksi tulee joku tietty käyttäjä? En tiedä mikä olisi paras tapa tehdä asia.
Kokeilin näitä kahta:
echo salasana | echo "127.0.0.1 uusi" | sudo -S tee -a /etc/hosts
herjasi väärästä salasanasta (luki sen luultavasti jälkimmäisestä echosta)
echo salasana | echo "127.0.0.1 uusi" >> sudo -S tee -a /etc/hosts
ei tullut virheilmoitusta, mutta tiedostoon ei myöskään kirjoittunut mitään.
Tämä kyllä toimii
echo "127.0.0.1 uusi" | sudo tee -a /etc/hosts
-
Tai voinko sudona ajettavassa skriptissä määrittää, että luotavan kansion omistajaksi tulee joku tietty käyttäjä? En tiedä mikä olisi paras tapa tehdä asia.
Onnistuuko, jos luo ensin kansion ja sitten vaihtaa sen omistajan? Tosin melko tökerö ratkaisu olisi :-[
-
Onnistuuko, jos luo ensin kansion ja sitten vaihtaa sen omistajan? Tosin melko tökerö ratkaisu olisi :-[
Ei lähellekään niin tökeröä kuin sudon käyttäminen skriptissä.
-
Onnistuuko, jos luo ensin kansion ja sitten vaihtaa sen omistajan? Tosin melko tökerö ratkaisu olisi :-[
Ei lähellekään niin tökeröä kuin sudon käyttäminen skriptissä.
Samaa mieltä, ehdottomasti chown -komentoa kehiin vaan mieluummin...
-
Selvä, chownia siis. Kiitos.
-
Onnistuuko, jos luo ensin kansion ja sitten vaihtaa sen omistajan? Tosin melko tökerö ratkaisu olisi :-[
Ei lähellekään niin tökeröä kuin sudon käyttäminen skriptissä.
Kyllä sudoa voi käyttää scriptissäkin, mutta salasanojen näyttäminen scriptissä on huonoa tapaa.
Roottina voi ajaa sudo käskyn, kun haluaa vähentää oikeuksia:
sudo su
whoami
sudo -u tavantallaaja whoami
whoami
exit
Tavantallaajan tilalle haluamasi käyttäjätunnus. Whoami tulostaa käyttäjän, jolla ajetaan ko. käskyä.
edit - siis roottina ajetut sudo-käskyt eivät salasanoja kysele.
-
Kyllä sudoa voi käyttää scriptissäkin, mutta salasanojen näyttäminen scriptissä on huonoa tapaa.
Äkkiseltään ei tule mieleen yhtäkään perusteltua syytä sudon käyttämiseksi skriptissä. Se lisää turhan riippuvuuden sudoon, vaatii virheenkäsittelyn tapaukselle jossa sudon suorittaminen epäonnistuu ja lisäksi sudon asetuksista riippuen se saattaa kysellä salasanaa joka kerta erikseen. Muitakin ongelmia saattaa olla mutta nämä tulivat mieleen heti ilman tarkempaa miettimistä.
Jos skripti oikeasti tarvitsee pääkäyttäjän oikeuksia niin silloin on luontevinta että skripti tarkistaa käynnistyessään oikeudet ja lopettaa toiminnan heti jos tarvittavia oikeuksia ei ole.
Roottina voi ajaa sudo käskyn, kun haluaa vähentää oikeuksia:
sudo su
whoami
sudo -u tavantallaaja whoami
whoami
exit
Tuo ei toimi tuollaisenaan skriptinä (eikä varmaan ollut tarkoitettukaan toimimaan) sillä ensimmäinen rivi pysäyttää skriptin suorituksen siksi aikaa kunnes siinä aloitetusta pääkäyttäjän istunnosta poistutaan. Sen jälkeen loppu skripti suoritetaan samoilla oikeuksilla kuin se on alunperinkin ajettu. Jos skriptin suorittaa tavantallaaja niin tuo tulostaa kolme kertaa tavantallaaja. Jos sen suorittaa joku muu jolla ei ole oikeuksia tavantallaajaksi niin skriptin suoritus epäonnistuu siinä kohtaa ja tapahtunut virhe pitäisi käsitellä jollakin tavalla.
Jos oikeuksia pitää väliaikaisesti tiputtaa niin se onnistuu myös komennolla su. Hyvin harvoin tuohon on kuitenkaan tarvetta enkä nyt keksi yhtäkään kunnollista esimerkkiä jossa tuohon olisi tarvetta. Porosoftan (proprietary software) ajamisessa se voi tietysti olla tarpeen.
-
Kyllä sudoa voi käyttää scriptissäkin, mutta salasanojen näyttäminen scriptissä on huonoa tapaa.
Äkkiseltään ei tule mieleen yhtäkään perusteltua syytä sudon käyttämiseksi skriptissä. Se lisää turhan riippuvuuden sudoon, vaatii virheenkäsittelyn tapaukselle jossa sudon suorittaminen epäonnistuu ja lisäksi sudon asetuksista riippuen se saattaa kysellä salasanaa joka kerta erikseen. Muitakin ongelmia saattaa olla mutta nämä tulivat mieleen heti ilman tarkempaa miettimistä.
Jos skripti oikeasti tarvitsee pääkäyttäjän oikeuksia niin silloin on luontevinta että skripti tarkistaa käynnistyessään oikeudet ja lopettaa toiminnan heti jos tarvittavia oikeuksia ei ole.
Minun mielestäni on scriptissä perusteltua käyttää sudoa, kun scriptin oletetaan käytettävän pääkäyttäjän oikeuksin, mutta jostain syystä halutaan alentaan tiettyjen käskyjen kohdalla oikeuksia tavan tallaanjan oikeuksiin. Perustelunani on tälle, että root-oikeuksia tulee käyttää mahdollisimman vähän. Haittana tietenkin tulee, ettei näistä scripteistä välttämättä tule hirvittävän siirrettäviä.
Tosin oletan sinun uninstalloineen kaikki sudoon viittaavat, ja laittaneen itsellesi turvallisen root-tilin, jotta järjestelmäsi on sellainen kuin haluat. :P
Huomioitavaa on myöskin, ettei riippuvuus sudoon Ubuntussa haittaa, koska se taitaa tulla jopa minimalistisessa järjestelmässäkin vakiona. (Tosta minimalistisesta järjestelmästä en ole ihan 100 varma, kun en ole asentanut sitä, mutta kaikissa perus Ubuntuissa se tulee ainakin).
Roottina voi ajaa sudo käskyn, kun haluaa vähentää oikeuksia:
sudo su
whoami
sudo -u tavantallaaja whoami
whoami
exit
Tuo ei toimi tuollaisenaan skriptinä (eikä varmaan ollut tarkoitettukaan toimimaan) sillä ensimmäinen rivi pysäyttää skriptin suorituksen siksi aikaa kunnes siinä aloitetusta pääkäyttäjän istunnosta poistutaan. Sen jälkeen loppu skripti suoritetaan samoilla oikeuksilla kuin se on alunperinkin ajettu. Jos skriptin suorittaa tavantallaaja niin tuo tulostaa kolme kertaa tavantallaaja. Jos sen suorittaa joku muu jolla ei ole oikeuksia tavantallaajaksi niin skriptin suoritus epäonnistuu siinä kohtaa ja tapahtunut virhe pitäisi käsitellä jollakin tavalla.
Joo, se ei ollut scripti vaan esimerkki.
Jos oikeuksia pitää väliaikaisesti tiputtaa niin se onnistuu myös komennolla su. Hyvin harvoin tuohon on kuitenkaan tarvetta enkä nyt keksi yhtäkään kunnollista esimerkkiä jossa tuohon olisi tarvetta. Porosoftan (proprietary software) ajamisessa se voi tietysti olla tarpeen.
Joo, kyllä sen voi su:llakin toteuttaa, mutta kyllä se onnistuu sudollakin. Tuohon oikeuksien alennukseen ainakin itse tarvitsin yhdessä scriptissä, kun halusin mountata iso-tiedostoja loopilla (joo löytyy alemmilla oikeuksilla mounttaava kikkarekin, mutten halunnut asentaa sitä). ja käsitellä niistä löytyviä tiedostoja normaalilla käyttäjällä. Olisin sen voinut kyllä tehdä su:llakin, mutta Ubuntussa on valmiiksi asennettu kätevä sudo:kin, joten sitä ei tarvinnut käyttää.
Tuskin tulen vastaamaan vastauksiin (ainakaan toivomani mukaan), koska tuskin pääsemme väittelyissä puusta pitään...
-
Minun mielestäni on scriptissä perusteltua käyttää sudoa, kun scriptin oletetaan käytettävän pääkäyttäjän oikeuksin, mutta jostain syystä halutaan alentaan tiettyjen käskyjen kohdalla oikeuksia tavan tallaanjan oikeuksiin.
Minusta tuo on äärimmäisen harvinainen tilanne. Tuollaisessa tilanteessa tulee äkkiä mieleen että pitäisikö skriptejä olla yhden sijasta vähintään kaksi joista vain toinen vaatii pääkäyttäjän oikeudet ja toinen hoitaa tavallisen käyttäjän oikeuksilla suoritettavat asiat.
Perustelunani on tälle, että root-oikeuksia tulee käyttää mahdollisimman vähän. Haittana tietenkin tulee, ettei näistä scripteistä välttämättä tule hirvittävän siirrettäviä.
Nii-in. Minusta skriptit kannattaa kirjoittaa yleensä mahdollisimman helposti siirrettäviksi.
Tosin oletan sinun uninstalloineen kaikki sudoon viittaavat, ja laittaneen itsellesi turvallisen root-tilin, jotta järjestelmäsi on sellainen kuin haluat. :P
Miksi ihmeessä? Sudo on hyvä työkalu siihen mihin se on tarkoitettu. Sitä ei ole tarkoitettu skripteihin.
Huomioitavaa on myöskin, ettei riippuvuus sudoon Ubuntussa haittaa, koska se taitaa tulla jopa minimalistisessa järjestelmässäkin vakiona.
Vastaavasti voitaisiin sanoa ettei bash-skriptien suorittamisesta /bin/sh-tulkilla ole haittaa koska se on lähes aina symbolisesti linkattu /bin/bash:iin. Paitsi tietysti Ubuntussa jossa se on linkattu /bin/dash:iin jonka kanssa bash-skriptit eivät toimi. Jos skriptin tekee oikein niin se toimii kaikissa järjestelmissä.
Joo, kyllä sen voi su:llakin toteuttaa, mutta kyllä se onnistuu sudollakin.
Kyllä naulankin voi hakata vasaran sijasta korkokengällä ja ruuvit vääntää meisselin sijasta keittiöveitsellä. Vaikka jokin asia onnistuu väärälläkin työkalulla niin sen käyttäminen ei kuitenkaan ole järkevää.
Olisin sen voinut kyllä tehdä su:llakin, mutta Ubuntussa on valmiiksi asennettu kätevä sudo:kin, joten sitä ei tarvinnut käyttää.
Miksipä sitä tekisi skriptistä sellaisen että se toimisi kaikkialla kun samalla vaivalla voi rajoittaa sen toiminnan vain tietyllä tavalla konfattuihin järjestelmiin. Voi olla että sopivasti konffatulla sudolla tuo ei toimi kaikissa *buntuissakaan (en tunne sudon asetuksia riittävän hyvin jotta osaisin sanoa mitään varmasti).
Tuskin tulen vastaamaan vastauksiin (ainakaan toivomani mukaan), koska tuskin pääsemme väittelyissä puusta pitään...
Riippuu ihan siitä osaatko myöntää olevasi väärässä ;)
-
Miksi ihmeessä? Sudo on hyvä työkalu siihen mihin se on tarkoitettu. Sitä ei ole tarkoitettu skripteihin.
Mielestäni tämä on turhan mustavalkoinen yleistys. Eihän sudon käytölle yleensä ole estettä esim. interaktiivisissa skripteissä. Sudon etuinahan on (su:hun verrattuna) on mm. parempi lokitus ja mahdollisuus antaa käyttäjille sudo oikeus vain tiettyihin komentoihin (jopa ilman salasanaa) jos tällaiseen jostain syystä on tarvetta (vaikkei itse heti keksisikään miksi, ei se tarkoita etteikö tällaista tilannetta voisi olla).
Sinänsähän on toki useimmiten järkevämpää ajaa koko skriptiä pääkäyttäjänä, jos skripti tarvitsee johonkin niitä oikeuksia (ja mahdollisesti pudottaa oikeuksia tavalliseksi käyttäjäksi skriptin sisältä), kuten tässä ketjussa on mainittukin.