linux zaklady

Odpovědět
k
Příspěvky: 814
Registrován: 12. 8. 2008, 12:00
Bydliště: Kosice SK

12. 11. 2009, 10:01

Len pre zaujimavost a pohopenie unixu (linuxu) a jeho "instalacie" napisem nejaky pokec k adresarom a organizacii disku, prosim ospravedlnte mierne nepresnosti ktore vznikaju skor tym, ze sa snazim to podat co najlajckejsie.. a ospravedlnte tento uvod do unix/linux v CNC fore .. ale pokial mame riadit masiny EMC-ckom musime prebrat aj linux ..

Pouzivajte bud prikaz ls alebo uz uvedeny prikaz mc na "kontrolu" toho co pisem nizsie.

Ked si pozriete korenovy adresar najdete v nom zakladnu adresarovu strukturu.

strucne:

/bin - zakladne binarky ako napr ls, cat, bash ... bez nich si v systeme neporadite a ani asi nestartne

/boot sem sa uklada jadro OS stadial sa toto jadro pri boote vytiahne

/dev tuna nieje v skutocnosti ziaden subor .. toto su len odkazove veci na interne drivre v jadre, ktore spristupnuju periferie (jednak znakove .. napr seriova linka alebo blokove t.j. disk)

/etc - globalne konfiguracie pre stroj a jeho aplikacne programove vybavenie (uzivatelia maju svoje lokalne nastavenia pre aplikacie v svojich adresaroch, vzdy sa maju pouzit najprv tito z /etc a az ked ma uzivatel nejake specialnosti tieto sa potom aplikuju z jeho nastavenia)

/lib kniznice

/sbin specialne binarky .. bezny uzivatel z nich nema nic lebo vacsinou su urcene na take akcie, ku ktorim ma pritup len admin (root).

/tmp - pr ehocioho na docasne veci, po reboote sa bezne "vycisti" ale da sa nastavit inac .. (napr. vycisti len veci starsie ako .. )

Toto co som spomenul staci na zakladny beh stroja. Po boote sa je mozne aspon prihlasit na textovu konzolu.

Dalsie veci ktore najdete v / su adresar

/usr - aplikacne vybavenie (zas ma napr podaresar /bin /lib .. s podobnym ucelom ako na /bin /lib .. Ak by ste /usr nemali .. nemate aplikacie ale system ako taky bezi

/var rozlicne veci "variabilneho" typu .. databazi . mail, logovanie atd .. (zas nie je nutne pre zakladny system .. ale normalne pri behu stroja kde su aplikacie .. servre je uz potrebny

/home domace adresare uzivatelov
/root domaci adresar admina


/sys a /proc su specialne adresare podobne ako /dev .. ale ich ucel je iny .. poskytuju "pohlad" na iste veci v jadre OS.. (premenne , nastavenia atd ).

adresare /cdrom /usb /mnt /media su meista kde sa pripajaku adresare inych diskov (externych medii atd.)

Povodna idea takehoto delenia bola taka, aby sme zakladny system instalovali na mensi disk .. kde nebudu veci /var /usr .. (kde su velke objemi dat). Unix pripaja disky do adresarov takze bolo lahke od zaciatku pridat do /usr novy velky disk a na neho naloadovat aplikacne data.. ale ked sa muselo na systeme nieco opravovat .. proste bol schopny bezat aj bez toho disku v /usr .. resp. /var


Instalacie softwaru:

od zaciatku vyvoja unixu sa preferovalo riesenie distribucie softu v zdrojakoch. Admin proste nakopiroval zdrojaky do predurceneho adresara (/usr/src) tam si zdrojaky rozbalil (bezne sa balia do tzv. tar .. a potom zazipuju .. dnes najcastejsie cez bz2 alebo gz... podla toho pripona tar.gz alebo skratene tgz).

Amin potom skompilovl podla pokynov sdrojaky a "instalacia" rozhodila binarne vysledky kompilacie do prislusnych adresarov /usr/bin /usr/lib /usr ... pripadne variabilne data do /var/lib atd ..

Zial takto riesene instalacie sa zle udrzuju.. ked instalujete novu verziu tohoisteho programu, sice prepisete nejake zo starych binariek ale mozno niektore zo suborov uz neexistuju v novej verzii tychto aplikacii a tak na disku vznika "bordel"..

Vacsina z vas . pouzivate ubuntu linux .. tento je postaveny na distribucii debian. Debian pred rokmi vyriesil hore uvedeny problem ..

Admin zas skompiluje zdrojak do binarneho tvaru .. ale vysledok nenainstaluje do systemu . al e do specialneho subor .deb (tzv. deb balicek). Tento balicek potom moze lahko nainstalovat aj admin na inom systeme, bez nutnosti kompilacie. Balicek pri instalacii zaroven zapise o kazdom subore v nom obsiahnutom zaznam do databazi (/var/lib/dpkg adresar) . Potom sa na zaklade takehoto zaznamu da balicek aj korektne odinstalovat alebo upgradnut.

ak sa teda rozhodnete kompilovat EMC, mate niekolko moznosti ..

a) ako admin stiahnete zdrojaky .. a po kompilacii to instalnete do systemu (nesystemove, problematike pri upgrade)
b) ako admin vytvorite po kompilacii EMC .deb balicek a tento instalnete
c) pouzijete na instalaciu nejaky nestandardny adresar napr svoj domaci adresar v /home .. sami si ale musite pameta aka verzia v nom je nainstalovana a ci ju este potrebujete atd ..

Pokial ide o externe kniznice ktore EMC potrebuje .. pri instalacii typu b) bude zabezpecene, ze ked sa pokusite odinstalovat nejaku kniznicu, ktoru EMC potrebuje, tak sa vam to nepodari (aspon nie jednoducho) pretoze system .deb balickov bude hlasit chybu . kvoli dependencii na tejto kniznici.

Este strucne k zoznamu co mate na stroji instalovane ..

(preberiem niegraficke riesenia .. )


dpkg -l zobrazi zoznam nainstalovanych balickov
dpkg -l _balicek_ - zobrazi konkretny balicek (je/ nie je instalnuty, aku ma verziu)

dpkg -L _meno_balicka_ (napr balicek dajte "bash") vam vypise zoznam suborov patriacich k balicku bash

ak ma nejaky subor, a xcem vedeit ktory balicek ho nainstaloval . mozem sa to spytat

dpkg -S /bin/bash

Elementarna instalacia ak mam .deb balicek ..

dpkg -i _meno_suboru_.eb

ak nejaky balicek xcem odinstalovat

dpkg --remove _nazov_balicka_ (toto ale zachova konfiguracne veci balicka)

dpkg --purge _nazov_balicka_ odinstaluje balicek aj s konfiguraciou.

Tieto elementarne veci su dostupne aj cez textove interface napr dselect alebo aptitude, pripadne cez graficke aplikacie .. ale je dobre vediet aj to co sa za nimi deje na nizsej urovni.
k
Příspěvky: 814
Registrován: 12. 8. 2008, 12:00
Bydliště: Kosice SK

12. 11. 2009, 10:39

Zrejme ste uz narazili na problem, ze niekde viete inde neviete zapisovat ako bezny uzivatel. Aj to, ze ak idete instalovat ako "admin" (v unix terminologii "root", pouzijete nieco "zvlastne" a to prikaz "sudo".

Takze po poriadku,

kazdy subor/adresar ma v ramci unix systemu vlastnika (bezne je to ten, kto subor vytvoril). Vlastnik moze nastavit na subor prava. Pozriet si informacie o subore mozeme takto:


% ls -la /etc/hostname
-rw-r--r-- 1 root root 6 2000-02-29 01:22 /etc/hostname


Prve pole specifikuje prava, tie rozpisem neskor, .. dalsie pole (1) specifikuje kolko krat je dany subor "pomenovany" (subor je na disku 1x ale napr. ma na seba odkaz z /etc/hostname a potom napr. z /etc/test .. t.j. v takom priapade by tam bolo cislo 2)

dalsie pole "root" specifikuje "vlastnika" suboru
dalsie "root" je skupina do ktorej subor patri

Dalsie pole je datum a cas. Unix udrzuje viac ako jeden "cas" pre subor. Jednak udrzuje cas posledneho pristupu k suboru, cas poslednej zmeny suboru a cas kedy bol subor vytvoreny. (hore uvedeny priklad pise prave cas vytvorenia - necudujte sa .. je to naozaj stroj co som instaloval v roku 2000 a prezil dodnes.. - samozrejme upgradovany atd .. a mam aj take, co tam maju este starsie cisla ;) ).

posledne pole je "meno" suboru.


Teraz k pravam.. to prve pole:
-rw-r--r--

citam odzadu po trojiciach .. r-- znamena ze "cudzi clovek (nie je v skupine a nie je vlastnik)" moze subor len citat .. "r - read" v strede chyba "w - write" takze ho nemoze zapisovat. Na konci je zas "-" kde by mohlo byt pismeno "x" co znamena executable - t.j. ze to user moze spustit.

dalsia "prostredna" trojica prezentuje prava pre skupinu "root" a prva trojica pre vlastnika - "root". Posledna pomlcka (t.j. ta na prvom mieste) by mohla byt nahradena pismenom "d" pokial sa jedna o adresar (d=directory). Na mnoho suboroch najdete aj ine pismenka "s" "t" atd . odporucam to preluskat cez google co ktore pismenko kde znamena, nieje tu miesto na detailne vysvetlenie vsetkych prav. Odporucam pozrite manual prikazu "chown" a "chmod".

Ako bezny uzivatel nemate prakticky ziadnu moznost zapisovat do ziadneho adresara (vsetky dolezite totiz vlastni root). Jedina moznost ako instalovat systemovo nejaku aplikaciu je teda stat sa "root"-om.
(alebo instalovat do /home/_moj_adresar_ .. alebo docasne do /tmp .. )

Stat sa rootom mozete tak, ze sa prihlasite ako "root" so spravnym heslom .. alebo si poziciate prava roota. Ubuntu preferuje moznost druhu .. a na to pouziva prave prikaz "sudo". Prikaz "sudo" vykona nasledujuci prikaz uvedeny za nim pod pravami roota . (nie vzdy .. totiz len vtedy, ak na to mate opravnenie .. a to je zapisane v /etc/sudoers - ubuntu to tam zapisalo za vas .. este pri instalacii) Preto napr kopec prikazov na instalaciu zacina "sudo apt-get.... " pretoze instalacia pomocou programu apt-get moze spravne prebehnut len ak je vykonavany pod pravami roota.

jednoducha cesta ako sa stat v terminalovom okne "rootom" je prikaz "sudo bash" .. bezne sa aj zmeni vyzva "promt" z "%" na "#" .. Ked ste "rootom" mozete dalej uz kludne zadavat apt-get bez prikazu sudo na zaciatku.

Pozor .. ako root mozete omylom zmazat co nexcete :) .. pouzivajte prava roota teda len ked to naozaj povazujete za potrebne. Nemente prava na suboroch bez uvazenia .. instalacia ich ma defaultne nastavene "spravne" ..

Prikaz "id" va pomoze identifikovat pod akym kontextom pracujete:
# id
uid=0(root) gid=0(root) groups=0(root)

alebo:
$ id
uid=1012(test) gid=1012(test) groups=1012(test)

Tie ciselka (uid=0 resp. uid=1012) su vlasten realne oznacenia userov. N adisku ale aj v OS sa vyhodnocuje uzivatel podla tohoto cisla .. meno uzivatela sa tam doplna len kvoli cloveku .. aby to bolo lahko zapametatelne. Toto cislo a meno sa viaze na seba v v /etc/passwd subore .. to je aj zoznam vsetkych uzivatelov v systeme.
k
Příspěvky: 814
Registrován: 12. 8. 2008, 12:00
Bydliště: Kosice SK

12. 11. 2009, 2:16

Povodne som nexcel tak rychle napredovat, ale kedze pri kompilacii EMC narazite na prikaz make setuid je sikovne pochopit co to vlastne stvara.


EMC je aplikacia ktora vyzaduje pristup k hardwaru pocitaca. Kedze bezny user taketo prava nema, je potrebne aby mu tieto prava root udelil.

Existuje mechanizmus tzv. prepozicania prav. Tento pouziva tzv. setuid bit. Prikladom je prikaz passwd ktorym si uzivatelia mozu zmenit heslo. Hesla sa nachadzaju v subore /etc/shadow (alebo v /etc/passwd alebo aj inde, da sa to nastavit .. ). Lenze subor /etc/shadow vlastni root.

% ls -la /etc/shadow
-rw-r----- 1 root shadow 2766 2009-11-11 07:30 /etc/shadow


Aby si uzivatel mohol heslo zmenit .. musel by byt root, a to by vedel zmenit aj heslo inemu z userov atd .. (prava umoznuju zapis len pre vlastnika..)

Riesenie: prikaz passwd

% ls -la /usr/bin/passwd
-rwsr-xr-x 1 root root 34356 2009-07-24 05:55 /usr/bin/passwd

ma v prvej skupine prav specialny priznak "s" v mieste kde by inac bola - alebo x. Toto "s" hovori jadru operacneho systemu to, ze ked program passwd spusti uzivatel "janko" nema sa tento program vykonavat pod jeho pravami ale pod pravami vlastnika tohoto suboru .. t.j. pod pravami roota. (samotny prikaz passwd je napisany tak, ze skontroluje ci ho spustil root alebo janko .. a podla toho dovoli zmenu bud hoci akemu userovi .. ak ho spustil root alebo len pre zmenu hesla uzivatela janko.


Podobne je po dokonceni kompilaie EMC nutne paru programom toto "s" udelit. A toto vlastne zabezpecuje prikaz make setuid. (niekedy neskor popisem co vlasten prikaz "make" je ale zatial staci ze toto prebehne binarky EMC a pre tie binarky ktore to nutne potrebuju ten prinak "s" nastavi.


Nadviazem na predchadzajuci text ... vsimnite si, ze /etc/shadow prislucha konfiguracnemu adresaru /etc ale prikaz passwd prislucha adresaru /usr/bin ... bin, lebo je to binarka bezne spustatelna uzivatelmi .. ale nie je v /bin, pretoze v /bin su len nevyhnutne binarky .. pri priprave oprave systemu totiz absencia /usr/bin/passwd nebude problemom.
Odpovědět

Zpět na „LinuxCNC - drive pod nazvem EMC2“