Začínáme s LINUXem I.

Napsal O webu (») 5. 1. 2005 v kategorii Operační systémy, přečteno: 4216×

Nejprve se seznámíme s několika základními termíny, v příštích dílech se dostaneme k psaní skriptů v BASHi

Před pár lety jsem si nadšeně nainstaloval linux a zjistil jsem, že vlastně nevím, co do té příkazové řádky napsat. Rád bych proto tento článek věnoval čtenářům, kteří by chtěli v podobné situaci alespoň trochu zkrotit příkazový řádek. Ovšem než začneme horlivě psát skripty v shellu, vysvětlíme si nejdříve, co vlastně je ten shell, kernel, filesystem, atd.

Konvence v článku

Pevnou část příkazu budu psát neproporcionálně:
man [-k] keyword1 [keyword2]
Proměnlivou část budu psát kurzívou:
man [-k] keyword1 [Keyword2]
Volitelná (nepovinná) část příkazu bude v hranatých závorkách:
např. man [-k] keyword1 [Keyword2]
Konečně více variant oddělených svislítkem uzavřu do složených závorek:
{ PROMĚNNÁ | /regulární výraz/ | parametr }

Jádro (kernel)

Základem systému je jádro (kernel). Jádro řídí procesy (spuštění, ukončení, komunikace, uspání, přístup k zařízením,...), dále spravuje systém souborů, přiděluje a chrání paměť, odkládá dočasně nepoužívanou paměť (swap). Ještě má na starosti přidělování CPU času procesům a určování priorit.

V době psaní tohoto článku je aktuální jádro verze 2.6.10 - většina běžných linuxových distribucí používá jádro řady 2.6.

Systém souborů (filesystem)

Jak vlastně vypadá strom adresářů v linuxu? Hlavním diskem je vždy adresář "/", říká se mu kořenový (root). Důležitým poznatkem je, že lomítka v cestě k souborům či adresářům nejsou zpětná (na to jste možná byli zvyklí), ale přímá.
Adresář "/" obvykle obsahuje:

/dev - speciální soubory (zařízení, devices)
  např. /dev/dsp je obvyklý pro zvukovou kartu
/etc - konfigurační adresář
/home - kořen domovských adresářů
/lib - základní systémové knihovny
/usr - systémové soubory (velmi zjednodušeně)
/usr/include - hlavičkové soubory knihoven C
/usr/man - manuálové stránky
/var
/var/log - logovací soubory
/var/spool - pošta, tisk, ...

K zařízením i adresářům se v linuxu přistupuje jednotně ("vše je soubor").

Ještě bych mohl dodat, že každý soubor/adresář (adresář je speciální soubor) má svá přístupová práva, tzn. že nějaký uživatel či skupina uživatelů jej může nebo nemůže číst, zapisovat do něj, příp. jej spouštět. O změně přístupových práv se zmíním později.

shell, procesy, PID

Dále bychom mohli vědět, že hlavním programem pro komunikaci se systémem je shell (interpret příkazů), shellů je několik (BASH je jen jedním z mnoha). Příkazy spouštíme takto:

příkaz -přepínače parametry
  (např.:   man -k dir)

Proces je zjednodušeně řečeno běžící uživatelský nebo systémový program, vzniká duplikací rodičovkého procesu (hlavní systémový proces init má PID 1. PID (process ID) je unikátní číslo procesu. Procesy spolu komunikují - otec předává při startu synovi data, avšak syn otci data předat nemůže!!! Důležitým nástrojem pro komunikaci procesů je roura (pípa), pomocí ní lze jednosměrně předat data. Procesy mohou komunikovat ještě dalšími způsoby (např. sdílenou pamětí, signály).

Manuálové stránky, man


man [-k] [sekce] příkaz

Manuály - ty jsou v linuxu asi nepostradatelné a také pro UNIXové systémy charakteristické (asi nenajdete příkaz man mezi jinými operačními systémy). Příkaz man je neodmyslitelný, neboť jen těžko si lze pamatovat všechny příkazy, natož jejich volby (parametry), se kterými je lze spouštět, a právě s pomocí man si je hnedle vybavíme (no dobrá, někdy musíme chvíli hledat).

Zmíněný příkaz man slouží k prohlížení manuálových stránek, tedy proč hned nezkusit napsat:

bash$ man man

Zobrazí se nám manuálová stránka příkazu man. Sami pak můžete nahlédnout, kolik parametrů tento příkaz má. Velmi užitečný je parametr -k ; pomocí něho lze vyhledávat v databázi krátkých popisků systémových příkazů na základě klíčových slov. Stejnou funkci plní příkaz apropos, vlastně volání man -k je totéž, co apropos.

Ještě bych mohl dodat, co je to ta sekce. Sekce je zařazení, ve kterém chceme danou manuálovou stránku hledat. Následuje seznam sekcí:

1- uživatelské příkazy
2- sekce služeb jádra
3- knihovny jazyka C
4- zařízení + ovladače
5- formáty souborů (konfiguračních)
6- manuály jednoduchých programů
7- co dům dal (různé)
8- administrátorské příkazy

Uživatel, skupina (/etc/passwd,/etc/group)

Měli bychom vědět, že root, neboli superuživatel je uživatel s kompletními pravomocemi. Např. instalaci programu, globální změny nastavení a jiné neběžné akce v systému většinou nelze provést jako běžný uživatel. Pracovat na počítači jako běžný uživatel má své výhody, např. z důvodu omezených pravomocí se snadno brání virům (viry se nemohou vetřít do systému, protože prostě nemají přístupová práva pro zápis do souborů, které běžný uživatel potřebuje jen číst, případně spouštět).

Group je skupina uživatelů. Skupiny jsou výhodné k hromadnému definování práv pro více uživatelů, např. přidáním uživatele do skupiny cdrom mu umožníme čtení kompaktních disků. Jeden uživatel může patřit do více skupin.

Podívejme se na formát souboru /etc/passwd (v něm jsou definováni všichni uživatelé). Každý řádek definuje jednoho uživatele. Obvyklý první řádek tohoto souboru je uživatel "root":

root:x:0:0::/root:/bin/bash

Jednotlivá pole jsou oddělena dvojtečkou (jak jste si zajisté všimli) a popořadě znamenají: uživatelské jméno, x znamená, že zakódované heslo je uloženo v jiném souboru (/etc/shadow), dříve bylo součástí tohoto souboru (oddělením hesel do jiného souboru se zvyšuje bezpečnost systému, protože shadow není čitelný pro běžné uživatele), další položka je UID (user ID), sami vidíte, že živatel root má UID 0, pokračuje GID (group ID), taktéž skupina root má GID 0. V tomto záznamu prázdná položka je místo pro poznámku (často se sem píše celé jméno uživatele). Následuje domovský adresář (u superuživatele obvykle /root) a nakonec příkaz programu spuštěného po úspěšném přihlášení, většinou tedy nějaký shell - v tomto případě /bin/bash. Tuto informaci získáte příkazem "man 5 passwd".

Asi pro vás nebude překvapením, že skupiny najdeme v souboru /etc/group, na prvním řádku opět sedí root (tentokrát skupina).

root::0:root

Opět pole oddělené dvojtečkami, první pozice je jméno skupiny, druhá pozice je zakódované heslo (prázdné znamená žádné, popravdě jsem se ještě nesetkal s heslama pro skupiny), třetí položka je GID a poslední je seznam uživatelů patřících do skupiny (oddělení čárkou), do skupiny navíc patří uživatelé, kteří mají skupinu uvedenou jako svoji primární (tedy v passwd souboru).

Ještě uvedu několik příkazů - logout odhlásí uživatele (překvapivě), login user přihlášení uživatele user, su [-] [user] dočasně změní uživatele (bez uvedení user se jedná o změnu na superuživatele), příkazem exit ukončíne su. Abychom zjistili, jakou máme identitu (kdybychom náhodou zapoměli), stačí se zeptat příkazem id nebo whoami (id nám navíc řekne, do jakých skupin patříme), příkazy w a who jsou ke zjištění aktuálně nalogovaných uživatelů, příkazem last můžeme zjistit kdo, kdy a odkud se nám logoval na počítač.

Příště: typy souborů, práva a jejich změny, základní příkazy, ...
Autor: J.N.
Facebook Twitter Topčlánky.cz Linkuj.cz

Komentáře

Zobrazit: standardní | od aktivních | poslední příspěvky | všechno
Článek ještě nebyl okomentován.


Nový komentář

Téma:
Jméno:
Notif. e-mail *:
Komentář:
  [b] [obr]
Odpovězte prosím číslicemi: Součet čísel sedm a pět