Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: java järjestelmän valvojan cmd avaus

Sivun loppuun

etsubu [24.01.2011 15:30:25]

#

Hei!

Olin tässä jokunen aika sitten koittanut saada java ohjelmaani käyttämään Runtimea järjestelmänvalvojan oikeuksilla. Olin löytänyt tavan avata uusi cmd tarvittavilla oikeuksilla:

runas /user:Administrator cmd

Nyt vain olin jäänyt miettimään miten pystyisin annettuani Runtimelle tämän tekstin ja salasanan nappaamaan uuden cmd ikkunan kiinni uuteen Runtimeen. Tämän olisi tarkoitus toimia niin, että ohjelma saisi käyttöönsä Runtimen jolla olisi järjestelmänvalvojan oikeudet.

Mod. huom: älä katko rivejäsi!

maka78 [24.01.2011 21:59:56]

#

Miksi se command prompt ruutu pitäisi erikseen avata järkkärinä?
Eikös tuon periaatteessa pitäisi onnistua:

runas /user:järkkäri "java x:\polku\luokka.class"

Metabolix [24.01.2011 22:18:24]

#

Mitä lopulta haluat tehdä? Saattaisi olla yksinkertaisempaa ajaa runas-komennolla suoraan haluamasi toiminto ilman ylimääräisiä kikkailuja.

etsubu [25.01.2011 14:53:36]

#

Anteeksi että en ilmaissut asiaani selvästi.
Eli tarkoitus olisi, että olettaen ohjelman käyttäjän tunnuksen valtuudet ovat rajoitetut eli kaikkia cmd komentoja ei voi suorittaa, niin ohjelmani pitäisi saada käyttöönsä järjestelmänvalvojan cmd, jotta se voisi suorittaa kaikkia mahdollisia komentoja.
Toivomuksena olisi, että sitä voisi käyttää niin kuin javassa yleensäkkin Runtimea.

hohoo [01.02.2011 14:47:11]

#

Eikö kannattaisi tehdä bat-tiedosto, joka suorittaa Java-ohjelman, ja klikata sitä bat-tiedostoa oikealla hiirennapilla -> suorita järjestelmänvalvojana?

Metabolix [01.02.2011 14:50:45]

#

Minulle on edelleenkin epäselvää, miten sinusta käytetään "yleensäkkin Runtimea". Missään tapauksessa et varmaankaan saa luotua uutta Runtime-objektia, ja vaadittava vaihtoehtoinen kikka riippuu paljon siitä, mitä tarkalleen haluat tehdä.

etsubu [04.02.2011 20:22:06]

#

hohoo kiitos ehdotuksestasi, mutta tämä ei ollut aivan mitä hain.

Joten selitän nyt aivan tarkasti mitä halusin tehdä: Tarkoitus olisi tehdä ja ohjelma joka voisi windowsissa ajaa shutdown.exe komennon käyttäjällä jolla ei ole siihen tarvittavia oikeuksia. Olin miettinyt, että pystyisikö sen javalla ajamaan järjestelmän valvojan oikeuksilla. Seuraavan näköisellä tavalla.

Runtime.getRuntime().exec(komento);

Joka sammuttaisi koneen. Tarkoitus on kuitenkin, että tämän komennon ajaa oma ohjelmani ei bat file.

Kiitoksia silti vastauksista.

Mod. huom: älä katko rivejäsi vaan tee viestiin kunnollinen kappalejako!

Metabolix [04.02.2011 20:25:30]

#

No niin. Mikset vain lisää tuohon komennon alkuun automaattisesti tekstiä "runas /user:Administrator"?

etsubu [06.02.2011 13:14:04]

#

Jos laittaisin siihen tuon tekstin, cmd kysyisi administratorin salasanaa ja runtimessä on sellainen ongelma, että joka kerta kun sille antaa komennon se ei anna sitä vanhalle cmd vaan luo uuden. Muuten voisin aluksi laittaa komennon runas /user:Administrator cmd
ja sitten salasanan, mutta niin ei pysty tekemään.
Joten minun pitäisi saada annettua administratorin cmd shutdown.exe komento yhdellä rivillä, eikä tämä taida olla mahdollista.

Metabolix [06.02.2011 13:41:19]

#

No entä sellainen vaihtoehto, että käynnistät tuon cmd-prosessin ja syötät sille komentoja? (En valitettavasti voi testata tätä itse Windowsissa.)

Process cmdProcess = Runtime.getRuntime().exec("runas /user:Administrator cmd");
PrintStream cmdStream = new PrintStream(cmdProcess.getOutputStream());
cmdStream.println("notepad C:\\testfile.txt");
cmdStream.println("shutdown");

etsubu [07.02.2011 16:00:32]

#

Tuota lähestymis tapaa en ollut harkinnutkaan, mutta sekään ei valitettavasti toiminut.
Kokeilin sitä tällä tavalla:

Process cmdProcess = Runtime.getRuntime().exec("runas /user:Administrator cmd");
PrintStream cmdStream = new PrintStream(cmdProcess.getOutputStream());
cmdStream.println(salasana);
cmdStream.println("shutdown.exe -s");

Virhe raporttia se ei printannut, mutta kirjoittaminen ei mennyt perille tai se ei muuten vain reagoinut siihen.
Olin alkanut kuitenkin miettimään, että voisi kokeilla sittenkin laittaa
ohjelma luomaan bat file joka suorittaisi tämän, mutta en saanut sitten bat filea sitten syöttämään salasanaa vaan se jäi odottamaan, että minä olisin kirjoittanut sen siihen.
Tiedosto näytti tältä(kohdassa * se jäi odottamaan, että kirjoitan salasanan sitten suoritti loput komennot):

runas /user:Administrator cmd
*
salasana

Tämä tietenkään ei tekisi muuta kuin avaisi vain sen administratorin cmd. Joten jos nyt suosiolla uskon, että eipä tämä taida olla minun taidoilla mahdollista.

Hennkka [07.02.2011 16:22:30]

#

Eikös useimmissa kielissä data pidä "huuhdella"? Eli

cmdStream.flush();

maka78 [07.02.2011 21:39:12]

#

Tuli mieleen et tuon salasanan syöttöönhän vois käyttää myöskin java.Robot luokkaa ;)

Metabolix [07.02.2011 21:54:20]

#

Jos tuo runas avaa graafisen ikkunan, et voi syöttää sille salasanaa println:llä. Ja et kai tosissasi aio tehdä ohjelmaa, joka sisältää salasanan valmiiksi?

Grez [07.02.2011 22:06:12]

#

Ainakaan XP:ssä se ei avaa graafista ikkunaa vaan kysyy komentorivillä salasanaa.

Ja itse aiheeseen, eikö olisi miljoona kertaa helpompaa vaan muokata järjestelmän asetuksia niin, että normaalikäyttäjälläkin on oikeus ajaa kone alas?

etsubu [08.02.2011 18:27:45]

#

Itse asiassa muuttaisin mielelläni käyttäjän valtuuksia, mutta tämä ohjelma olisi menossa kouluni ATK luokkaan niin, että opettajien koneelta saa sammutettua muut koneet. Joten laitan varmaan ohjelman sammuttamaan koneen visuaalisesti Robot kirjaston avulla vaikka se niin epäkäytännöllistä onkin.

Grez [08.02.2011 18:55:28]

#

Windowsissahan on vakiona toiminto että pääkäyttäjä voi tehdä etäsammuttamisen... No, mutta, saa asiat tehdä vaikeastikin.

etsubu [08.02.2011 19:23:09]

#

Tiedän sen kyllä, mutta ei se vaan toimi tuosta vain aluksi pitäisi alkaa säätämään muita koneita jotta niille voi suorittaa sen komennon ja sitä en ollut saanut tehtyä. Ei muutenkaan huvittaisi ruveta koulun koneita sen enempää rassaamaan.

Macro [09.02.2011 17:05:03]

#

etsubu kirjoitti:

alkaa säätämään muita koneita jotta niille voi suorittaa sen komennon ja sitä en ollut saanut tehtyä.

No eikös sekin ole säätämistä, että laitat ohjelman jokaiselle koneelle, laitat sen käynnistymään koneen mukana ja saat sen vielä suorittamaan administrator-toimintoja ilman administrator-tunnuksia?

Grez [09.02.2011 18:57:37]

#

Niin ja jos nyt olet joka tapauksessa päättänyt, että sinne pitää laittaa oma softasi pyörimään, niin eikö olisi helpompaa pistää se softa käynnistymään itse admin oikalla ja sitten sen ei tarvitsisi tehdä mitään muuta kuin shutdown? Ja sen shutdowninkin tekisin mieluummin suoraan API-kutsulla kuin käyttämällä komentorivityökalua, joka kuitenkin toimii eri lailla eri kielisissä systeemeissä ja niin edelleen.

Kumpikin ehdottamani muutos helpottamisen ja järkevöittämisen lisäksi lisäisi tietoturvaakin suunnitelmaasi verrattuna.

Sitten vielä laittaisin sen serviceksi että toimii myös jos käyttäjä ei ole kirjautuneena.

Siis tämä projektisi on minun mielestäni "väärin" suunniteltu suunnilleen jokaisen asian suhteen, mitä vain mahdollista.

Tosin kaiken kaikkiaan, Microsofthan on jo laittanut Windowsiin valmiiksi tuon ehdotukseni mukaisen softan. :D

etsubu [09.02.2011 20:02:39]

#

Älä tuomitse projektiani, kun et tunne sitä...
Enkä nyt ollut kysynyt miten tämä asia pitäisi toteuttaa. Kysymykseni lukee keskustelun alussa ja nyt on jo todettu, että sitä ei saa toteutettua.

Grez [09.02.2011 21:57:49]

#

etsubu kirjoitti:

Älä tuomitse projektiani, kun et tunne sitä...

No, tietenkin kommentointini perustuu siihen mitä tässä threadissa olet kertonut.

etsubu kirjoitti:

Enkä nyt ollut kysynyt miten tämä asia pitäisi toteuttaa. Kysymykseni lukee keskustelun alussa

Sori, en suostu antamaan huonoja neuvoja. Sitä paitsi, jos et halua että asiasta keskustellaan, niin älä kysy keskustelupalstalla vaan jossain kyselypalvelussa.

etsubu [11.02.2011 15:41:28]

#

En mielestäni ole pyytänyt kommentointia projektiini ja asia josta toivoin neuvoja oli javalla järjestelmän valvojan cmd käyttäminen.
Joten älä ala kommentoimaan projektiani kun en ole sitä pyytänyt.

Blaze [11.02.2011 15:46:01]

#

Keskustelupalsta on siitä hauska paikka, että siellä keskustellaan, joskus myös asioista, jotka ei itteä miellytä. Sellaset kommentit voi vaikka jättää huomiotta, mut muita keskustelijoita on turha alkaa asiasta läksyttämään.

etsubu [11.02.2011 16:20:01]

#

Totta kyllä, mutta laittaessani keskustelun nimen keskustelun pitäisi olla kysymyksen suuntaista ei niin, että laitat asian josta haluat tässä ketjussa keskustella ja sitten saa viestejä jotka eivät liity ketjun aiheeseen.

Grez [11.02.2011 16:39:00]

#

Aihe on se mistä keskustellaan. Kaikki viestini ovat olleet relevantteja esittämääsi asiaan eli aiheeseen.

Mutta, jos ei ilmaiset neuvot kelpaa, niin senkus jatkat tietoturvareikien tekemistä parhaaksi näkemälläsi tavalla.

etsubu [14.02.2011 20:13:14]

#

Taas jatkat sanomalla, että teen tietoturva reikiä kun et edelleenkään tunne projektiani ja sen tietoturva ominaisuuksia. Pyydän kohteliaasti nyt, että et morkkaisi projektiani kun koitan tehdä jotain muuta kuin laskimia tai muuta turhaa.

Grez [14.02.2011 20:36:58]

#

Edelleen käyttäjän oikeustasolla pyörivä java-prosessi, joka kutsuu runas administrator ja osaa antaa salasanan on tietoturvareikä. Ja tällaista olet tässä ketjussa kertonut tekeväsi.

Sanot että en tunne projektiasi. No onko se minun vikani jos teet jotain muuta kuin mitä kerrot tekeväsi?

En ole arvostellut projektiasi sinänsä. Mutta olen sanonut, että tässä ketjussa kertomasi systeemi on tietoturvalta huono. Jos sinulla on salaista lisätietoa, jolla sen saa tietoturvalliseksi niin hyvä sinulle. Kuitenkaan siitä salaisesta tiedosta ei ole mitään hyötyä jollekulle muulle, joka ketjua lukee ja ehkä innostuu tekemään vastaavan. Siksi on erittäin tarpeellista tuoda esille, että kyseessä ei ole lähtökohtaisesti "hyvä ajatus".

Eli jos nyt haluat että en jakele täällä varoitusta (muille käyttäjille) niin laita ihmeessä selostus miten tuollaisen ohjelman tietoturvaongelmat projektissasi eliminoidaan.

etsubu [15.02.2011 22:04:13]

#

Olen pahoillani jos olen loukannut sillä sitä en ole tarkoittanut, mutta voi kai minä ne tietoturva suunnitelmat tännekkin laittaa.
1. Kyseisessä paikassa jonne ohjelma tulisi on käytössä epäviralliset ip osoitteet 11 alkuiset, jotka ovat pelkästään vahva suojaus, että ohjelmalle ei voi syöttää tietoja langattoman verkon ulkopuolelta.
2. Ohjelman kanssa kommunikointi tapahtuu kryptatuilla viesteillä.
3. Ohjelma ei voi tehdä muuta kuin sammuttaa tietokoneen tai kirjata käyttäjän ulos.
4.Yhdistyksen pitää tulla oikeasta ip osoitteesta.
5.Yhdistäjän pitää tietää salasana.
6.Yhdistys toimii vain tietyn kellon ajan sisällä.
Tuossa ovat ne tavat jotka olen nyt aluksi ottanut huomioon vieläkin puhun ystäväni kanssa muista suojaus tavoista, sillä tietoturvan kanssa pitää luonnollisesti luottaa siihen, että kaikki menee vikaan.
Jos jollekkin tulee nyt mieleen jokin lisäys niin se on tervetullut.

Grez kuten olit aiemmin sanonut, että windowsissa on olemassa remote shutdown jota olin tutkinut. Niin osaisitko sanoa mitä mahdollisesti voisin kokeilla kun koitan sammuttaa sillä toisen koneneen tulee vain viesti:
network path was not found
failed: ip
pystyn kyllä pingaamaan koneen ja katsomaan jaettuja tiedostoja. Eli ongelman täytyy siis olla asetuksissa. Löytäisitkö mitään korjaus tapaa, kun nätisti pyydän ja pahoittelen huonotuulisuuttani.

Metabolix [15.02.2011 22:13:34]

#

Grezin tarkoittama tietoturvariski ei varmaan ole se, että joku sammuttelisi koneita, vaan se, että tuosta ohjelmasta saa aika helposti nyhdettyä sen salasanan ulos esimerkiksi purkamalla ohjelman ja vaihtamalla sammutuksen tilalle vaikka komennon net send * <salasana>, jolla salasana tyypillisessä koulun verkossa päätyy sekunnin murto-osassa jokaisen koulun koneen ruudulle. (Yksi tyyppi yläasteella kokeilikin tätä komentoa, tosin ei salasanalla vaan huonolla vitsillä.)

Grez [15.02.2011 22:58:42]

#

Juuri kuten Metabolix sanoi.

etsubu kirjoitti:

Niin osaisitko sanoa mitä mahdollisesti voisin kokeilla kun koitan sammuttaa sillä toisen koneneen tulee vain viesti:
network path was not found
failed: ip
pystyn kyllä pingaamaan koneen ja katsomaan jaettuja tiedostoja. Eli ongelman täytyy siis olla asetuksissa.

En nyt kyllä osaa heti sanoa mikä voisi olla vikana sinulla, mutta itse kokeilin seuraavaa komentoa Windows 7:n komentorivillä. Tuo 192.168.2.7 on Windows XP-kone, mutta sillä ei pitäisi hirveästi olla merkitystä.

shutdown /s /t 0 /m \\192.168.2.7

Tämä sanoi että: 192.168.2.7: Access is denied.(5)

Lisäsin sitten tuonne 192.168.2.7 koneelle saman käyttäjätunnuksen samalla salasanalla kuin mikä minulla on tällä W7 koneella ja annoin sille järjestelmänvalvojan oikeudet. Sitten ajoin komennon uudestaan ja tuo toinen kone lähti saman tien sammumaan.

Ei varmaan olisi tarvinnut edes antaa noin rajuja oikeuksia. Ihan vaikka rajoitettu käyttäjä ja sille erikseen oikeus koneen sammuttamiseen.

etsubu [16.02.2011 19:50:29]

#

Juu näyttäähän tämä tapa toimivan eli kiitos siitä.
Osaisitteko muuten neuvoa miten saisin tehtyä bat filen joka tekisi tämän muille koneille. Kuitenkaan ei varmaan ole mahdollista käyttää saman nimisiä käyttäjiä, sillä opettajilla on omat tunnukset ja oppilailla omat joilla he kirjautuvat jolloin nimet eivät täsmää. Eli keksittekö mitään järkevää tapaa, että opettajan tunnukselta saa muut koneet sammumaan?
Kiitoksia silti tuostakin esimerkistä.

Grez [16.02.2011 20:12:00]

#

Eihän sen käyttäjän tarvitse olla kirjautuneena koneelle, jolta tuo käsky tulee.

Eli opettaja laittaa vaan kaikille koneille oman tunnuksensa ja määrittelee sille oikeuden sammuttaa kone (ellei sitten laita suoraan järjestelmänvalvojaksi). Ko. tunnuksen ei tarvitse olla kirjautuneena. Oppilaat sitten kirjautuvat omilla tunnuksillaan.

Opettaja voi sitten sammutella muita koneita miltä vaan koneelta jossa on kirjautuneena omalla tunnuksellaan.

etsubu [16.02.2011 20:45:05]

#

Ah Niin hän sen pitäisikin toimia. Harmi kun itse en pysty kokeilemaan kun jaksaa aina vain valittaa, että "network path was not found", mutta eikö hän se koululla toimi.
Kiitoksia kovasti!


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta