Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: sjh - 28.05.14 - klo:11.13

Otsikko: Terminal-komennot tiedostoksi
Kirjoitti: sjh - 28.05.14 - klo:11.13
Hei! Onko mahdollista suorittaa komentojonoja suoraan tiedostosta klikkaamalla (jos laittaa tekstieditoriin), niinkuin Windowsissa bat-tiedostot? Googlella selailin, mutta en löytänyt, kun että alkuun pitää ilmeisesti laittaa "#!/bin/bash". Millä tiedostopäätteellä tiedoston saa suoritettua?
Otsikko: Vs: Terminal-komennot tiedostoksi
Kirjoitti: raimo - 28.05.14 - klo:11.19
Millä vaan päätteellä, tai ilman päätettä. Tiedostopäätteellä ei ole väliä Linuxissa. Kyse on tiedoston oikeuksista, eli tiedostolle pitää antaa ajo-oikeus, tosin ilman sitäkin onnistuu, mutta ei nyt puututa siihen.

Ajo-oikeus:
Koodia: [Valitse]
chmod +x tiedosto
Päätteestä ko. tiedosto käynnistetään näin:
Koodia: [Valitse]
./tiedosto
Otsikko: Vs: Terminal-komennot tiedostoksi
Kirjoitti: sjh - 28.05.14 - klo:11.33
Millä vaan päätteellä, tai ilman päätettä. Tiedostopäätteellä ei ole väliä Linuxissa. Kyse on tiedoston oikeuksista, eli tiedostolle pitää antaa ajo-oikeus, tosin ilman sitäkin onnistuu, mutta ei nyt puututa siihen.

Ajo-oikeus:
Koodia: [Valitse]
chmod +x tiedosto
Päätteestä ko. tiedosto käynnistetään näin:
Koodia: [Valitse]
./tiedosto


Oon aika tumpelo linuxin kanssa ja en ihan tajunnut mihin kohtaan kyseiset pitäisi kirjoittaa. Tässä on ne komennot, jotka pitäisi saada suoritettua tiedostosta:

Koodia: [Valitse]
sudo add-apt-repository ppa:noobslab/icons
sudo apt-get update
sudo apt-get install win-icons

sudo add-apt repository ppa:noobslab/themes
sudo apt-get update
sudo apt-get install win-xp-theme

Tosin tuossa "sudo add" jälkeen pyytää aina salasanan, voiko senkin määrittää valmiiksi. Eli millasen tekstitiedoston teen? :)
Otsikko: Vs: Terminal-komennot tiedostoksi
Kirjoitti: JaniAlander - 28.05.14 - klo:22.38
Sudo vaatii salasanan ja käsittääkseni sitä ei tosiaan saa automatisoitua ihan noin vaan.

Mutta siis tosiaan yksinkertaisimmillaan pistät vain nuo käskyt ihan tavalliseen ascii-muotoiseen tekstitiedostoon, ja tallennat sen. Sitten voit jos et halua tuota chmod käskyä käyttää niin ihan tiedostonhallinnalla muuttaa niitä oikeuksia, eli klikkaat oikealla napilla tiedostoa ja valikkoon ominaisuudet, ja sieltä oikeudet, ja sieltä että suoritettava.

Nopeampaa on vaan käyttää sitä chmodia.

Sen jälkeen vaan päätteeseen tosiaan ./tiedostonnimi
Otsikko: Vs: Terminal-komennot tiedostoksi
Kirjoitti: ajaaskel - 26.06.14 - klo:21.27
Tekstieditori auki, kirjoittelet nuo peräkkäin, mahdollisesti/mielellään laitat ensimmäiselle riville sen "#!/bin/bash" ja talletat sen jollain nimellä, vaikka "komennot" tai minkä vain helposti muistat.  Ei tarvitse "tiedostotyyppiä" ja nimikin voi olla melkein mitä vain.

Koodia: [Valitse]
#!/bin/bash
sudo add-apt-repository ppa:noobslab/icons
sudo apt-get update
sudo apt-get install win-icons

sudo add-apt repository ppa:noobslab/themes
sudo apt-get update
sudo apt-get install win-xp-theme

Linux ei suostu ajamaan tuota komentotiedostoasi ellet kerro sille erikseen että tuon "komennot" tiedoston saa ajaa:

Koodia: [Valitse]
chmod +x komennot
Tuon jälkeen sen voi ajaa kun olet samassa hakemistossa näin:

Koodia: [Valitse]
./komennot

Otsikko: Vs: Terminal-komennot tiedostoksi
Kirjoitti: Postimies - 21.08.14 - klo:19.56
sudo salasana kyselyistä pääsee eroon, kun poistaa sudo:t ja ajaa scriptin root-oikeuksilla.
Koodia: [Valitse]
$sudo su -
#./komentojono
#exit

Taas on hieman vierähtänyt aikaa kun viimeksi olen Ubuntua käyttänyt. sudo su vai sudo su -. Noilla on se pieni ero, että su - (super user) komennolla tulee kotikansioksi /root ja su komennolla kotikansio on käyttäjän kotikansio. Eli tuo pieni viiva on tärkeä. "Oikeassa" linuxissa root oikeudet otetaan käyttöön su - komennolla. Sudo:lla ongelmia myös vähän pidemmissä komennoissa. Muistaakseni ei edes sudo komento1 && komento2 ei toimi. Tuossa komento2 suoritetaan jos komento1 on suoritettu onnistuneesti.
Otsikko: Vs: Terminal-komennot tiedostoksi
Kirjoitti: kuutio - 21.08.14 - klo:20.38
sudo salasana kyselyistä pääsee eroon, kun poistaa sudo:t ja ajaa scriptin root-oikeuksilla.
Koodia: [Valitse]
$sudo su -
#./komentojono
#exit

Taas on hieman vierähtänyt aikaa kun viimeksi olen Ubuntua käyttänyt. sudo su vai sudo su -. Noilla on se pieni ero, että su - (super user) komennolla tulee kotikansioksi /root ja su komennolla kotikansio on käyttäjän kotikansio. Eli tuo pieni viiva on tärkeä. "Oikeassa" linuxissa root oikeudet otetaan käyttöön su - komennolla. Sudo:lla ongelmia myös vähän pidemmissä komennoissa. Muistaakseni ei edes sudo komento1 && komento2 ei toimi. Tuossa komento2 suoritetaan jos komento1 on suoritettu onnistuneesti.
Rootin shellin avaaminen tuon takia on tarpeetonta, koska skriptin voi ajaa suoraan sudolla "sudo ./komentojono" (tai "sudo -i ./komentojono", jos tarvitaan kaikki rootin ympäristömuuttujat). Halutessaan tuolle voi tehdä oman lyhyen aliaksen tai vaikka sallia tietyille käyttäjille oikeuden ajaa komentojono ilman salasanakyselyjä.

su:ta ei myöskään ole tarpeen ajaa *buntuissa sudon kautta, vaan vastaavan saa aikaan esim:
su == sudo -sH
su - == sudo -i
(Nämäkin voi laittaa aliaksiksi halutessaan, jos on tottunut su:ta käyttämään..."Oikeista" linuxeista on turha puhua, sudo on nimittäin vanhempi kuin linux, ja on sitä käytetty laajasti jo unixeissa ja niissä "oikeissakin" linuxeissa)

useammankin komennon ajaminen kyllä onnistuu sudolla, esim:
sudo sh -c 'whoami && whoami'
sudo whoami && sudo whoami
Otsikko: Vs: Terminal-komennot tiedostoksi
Kirjoitti: qwertyy - 21.08.14 - klo:20.49
sudo su on siitä varmaankin perusteltu valinta, että silloin ei ainakaan oman käsityksen mukaan tule ns. "timeout" vastaan komentoja suorittaessa. Eli skripti menee kerralla loppuun asti.
Otsikko: Vs: Terminal-komennot tiedostoksi
Kirjoitti: kuutio - 21.08.14 - klo:20.55
sudo su on siitä varmaankin perusteltu valinta, että silloin ei ainakaan oman käsityksen mukaan tule ns. "timeout" vastaan komentoja suorittaessa. Eli skripti menee kerralla loppuun asti.
Ei ne timeoutit tule vastaan, kun koko skripti ajetaan roottina. (siis skriptin kaikki komennot ajetaan roottina, jos käynnistät skriptin sudolla)
Otsikko: Vs: Terminal-komennot tiedostoksi
Kirjoitti: JaniAlander - 21.08.14 - klo:21.50
Taas on hieman vierähtänyt aikaa kun viimeksi olen Ubuntua käyttänyt. sudo su vai sudo su -. Noilla on se pieni ero, että su - (super user) komennolla tulee kotikansioksi /root ja su komennolla kotikansio on käyttäjän kotikansio. Eli tuo pieni viiva on tärkeä. "Oikeassa" linuxissa root oikeudet otetaan käyttöön su - komennolla. Sudo:lla ongelmia myös vähän pidemmissä komennoissa. Muistaakseni ei edes sudo komento1 && komento2 ei toimi. Tuossa komento2 suoritetaan jos komento1 on suoritettu onnistuneesti.

Ei muuta sanottavaa mutta su EI TARKOITA super user:ia, vaan substitute user. Su tyhjänä jos olet wheel groupin jäsen antaa juu rootin oikeudet, mutta sitä voi käyttää myös niin että jos koneella on toinen käyttäjätunnus (tai useampi) niin sen kuin vaan su toinentunnus ja perään salasana ja olet toisena käyttäjänä sisällä.

Tuo tietoni wheel groupista on FreeBSD:n puolelta peräisin, mutta käsittääkseni sama pätee Linuxeihinkin.
Otsikko: Vs: Terminal-komennot tiedostoksi
Kirjoitti: SuperOscar - 21.08.14 - klo:22.11
Tuo tietoni wheel groupista on FreeBSD:n puolelta peräisin, mutta käsittääkseni sama pätee Linuxeihinkin.

Ei mitenkään yleisesti, käsittääkseni. Debianissa ja openSUSEssa wheel on ja ainakin edellisessä sitä johonkin käytetäänkin (/usr/local on ainakin sen omistuksessa), mutta ei sitä kaikissa kokeilemissani distroissa ollut olemassa edes /etc/groupissa.
Otsikko: Vs: Terminal-komennot tiedostoksi
Kirjoitti: raimo - 21.08.14 - klo:22.14
Tuo tietoni wheel groupista on FreeBSD:n puolelta peräisin, mutta käsittääkseni sama pätee Linuxeihinkin.
Ubuntussa tuota wheel ryhmää ei ole oletuksena ollenkaan. sudo ryhmään kuuluvilla on sudo:n käyttöoikeus. Aikaisemmin muistini mukaan admin ryhmä oli Ubuntussa se joka oli ko. käytössä, mutta se muuttui sittemmin sudo ryhmäksi.

Mutta esim. Archissa tuo wheel ryhmä on.
Otsikko: Vs: Terminal-komennot tiedostoksi
Kirjoitti: kuutio - 21.08.14 - klo:22.23
Tuo tietoni wheel groupista on FreeBSD:n puolelta peräisin, mutta käsittääkseni sama pätee Linuxeihinkin.
gnu:n su (mikä linuxeissa on käytössä) ei käytä wheel-ryhmää su "autentikointiin" (eli tarkista kenellä on oikeus ryhtyä rootiksi), tuo wheel ryhmä on unixien peruja (jollianen BSD:kin on).

Jotkut linuxit kyllä käyttää wheel ryhmää esim. sudo autentikointiin, muistaakseni oli aikoinaan Debianissakin käytössä.
Otsikko: Vs: Terminal-komennot tiedostoksi
Kirjoitti: JaniAlander - 21.08.14 - klo:22.27
Enpäs tiennyt tuota :) Luulin että Linuxissa olisi vastaava käytös pidetty...
Otsikko: Vs: Terminal-komennot tiedostoksi
Kirjoitti: raimo - 21.08.14 - klo:22.28
Jotkut linuxit kyllä käyttää wheel ryhmää esim. sudo autentikointiin, muistaakseni oli aikoinaan Debianissakin käytössä.
Arch:ssa se on juuri siinä käytössä. Eli wheel -ryhmän jäsenet voi käyttää siinä sudoa.
Otsikko: Vs: Terminal-komennot tiedostoksi
Kirjoitti: JaniAlander - 21.08.14 - klo:22.29
Sinänsä tuo on melko turha vaatimus, ainakin jos samalta fyysiseltä koneelta käytetään, joka tapauksessa tarvitaan rootin salasana jos ne oikeudet haluaa...

PC-BSD:ssä jota olen käytellyt on oletuksena sekä sudo, että root tili. Eli isommilla oikeuksilla voi käskyjä suorittaa sudolla, tai jos enemmän tekee niin su:lla tai kirjautumalla virtuaalikonsoliin roottina...
Otsikko: Vs: Terminal-komennot tiedostoksi
Kirjoitti: kuutio - 21.08.14 - klo:22.42
Enpäs tiennyt tuota :) Luulin että Linuxissa olisi vastaava käytös pidetty...
Tämä oli lähinnä Stallmanin (ideologinen) valinta:
http://www.gnu.org/software/coreutils/manual/html_node/su-invocation.html#index-fascism-2365

Lainaus
PC-BSD:ssä jota olen käytellyt on oletuksena sekä sudo, että root tili. Eli isommilla oikeuksilla voi käskyjä suorittaa sudolla, tai jos enemmän tekee niin su:lla tai kirjautumalla virtuaalikonsoliin roottina...
Ei tuo harvinaista ole, mutta *buntuissa siis root shellinkin saa kyllä auki yksistään sudolla ("sudo -sH" tai "sudo -i") eikä erilliselle root-tilille (tai tarkemmin rootin salasanan asettamiselle) ole tarvetta.

Otsikko: Vs: Terminal-komennot tiedostoksi
Kirjoitti: JaniAlander - 21.08.14 - klo:22.45
Kiva tietää ite olen Ubuntu sukuisissa käyttänyt sellaisiin sitä sudo su:ta.

Tuo Stalmanin kanta oli muuten tietoturvamielessä jokseenkin järjetön, ainakin etäkäytössähän tuo wheel group vaatimus tarjoaa tiettyä suojaa vaikka joku olisi sen root tunnuksen saanut haltuun. Miksei yksintein olisi pistänyt su:ta olemaan kysymättä MITÄÄN salasanaa, sittenhän massoilla olisi ollut vielä enemmän pääsyä järjestelmiin...
Otsikko: Vs: Terminal-komennot tiedostoksi
Kirjoitti: kuutio - 21.08.14 - klo:23.22
Tuo Stalmanin kanta oli muuten tietoturvamielessä jokseenkin järjetön, ainakin etäkäytössähän tuo wheel group vaatimus tarjoaa tiettyä suojaa vaikka joku olisi sen root tunnuksen saanut haltuun. Miksei yksintein olisi pistänyt su:ta olemaan kysymättä MITÄÄN salasanaa, sittenhän massoilla olisi ollut vielä enemmän pääsyä järjestelmiin...
Kyseessä on varmaan ollut osittain se, ettei RMS halunnut wheel ryhmää "sisäänrakennettuna" su komentoon.

Yleensä, jos joku saa root-salasanan haltuun, niin ei silloin voi oikein luottaa, että wheel ryhmän jäsenten salasanatkaan on enää turvallisia.

Kyllähän tuota toimintoa voi gnu:n su-komennollakin emuloida (ainakin nykyisin) pamin avulla (editoimalla /etc/pam.d/su -tiedostoa)