Kirjoittaja Aihe: Pikku kikkoja  (Luettu 37117 kertaa)

nm

  • Käyttäjä
  • Viestejä: 15363
    • Profiili
Vs: Pikku kikkoja
« Vastaus #100 : 11.02.15 - klo:19.31 »
Kokeilin huvikseni isompaa lukua, ja tuommoisen antaa:
133     Memory page has hardware error
Itselläni ei ole käytössä nuo ylemmät numerot:

Järjestelmäsi Glibc on vanhempi kuin 2.16: http://osxr.org/glibc/source/sysdeps/gnu/errlist.c?!v=glibc-2.16.0
Esimerkiksi Ubuntu 12.04:n Glibc 2.15:stä se puuttuu.

Kernelissä tuo virhe 133 = EHWPOISON on ollut määriteltynä kauemminkin.

ajaaskel

  • Palvelimen ylläpitäjä
  • Käyttäjä
  • Viestejä: 3401
    • Profiili
Vs: Pikku kikkoja
« Vastaus #101 : 11.02.15 - klo:21.50 »
No niinpä onkin. Olin sattumalta vanhahkolla Linuxilla kun kokeilin.  Korjasin tuonne ylemmäs (sekä webbisivulle) lukualueen jatkumaan virheeseen 133 asti.
« Viimeksi muokattu: 11.02.15 - klo:21.59 kirjoittanut ajaaskel »
Autamme ilolla ja ilmaiseksi omalla ajallamme.  Ethän vaadi, uhoa tai isottele näin saamasi palvelun johdosta.

ajaaskel

  • Palvelimen ylläpitäjä
  • Käyttäjä
  • Viestejä: 3401
    • Profiili
Vs: Pikku kikkoja
« Vastaus #102 : 24.02.15 - klo:13.14 »
Missä vika kun "root" näyttää voimattomalta ?

mint .ssh # id
uid=0(root) gid=0(root) groups=0(root)

mint .ssh # ls -l
total 216
-rw------- 1 1000 1000   1719 Mar 28  2012 id_rsa
-rw------- 1 1000 1000 108454 Feb 23 10:10 known_hosts
-rw------- 1 1000 1000 103794 Oct 14 16:48 known_hosts.old
 
mint .ssh # rm known_hosts.old
rm: cannot remove ‘known_hosts.old’: Permission denied

mint .ssh # lsattr
-------------e-- ./known_hosts.old
-------------e-- ./id_rsa
-------------e-- ./known_hosts

Lisätietoja:
Mikään ei pidä poistettavaa tiedostoa auki, tilanne sama jos käynnistät koneen yhden käyttäjän tilaan tai vaikka live-tilaan muistitikulta.  AppArmor tai SELinux ei ole käytössä. 

Hyviä arvauksia miksi tiedoston poisto ei onnistu tuossa edes "root" käyttäjältä ?

Lisäys:  Levyn mount on r/w ja vaikka levyn vie kokonaan toiseen koneeseen niin sama jatkuu.

---------------


Onnittelut menevät "nm": lle joka samalla hetkellä antoi oikean vastauksen kun aloin kirjoitella sitä tänne !

lsattr -d .ssh
----i--------e-- .ssh

eli kansio jossa tiedostot sijaitsevat on suojattu "ikuisuuslipulla" eli tuo pieni i-kirjain. 

Ratkaisu asiaan siis oli katsoa myös kansion tila eikä vain siellä olevien tiedostojen tila.  Tiedostoa ei pysty poistamaan ellei kansion oikeudet salli sitä.  Tässä tapauksessa kansio oli joskus aiemmin tahallisesti erikseen suojattu i-lipulla jotta sitä ei voisi vahingossa poistaa.   Myös "append" lippu eli a-lippu kansiolle estää tiedostojen poiston kansiosta.
Samasta asiasta kerrotaan myös täällä:

http://unix.stackexchange.com/questions/29902/unable-to-delete-file-even-when-running-as-root

ja täällä on täydellisempi lista eri lipuista ja niiden merkityksistä:

http://en.wikipedia.org/wiki/Chattr

Vaikka tuolla puhutaan näiden lippujen käytöstä tiedostoille niin havaitsimme edellä niiden toimivan kansioille myös.   ::)
« Viimeksi muokattu: 24.02.15 - klo:14.58 kirjoittanut ajaaskel »
Autamme ilolla ja ilmaiseksi omalla ajallamme.  Ethän vaadi, uhoa tai isottele näin saamasi palvelun johdosta.

nm

  • Käyttäjä
  • Viestejä: 15363
    • Profiili
Vs: Pikku kikkoja
« Vastaus #103 : 24.02.15 - klo:13.53 »
rm: cannot remove ‘known_hosts.old’: Permission denied
[...]
Hyviä arvauksia miksi tiedoston poisto ei onnistu tuossa edes "root" käyttäjältä ?

Onko tiedostojärjestelmä liitetty rw:nä mount-komennon listauksen mukaan?

ajaaskel

  • Palvelimen ylläpitäjä
  • Käyttäjä
  • Viestejä: 3401
    • Profiili
Vs: Pikku kikkoja
« Vastaus #104 : 24.02.15 - klo:13.57 »
rm: cannot remove ‘known_hosts.old’: Permission denied
[...]
Hyviä arvauksia miksi tiedoston poisto ei onnistu tuossa edes "root" käyttäjältä ?

Onko tiedostojärjestelmä liitetty rw:nä mount-komennon listauksen mukaan?

Tuota en huomannut mainita mutta kyllä, se on r/w.  Lisäsin maininnan tuonne ylös.  Tässä on jotain pientä muuta... jatkan tuonne ylös ;)
« Viimeksi muokattu: 24.02.15 - klo:14.22 kirjoittanut ajaaskel »
Autamme ilolla ja ilmaiseksi omalla ajallamme.  Ethän vaadi, uhoa tai isottele näin saamasi palvelun johdosta.

nm

  • Käyttäjä
  • Viestejä: 15363
    • Profiili
Vs: Pikku kikkoja
« Vastaus #105 : 24.02.15 - klo:14.23 »
Entä .ssh-hakemiston oikeudet ja attribuutit:

Koodia: [Valitse]
ls -ld .ssh
lsattr -d .ssh

Jos hakemisto on append-only-tilassa, muuta se chattr:llä:

Koodia: [Valitse]
sudo chattr -a .ssh

ajaaskel

  • Palvelimen ylläpitäjä
  • Käyttäjä
  • Viestejä: 3401
    • Profiili
Vs: Pikku kikkoja
« Vastaus #106 : 24.02.15 - klo:14.24 »
Bingo, ratkaisit sen !  Siellä on nimittäin i-lippu on päällä kansiolla, ei tiedostoilla.
« Viimeksi muokattu: 24.02.15 - klo:14.33 kirjoittanut ajaaskel »
Autamme ilolla ja ilmaiseksi omalla ajallamme.  Ethän vaadi, uhoa tai isottele näin saamasi palvelun johdosta.

spark

  • Käyttäjä
  • Viestejä: 1752
    • Profiili
Vs: Pikku kikkoja
« Vastaus #107 : 24.02.15 - klo:19.18 »
Varmaan kaikille tuttu ohjelma htop, johon itse vasta tänään törmäsin  :)

Kaikkihan tietää päätteen top komennon jolla voi käynnissä olevia ohjelmia tarkkailla ja lopettaa. htopissa on hieman grrafisuutta ja käyttäjäystävällisyyttä lisätty ja pystyy nuolinäppäimillä navigoimaan prosesseja ym.

sudo apt-get install htop



Jostain hämmentävästä syystä tuo näyttää vakioasetteluna useita haamuja samasta ohjelmasta eri pid numerolla. Ne saa pois näkyvistä seuraavasti:  F2 > Setup > Display options  > hide userland threads

ajaaskel

  • Palvelimen ylläpitäjä
  • Käyttäjä
  • Viestejä: 3401
    • Profiili
Vs: Pikku kikkoja
« Vastaus #108 : 16.03.15 - klo:13.42 »
Tähti on tehokas työkalu

Monille lienee tuttua että jos tekee tiedoston jonka nimi alkaa pisteellä siitä tulee piilotiedosto.  Itse tiedostona piilotiedostolla ei ole mitään eroa tavalliseen, nimi vain alkaa pisteellä jolloin työkalut joilla tiedostoja katsellaan jättävät ne väliin ellei erikseen käske näyttämään myös nämäkin.

Kotikansiosta näkee piilotiedostot ja -kansiot vaikkapa komennolla:

Koodia: [Valitse]
ls -ld  .*
Jos haluaa poistaa kaikki piilotiedostot jostain paikasta voi ensiajatus olla matkia tuota ja kirjoittaa "rm piste tähti" mutta siinä on yksi "pieni" vika:   
Piste-tähti on sama myös kuin piste-piste eli yritettäisiinkin poistaa alkuperäisen paikan _yläpuolelta_ sen lisäksi että poistetaan ne piilotiedostot !
Tilanne voisi olla hieman harmillinen jos noin oikeasti kävisi ja kaikki lähtisi yhtä tasoa ylempänä kuin ajattelit --- erityisesti jos annoit myös "-rf" eli poista kaikki kyselemättä, myös kansiot.

Oikea tapa ilmaista asia että haluamme poistaa ne piilotiedostot pelkästään nykyisestä kansiosta eikä sitä tuplapistevaihtoehtoa on erikseen kieltää tuplapiste komennossa.  Poistokomento näyttää silloin tältä:

Koodia: [Valitse]
rm  .[!.]*
jolloin piste-piste vaihtoehto on suljettu pois.

(Älä kuitenkaan poista kotikansiosi piilotiedostoja vaan testaa jossain muualla.)

Tästä samasta on kerrottu myös täällä:
http://superuser.com/questions/511959/bash-path-glob-matching-dotfiles-and-parent-in-pwd

« Viimeksi muokattu: 16.03.15 - klo:13.44 kirjoittanut ajaaskel »
Autamme ilolla ja ilmaiseksi omalla ajallamme.  Ethän vaadi, uhoa tai isottele näin saamasi palvelun johdosta.

ajaaskel

  • Palvelimen ylläpitäjä
  • Käyttäjä
  • Viestejä: 3401
    • Profiili
Vs: Pikku kikkoja
« Vastaus #109 : 19.03.15 - klo:12.14 »
Omassa "laatikossaan" ?

Eikös olekin yksinkertainen juttu:

Koodia: [Valitse]
#!/bin/bash
cd  /mnt

Tuohan tekee vain "cd /mnt" kun sen ajaa ?  Tallennetaanpa tuo vaikka nimelle "vaihda" ja annetaan sille myös ajo-oikeus

Koodia: [Valitse]
chmod +x vaihda
Kaikki hyvin ja sitten vain ajoon

Koodia: [Valitse]
./vaihda
--- hetkinen, mitään ei näytä tapahtuvan ?  Mikäs on vikana ?

Pidennetäänpä hieman tuota.  "pwd" -komentohan näyttää missä ollaan, laitetaan se vielä tuonne

Koodia: [Valitse]
#!/bin/bash
cd  /mnt
pwd

No nyt se näyttää
/mnt

--- ja silti ollaan vanhassa paikassa eikä tuloksena ollut oletuskansion vaihtuminen. 

Arvaatko jo miksi ?

Kokeessamme huomasimme että skripti teki tehtävänsä, oletuskansiomme vaihtui siksi aikaa kuin skriptimme oli käynnissä mutta meidät tiputettiin takaisin sieltä samalla hetkellä kuin skriptimme ajo loppui.   Mikä tuossa sitten oikeastaan on syynä ?   

Aina kun käynnistät jonkin ajettavan asian sille varataan oma "laatikko" jossa ajo tehdään.  Mukaan heitetään nippu muuttujia kuten "USER=<käyttäjätunnuksesi>, PWD=<nykyinen_kansiosi>,...jne"  eli hienommin sanottuna mukaan laitetaan kopio kaikista ympäristömuuttujista.  Näet nuo ympäristömuuttujat "env" -komennolla.
Tämä "laatikko" eli ajoympäristömme on olemassa niin kauan kuin ohjelmamme/skriptimme on käynnissä ja se hävitetään kun ajo päättyy.  Samoin käy myös sille ympäristömuuttujien kopiolle jonka ohjelmamme sai "matkaeväiksi".  Jos muutat ohjelmasi/skriptisi aikana tuota ympäristön kopioa niin kaikki siihen tehdyt muutokset häviävät kun suoritus loppuu.
Tuo on aivan tahallisesti suunniteltu näin eli jos ohjelma/skripti sotkee syystä tai toisesta ympäristönsä niin sotku ei etene sinne mistä ohjelma käynnistettiin.
Kokeessamme muutimme oletuskansion toiseksi ja se muuttuikin mutta tuota muutosta ei välitetä tuon "laatikon" ulkopuolelle.

Arvaan kaksi vaihtoehtoista muotoa seuraavasta kysymyksestäsi eli "Eikö skriptillä voi muuttaa oletuskansiota muuksi ?" tai  "Voiko tuon ympäristön kopioinnin estää/välttää jotenkin ?".

Oletuksena kun käynnistät jonkin ajettavan asian se tapahtuu kuten on kuvattu yllä eli muodostuu kopio nykyisestä ympäristöstä ja ajo tapahtuu siellä.  Näin esimerkiksi jos käynnistät nykyisestä kansiosta jonkun ohjelman piste-kauttaviivan avulla

Koodia: [Valitse]
./<jokin_ohjelma>
Vähemmän tunnettua on että voit ajaa myös samassa ympäristössä (ilman että tehdään kopioympäristö) käskemällä erikseen niin.  Meille tuttu "bash" sisältää kaksi ohjelmoijille tuttua tapaa ilmaista se

Koodia: [Valitse]
source  ./<jokin_ohjelma>
.  ./<jokin_ohjelma>

Tuo jälkimmäinen on todellakin pelkkä piste ja välilyönti ennen ohjelman nimeä jolloin se tarkoittaa samaa kuin "source" komento = aja nykyisessä ympäristössä.

Myös esimerkkimme tuolla alussa tekee mitä odotimme jos ajamme sen nykyisessä ympäristössä. 

Skriptien kirjoituksessa tätä hyödynnetään niin että voit kirjoittaa jonkin skriptin osan erilliseksi tiedostoksi, olkoon tuo vaikka "lisuke".  Kun laitat varsinaiseen skriptiisi haluttuun kohtaan

Koodia: [Valitse]
.  ./lisuke
niin tuon tiedoston "lisuke" sisältö luetaan mukaan ajoaikana kyseiseen kohtaan aivan kuin se olisi suoraan kirjoitettu tuohon varsinaiseen skriptiisi. 
« Viimeksi muokattu: 19.03.15 - klo:12.28 kirjoittanut ajaaskel »
Autamme ilolla ja ilmaiseksi omalla ajallamme.  Ethän vaadi, uhoa tai isottele näin saamasi palvelun johdosta.