Přihlašování uživatelů do webové aplikace v PHP

 

Několikrát jsem již stál před problémem vytvořit přihlašování uživatelů do webové aplikace v PHP/MySQL. Vždy jsem to řešil úplně od začátku. Nedávno opět přišel požadavek na vytvoření aplikace včetně přihlašování uživatelů, tak jsem se konečně rozhodl napsat “něco” univerzálnějšího.

Vybavení

Jak jsem již uvedl výše, k realizaci přihlašování je potřeba PHP nainstalované jako modul serveru, databáze MySQL, ve které budou uloženi uživatelé a údaje o nich. Webový server Apache (aplikace by měla fungovat i na MS IIS, bohužel nemám možnost to vyzkoušet) a prohlížeč s podporou “Cookies”.

Možnosti přihlašování

Vymyslet kam ukládat data nedalo moc práce. Databáze se pro tento účel přímo nabízí. Protože používám MySQL, padla volba na ni. Asi nedůležitější problém bylo určit typ autorizace nebo lépe řečeno cestu předávání údajů od klienta serveru. Zde je na výběr z několika možností.

HTTP autentifikace. Ta mi připadá poněkud nebezpečná z důvodu předávání jména a hesla při každém požadavku v hlavičce a to u typu Basic dokonce v čistém textu. Její výhodou je snadnost použití. Prohlížeč totiž předává po přihlášení přihlašovací jméno uživatele a heslo automaticky bez dalších zásahů.

Session autentifikace. Další možností je tedy nepřímé předávání za pomocí session, kde může být použito ověření podle údajů z formuláře. Dále není nutné posílat heslo při každém požadavku, ale stačí předávat jednoznačně určitý řetězec. Nevýhodou je větší množství práce, protože nám prohlížeč nic neulehčí a vše musíme kontrolovat sami. Ještě že má PHP alespoň výborný session management. Bez něj by to bylo složitější.

Zvolil jsem tedy z důvodu bezpečnosti druhou metodu: přihlašování pomocí sessions.

přihlášení přihlášení

Přihlášení uživatele

Při úspěšném přihlášení uživatele je vygenerován náhodný řetězec, který se uloží do databáze do položky daného uživatele, a zároveň se zapíše do session proměnné. Tam si uložíme i přihlašovací jméno uživatele. To sice není nutné, ale pro ladění je snadnější jej stále mít na očích.

Z bezpečnostního hlediska je dobré kontrolovat i IP adresu přihlášeného uživatele, takže si ji také zapíšeme do databáze. Další věcí, kterou budeme kontrolovat, je doba posledního přístupu uživatele. Tím získáme možnost jej automaticky odhlásit po určité době nečinnosti. Snažil jsem se o co nejjednodušší přístup a ovládání, a proto jsem se rozhodl pro maximální samostatnost. Tu umožní zabalení potřebných funkcí do třídy login.

Databáze

Samozřejmě je důležité nastavení databáze pro uživatele, který se připojí. To zde však popisovat nebudu, protože předpokládám funkční alespoň základní nastavení. V souboru includes/db_init.php probíhá připojování, takže je nutné nejdříve změnit hodnoty $myhostName, $mydbName, $myuserName a $myPW na takové, aby odpovídaly vašemu nastavení. Nyní je nutné vytvořit databázi nebo jen tabulku s uživateli. K tomu nám pomůže následující SQL dotaz.

CREATE TABLE test_users (
id int(11) NOT NULL auto_increment,
username varchar(20) NOT NULL default ”,
pw varchar(32) NOT NULL default ”,
firstname varchar(16) NOT NULL default ”,
lastname varchar(16) NOT NULL default ”,
session varchar(32) NOT NULL default ”,
ip varchar(15) NOT NULL default ”,
lasttime datetime NOT NULL default ‘0000-00-00 00:00:00’,
UNIQUE KEY id (id)
) TYPE=MyISAM;

Protože jsou hesla v databázi hashovány metodou md5, zde je část PHP kódu, který vloží uživatele “test” s heslem “test” do databáze. Samozřejmě musí předcházet připojení k databázi.

$myusername=”test”;
$mypw=md5(“test”);

$query=”INSERT INTO test_users SET username='”.$myusername.”‘, pw='”.$mypw.”‘”;
$result = mysql_query($query,$db);

header.php

Pro základní autentifikaci nám tedy slouží soubor includes/header.php. Zde startujeme session, vnořením souboru includes/db_init.php se připojíme k databázi, inicializujeme třídu login, otestujeme zda zavolat metodu pro přihlášení /$login->first_login()/ nebo odhlášení /$login->logout()/ a vypíšeme html hlavičku.

<?
// soubor header.php
// zahájení relace session
session_start();

// připojení k databázi MySQL
include “includes/db_init.php”;

//načtení soboru s třídou login
include “includes/login.php”;

//inicializace třídy login
$login = new login;

//jestliže je proměnná logout nastavena na 1 provede se odhlášení
if($logout==1){
$login->logout();
}

// jestliže je odeslán přihlašovací formulář, testuje se jméno a heslo
if(isset($login_name) and isset($login_pw)){
$login->first_login();
}

// zobrazení hlavičky html dokumentu
?><html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso8859-2″ />
<!–<link rel=”stylesheet” media=”screen” type=”text/css” href=”style.css” />–>
</head>
<body>

login.php

Soubor login.php obsahuje definici třídy login a obsažené metody. Na začátku definujeme použité proměnné uvnitř třídy. Zde stojí za povšimnutí proměnné:

$login->is_logged – podle této proměnné můžeme zjišťovat, zda je uživatel přihlášen

$login->checktimelimit – doba neaktivity, po které uživatele odhlásíme.

V další části je konstruktor třídy. Tak se nazývá metoda pojmenovaná stejně jako třída /v našem případě login()/. Ta se provede automaticky při inicializaci třídy.

Zde vás mohou zarazit tři řádky s voláním metody test_sql(). Ty by měly odfiltrovat případný pokus o útok metodou SQL inject u vstupních dat.

// zabezpečení proti útokům typu SQL inject
$this->session_login_string=$this->test_sql($this->session_login_string);
$this->login_name=$this->test_sql($this->login_name);
$this->login_pw=$this->test_sql($this->login_pw);

Další důležitou položkou je proměnná $this->table, kde musíme mít nastaveno jméno tabulky, ze které získáváme údaje o uživatelích.

$this->table=”test_users”;

Metoda first_login() se stará o prvotní přihlášení uživatele. Zkontroluje údaje předané z formuláře, vygeneruje náhodný řetězec, zapíše řetězec a datum do databáze a řetězec s přihlašovacím jménem do cookies. Pokud se podařilo přihlásit, naplní ještě proměnné třídy metodou load(). Podle návratové hodnoty můžeme kontrolovat, zda se přihlášení zdařilo (1-true/0-false).

Metoda logout() se stará jak již název napovídá o odhlášení. Zapíše do databáze jiný string pro session a ukončí session relaci.

Metoda load() slouží pro načtení dat a jejich uložení do interních proměnných. Většinou je volána z metody logged().

Konečně metoda show_login_form() vypíše formulář pro přihlášení. Zde je požadováno uživatelské jméno a heslo.

index.php

Posledním souborem, který jsme neprobrali, je vlastně ten první. Přes něj vstupujeme na podstránky. Na začátku je vnoření souboru includes/header.php, přes nějž a návazně includes/login.php se provede vše spojené s přihlašováním. Ve zbytku souboru se již jen podle získané hodnoty v proměnné $login->is_logged rozhodujeme, jakou část kódu provedeme. Například když není uživatel přihlášen, zobrazíme formulář. Pokud je uživatel přihlášen, zobrazíme mu aktivní odkazy v menu. Ale to již záleží na vás, jakou funkčnost do aplikace zabudujete.

Doufám, že jsem vám byl alespoň trochu nápomocen. Snažil jsem se komentovat všechny důležité části, a dokonce jsem se přemohl a komentáře jsou i s nabodeníčky 😉

Zdrojový kód stahujte zde.

 

publikováno: www.abclinuxu.cz , 30.6.2003

Hacking bez tajemství – Webové aplikace

Kniha navazující na úspěšný titul Hacking bez tajemství je opravdovým Pokračováním s velkým P. Při čtení jejího předchůdce jsem celou dobu žasl, jak je možné maximum informací sdělit tak čitelnou formou a zároveň knihu učinit i přehlednou. To vše jak při hledání, tak i v návaznosti a vyváženosti jednotlivých kapitol. Nová publikace používá stejných grafických prvků a podobného členění jako její předchůdce, takže je i stejně dobře čitelná.

Všichni tvůrci opravdu pečlivě dbají na dodržení daných konvencí, takže když začínáte číst kapitolu od jiného autora než byla ta předchozí, většinou si toho ani nevšimnete.

Předběžná prohlídka

Kniha je rozdělena na tři části. První je nazvána “Předběžná prohlídka”. Zabývá se obecně jednotlivými typy útoků, stručně je popisuje a nastiňuje i typy řešení. Tato část stručně rozebírá následující témata.

  • Úvod do bezpečnosti webových aplikací
  • Profilování

  • Hacking webových serverů

Útok

Druhá část se jmenuje “Útok” a zde jsou popsané bezpečnostní problémy rozebrány podrobně i s možnými nuancemi a do detailů vysvětleny možnosti obrany.

Každý z bezpečnostních problémů je v rozdělen na tři kroky.

  1. útok
  2. orientační tabulka s popisem a stupněm nebezpečnosti útoku
  3. možná obrana

V části “Útok” jsou jednotlivé kroky rozebrány podrobně. Tím však nechci říct, že by stačilo přečíst pouze první část, ta nám pouze ukazuje principy. Ve druhé je vše rozebráno včetně ukázek a popisu nástrojů používaných k získání hesel, hlaviček http přenosů nebo dalších důležitých údajů. Samozřejmě je zde i úplné vysvětlení, je-li to kvůli druhu problému možné, možnosti obrany a to opět vyčerpávajícím způsobem. Následující seznam obsahuje názvy rozebíraných typů útoků.

  • Ověřování
  • Autorizace
  • Útoky na správu stavu relace
  • Útoky na validaci vstupu
  • Útoky na webová úložiště dat
  • Útoky na webové služby
  • Hacking správy webových aplikací
  • Hacking webových klientů

Asi v polovině knihy jsem se pozastavil nad tím, že je v publikaci na můj vkus hodně screenshotů pro hacking pomocných aplikací (vetšinou ve windows verzi, ale téměř vždy existuje linuxový port, nebo jde přímo o port linuxové aplikace) a jsou mnohdy i přes půl strany. Zbytečně tak zabírají místo a prodražují knihu.

Přílohy

Konečně třetí část jsou přílohy. Zde se rozebírají akce související se zabezpečením webových aplikací, webového serveru nebo hackování svého serveru. Více vám napoví přímo názvy jednotlivých příloh.

  • Seznam úkonů při kontrole
  • bezpečnosti webového serveru
  • Tahák s nástroji a postupy pro webový hacking
  • Použití programu libwhisker
  • Instalace a konfigurace nástroje UrlScan
  • O doprovodných webových stránkách

Hodnocení

Informační hodnotou knihy jako celku jsem byl nadšen a je ke cti překladatelů, technických poradců a korektorů, že dílo nekazí ani chyby nebo překlepy (našel jsem pouze jeden).,To je u tohoto druhu technické literatury obzvláště chvályhodné.

Tímto bych recenzi ukončil a všem vám, kteří přemýšlíte o zakoupení, ji nemohu než doporučit. Jedná se o po všech stránkách kvalitní publikaci autorů, kteří jsou profesionálové v oboru bezpečnosti.

Přeji příjemné čtení :).

Název Hacking bez tajemství – Webové aplikace
Autoři Joel Scambray, Mike Shema
Vydal Computer Press
Datum vydání 2003
Počet stran 360
Doporučená cena 390,- Kč / 585,- Sk

 

publikováno: www.abclinuxu.cz , 3.6.2003

Palm Tungsten | T a Linux – I

V katerogii kapesních počítačů vládnou světu v podstatě dva operační systémy. První vyvinula tehdy ještě divize 3com a dnes již samostatná firma Palm Computing. Jeho název je tedy poměrně logicky Palm OS. Druhým hojně rozšířeným operačním systémem je PocketPC, dříve Windows CE a i zde můžeme odvodit z názvu výrobce, tedy Microsoft. Mezi další patří poměrně oblíbený Symbian, používaný například v komunikátorech a mobilních telefonech nové generace firmy Nokia, nebo také náš oblíbený Linux.

Základní vybavení

Protože tento článek je o možnosti dálkové správy Linuxu s pomocí Palm Tungsten|T, Nokia 6310i a připojení přes Eurotel GPRS Data, nejdříve vás lehce seznámím s možnostmi a důležitými technickými parametry pro naše požadavky. Kompletních popisů parametrů je na internetu hodně, takže opravdu jen to pro naše použití nejdůležitější.

  • Palm Tungsten|T: Bluetooth, Infraport
  • Nokia 6310i: bluetooth, GPRS

Bluez o připojení

fotka

Nejdříve se podíváme na připojení. Nejde o nic složitého, ale slečny na infolince Eurotelu si o mě musí dodneška vyprávět ;). Spojení dvou věcí, které jsem nepředpokládal mě udělaly na několik hodin totálně neschopným zprovoznění komunikace a značně popudlivým. Když k tomu připočtu fakt, že jsem seděl v přeplněném kupé, asi nebylo radno mě v tu dobu otravovat takovými podružnostmi, jako je kontrola jízdenek.

Prvním podrazem byl kolísající signál ve spojitosti s pomalým refreshem zobrazované síly signálu na mobilu. Takže ve chvíli, kdy jsem usoudil, že signál je dostatečně silný a začal jsem se připojovat, většinou už nebyl žádný nebo příliš slabý. Druhou věcí, na kterou jsem však přišel až po příjezdu do cíle, byla záhadná nefunkčnost bluetooth na mobilu, ačkoli se vše tvářilo v pořádku. Zde pomohla klasická finta z Windows: vypnout/zapnout.

Po těchto vytrpěných hodinách tedy vše konečně začalo pracovat tak, jak jsem si představoval. Můžeme se tedy pustit do nastavení. Ještě upozorním, že pro jiné telefony bude podobné. Stejně tak i když budete používat infračervené připojení místo bluetooth. S jinými operátory však nemám žádné zkušenosti, proto uvítám Vaše nastavení, případně postřehy v diskuzi. Později je doplníme k článku.

 

 

publikováno: www.abclinuxu.cz , 30.5.2003

 

Gentoo Linux 1.4

Gentoo logo

Distribucí Linuxu je na světě opravdu hodně a je již naprosto normální, že stále vznikají nové a zároveň staré zanikají. Jelikož je člověk od přírody líný tvor, i přechod na jinou distribuci pro něj není zrovna lákavým soustem. Proto se většina nově vzniklých distribucí příliš nerozšíří. I mezi nimi však najdeme několik výjimek. Příkladem z poslední doby budiž Knoppix nebo Gentoo Linux. Knoppix patří mezi takzvané “Live”, z CD bootovatelné, distribuce a Gentoo Linux patří do skupiny “Linux from scratch” distribucí. Tento podivný termín lze velmi volně přeložit jako název kdysi populárního časopisu “Udělej/Urob si sám”.

Trochu historie

V úplném začátku GNU/Linuxu se systém šířil ve velmi jednoduché formě. Člověk, který jej chtěl použít, si musel stáhnout spoustu zdrojových kódů a začít kompilovat a instalovat. Nebyl instalační program nebo konfigurační utility. Samozřejmě existovalo několik více či méně podařených a obsáhlých návodů how-to. V dalších fázích se začalo přecházet na balíčkové distribuce (.tgz nebo později .rpm), které nabízely přednastavené a hlavně zkompilované balíčky od jádra, přes základní systém až k aplikacím. Ty získaly značnou oblibu, protože poskytovaly mnohem větší komfort a odbouraly nutnost kompilace. Výhoda tohoto přístupu je zřejmá. Obrovská úspora času.

Samozřejmě se ukázalo, že tato cesta spolu s překotným vývojem konfiguračních nástrojů s sebou přináší i odklon od nutnosti znát jak a co v tom našem počítači vlastně funguje. V jakékoli distribuci GNU/Linuxu se tomu sice lze dopátrat, ale prostě to není ono. Když si navíc uvědomíme, jak výkonově pokročily procesory, zjistíme, že lze vše zvládnout i na běžném domácím hardware. Zřejmě velmi podobně uvažovalo více uživatelů a mezi nimi byli i tvůrci Gentoo Linuxu.

Jako hlavní důvody, proč vznikl Gentoo Linux, bych označil následující:

  • možnost od úplného začátku kompilovat systém i aplikace přímo na míru počítači
  • chuť učit se novým věcem a snaha do hloubky porozumět GNU/Linux systému
  • nechuť k rpm-like distribucím a jejich nectnostem (prosím bez flame, prostě jsou i tací lidé)

Co tedy dostanu?

Plně optimalizovaný systém a software přesně na Váš počítač. Autoři chtěli svoji distribuci mít životaschopnou nejen po instalaci, ale i při reálném nasazení. Proto museli najít způsob jak zavést systém propojení jednotlivých komponent mezi sebou (nenáviděné závislosti) a jak jí jednoduše upgradovat. Proto vznikl systém balíčků Portage. Bohužel neznám BSD systémy, ale podle autorů je styl práce s Portage podobný stylu BSD. Systém je napsán v Pythonu. Pracuje podle nastavení v několika souborech (nastavení kompilace /etc/make.conf) a s pomocí členěného systému “ebuild” popisů k jednotlivým balíčkům (/usr/portage). Zde se nacházejí soubory popisující Portage systému automatickou instalaci, konfiguraci a závislosti jednotlivých podporovaných komponent. Portage umožňuje jednoduchou ale komplexní správu systému, upgrade i odinstalaci software. S postupem času můžu říct, že jeho použití je opravdu příjemné.

Gentoo přináší obrovské množství software. Při jeho instalaci je sice téměř nutností připojení k internetu, ale za to dostanete opravdu čerstvou verzi GNU/Linux OS. To je vykoupeno nutností rozumného připojení. Po modemu se to blíží šílenství, což mohu dosvědčit z vlastní zkušenosti. Nejen že musíte stahovat všechny zdrojové balíčky, ale ty jsou ještě větší než jejich binární bratříčci, takže například stažení nové verze jádra nebo XFree Vás bude stát několik hodin času.

Celý Portage systém se dá navíc nastavit do dvou módů (podobně jako v Debianu existuji Stable a Testing verze distribuce). Standardně je používán “stable” mód, kde se instalují nové, ale ověřené aplikace. Pokud však v souboru /etc/make.conf odkomentujete řádku: #ACCEPT KEYWORDS=”~arch” a zaměníte “~arch” za označení Vaší architektury (“~x86”, “~ppc”, “~sparc” nebo “~sparc64”) bude Portage systém fungovat v testing režimu, kde Vám bude instalovat i nejnovější verze produktů. Druhou možnost používám a zatím jsem se s žádným závažnějším problémem nesetkal.

Údržba systému

Pokud jde o snahu udržet systém v co nejnovějším hávu, zde nabízí Gentoo, resp. jeho Portage systém, také velice elegantní přístup. Celý systém lze velice snadno udržovat v “update” stavu kombinací příkazů:

#emerge sync // synchronizuje portage systém
#emerge -u world // upgrade systému (všechny nainstalované komponenty)

Samozřejmě to není otázkou vteřin. Rychlost závisí na taktu Vašeho procesoru a konkrétním jednom či několika balíčcích určených k upgrade. (např. xfree86 na PIII@666MHz cca. 6 hodin). V souboru /etc/make.conf lze nastavovat jemněji volby pro překlad a volby související s obsluhou Portage systému. Pro jednodušší nastavení slouží utilitka ufed (emerge app-admin/ufed).

Pokud si tedy chceme nainstalovat nějaký program, budeme postupovat následovně:

#emerge -p nazev_balíčku (vypíší se nám všechny závislé balíčky)

#emerge nazev_balíčku

pro upgrade použijeme:

#emerge -u nazev_balicku

pro odinstalaci použijeme:

#emerge unmerge nazev_balicku

a pro nalezení balíčku:

#emerge search string

Při instalaci balíčku nám portage systém automaticky provede stáhnutí balíčku ze serveru (jde změnit v /etc/make.conf) v případě že jej nenalezne v adresáři /usr/portage/distfiles/. Potom balíček rozbalí do dočasného adresáře (/var/tmp/portage/nazev_balicku), aplikuje případné patche, zkonfiguruje podle nastavení v .ebuild souboru a zkompiluje podle nastavení v /etc/make.conf. Pokud upgradujete a máte odkomentovanou v souboru /etc/make.conf řádku AUTOCLEAN=”yes”, rovnou Vám i odinstaluje starou verzi.

Co mě to bude stát?

Jak jsem již podotknul, hodně záleží na síle Vašeho hardware. Potom také na Vašich zkušenostech s linuxovými systémy. Když jsem se poprvé snažil nainstalovat softwarový RAID, zabralo mi to také dost času. To však bylo způsobeno z velké části mojí neznalostí problematiky. Je opravdu lepší si předem promyslet, jestli daným krokům rozumíte, než naslepo tápat. Jako ideální bych viděl instalaci z běžícího systému v terminálu na pozadí (pomocí chroot).

Nepočítejte, že za jeden den budete mít hotovou desktop instalaci. Při mojí instalaci na PIII@666, 256MB RAM se mi základní desktop instalace protáhla na tři dny. Samozřejmě čas nezabírá jen kompilace. Hodně času mi zabraly problémy způsobené mými chybami nebo neznalostí. Potom ještě následovalo několik dnů dolaďování mé konfigurace a instalace software, na který jsem zapomněl. To však již probíhalo v rámci normální práce a na pozadí. Jediné, co se mi nepodařilo zkompilovat, je OpenOffice.org. Jeho překlad jsem z časových důvodů nakonec vzdal a nainstaloval binární verzi z CD nějakého časopisu.

Instalace

Jelikož instalace probíhá z Instalačního CD, je dobré stáhnout si ISO na rychlejší lince. Momentálně je dostupná verze 1.4_RC4. Když jsem zkoušel instalovat předchozí verzi (1.4_RC2), tak mi na některých konfiguracích nechtělo CD nabootovat. Možná je to náhoda, ale v obou případech se jednalo o dvouprocesorové Pentium III počítače. Metodou pokus/omyl jsem tedy došel až k poměrně historické verzi 1.2, která fungovala bez potíží. Je důležité poznamenat, že kromě ztraceného pohodlí (chybějících několik utilit obsažených v novější verzi) nezáleží na tom, z jakého LiveCD budete instalovat. Celý systém si stejně v průběhu instalace můžete upgradovat a překompilovat do nejnovější verze.

Před instalací je ještě dobré si promyslet, jakým způsobem chceme postupovat. Nabízí se nám tři možnosti v závislosti na první fázi instalace. Máme na výběr ze tří stage souborů.

Stage1 obsahuje pouze nejzákladnější systémové utility a v průběhu instalace se kompiluje znovu i základní knihovny a GCC s optimalizací na náš procesor.

Úspornější variantou je Stage2, kde jsou tyto komponenty již předkompilovány, ale musíme ještě přeložit základní systém.

Stage3 obsahuje i zkompilovaný základní systém. Samozřejmě si musíme vybrat optimalizaci na náš procesor, jinak nám nemusí systémové programy fungovat vůbec, nebo budou zbytečně pomalé. Tím by jsme však ztratili jeden z hlavních důvodů, proč tato distribuce existuje.

Jaký hardware?

Instaloval jsem zatím na 5 počítačů s poměrně velkým výkonostním rozptylem a kromě již zmíněného bootování novějších verzí instalačních LiveCD, jsem se nesetkal s téměř žádnými problémy. V podstatě se dá říct, že kdybych pořádně četl manuál a občas prohledal diskuze, vše by proběhlo vždy hladce. Jaké tedy byly instalované konfigurace?

  • Pentium III@666 MHz, 256 MB RAM, 40GB IDE HDD, MB Microstar
  • 2xPentium Pro@200 MHz, 48 MB RAM , 2GB SCSI HDD, 12GB IDE HDD, MB Intel
  • 2xPentiumIII@733 MHz, 1 GB RAM, 3x 9,6GB SCSI HDD (SW RAID 5), MB Acer
  • AthlonXP1700+@1.47 GHz, 256 MB RAM, 30 GB IDE HDD, MB ECS
  • Pentium 4@2 GHz, 512 MB RAM, 2x 80GB (SW RAID 0),MB Asus

Pokud jde o rychlost kompilace, tak zde jsou rozdíly mezi nejslabším a nejsilnějším strojem opravdu patrné, ale jinak mě stařičké (byť dvouprocesorové) Pentium Pro na 200MHz překvapilo svou svižností. Dokonce i Xfree86 se na něm dají v pohodě provozovat. Na OpenOffice.org nebo KDE 3.x to již není to pravé, ale i o nich by se dalo uvažovat. Zato na strojích s Pentium III nebo s novějšími procesory je to prostě paráda 🙂 .

Gentoo desktop

1280×1024, 288 kB

Budoucnost

Tým vývojářů Gentoo nyní pracuje na lepším zabezpečení celého Portage stromu. Celý problém spočívá v obavě o možnost podsunutí balíčku v podobě trojského koně. Samozřejmá je i postupná aktualizace softwarového vybavení nebo linuxového jádra. Jelikož počet uživatelů Gentoo Linuxu i jeho instalací stoupá, myslím, že se můžeme těšit na dobrou budoucnost distribuce. Její potenciál je jistě velký.

Hodnocení

Celý projekt hodnotím velice kladně a postupným upgradem systému zjišťuji, že jejich práce je opravdu znát. Gentoo mi dalo určitě mnohem lepší přehled o základech systému. Naučil jsem se spousty nových věcí a v neposlední řadě procvičil kompilaci kernelu a modulů 😉 . Obecně můžu říct, že ze zpětného pohledu to byla opravdu hodnotná a kvalitní zábava. Určité problémy může způsobovat nutnost připojení k internetu, ta se však dá kompenzovat např. stažením souborů v práci a doma nakopírováním do adresáře /usr/portage/distfiles/. Dostupná dokumentace je také na dobré úrovni a kdo by nenašel odpověď ani tam, je mu k dispozici diskuzní fórum uživatelů Gentoo Linuxu.

 

publikováno: www.abclinuxu.cz , 15.4.2003

Další vývoj OpenSource?

Toto zamyšlení jsem se rozhodl napsat po přečtení úvodníku z 29. března uveřejněném na serveru FreshMeat.net. Marius Andreiana se tam rozepisuje o stylu vývoje svobodného software. Již název článku napovídá, že se bude jednat o zajímavé téma – “Příliš mnoho svobodného software”. Na serveru, který se zabývá zveřejňováním informací o nových verzích převážně OpenSource projektů, to zní ještě kuriózněji.

Autor v první řadě upozorňuje na nesouměrnost ve vývoji některých typů software. Jako nejlepší příklad uvádí obrovské množství existujících textových editorů v kontrastu s několika málo kvalitními grafickými nástroji (Gimp), neexistujícím jednoduchým přehrávačem filmů a programem pro záznam zvuku. Později též nabádá ke spojení sil vývojářů do několika projektů v každé kategorii, které by tím několikanásobně urychlily vývoj a tím i kvalitu. Dalším zajímavým postřehem je zaštítění velkých a úspěšných projektů (Mozilla, OpenOffice.org) komerční společností.

Nabádá uživatele aby přestali vyvíjet a používat “obskurní” aplikace, pokud jsou k nalezení lepší varianty. A píše: “Pokud s nimi nejste spokojeni, pomozte je opravit nebo vylepšit”. Dále prohlašuje, že správnou cestou je použití hotového kódu a jeho zdokonalování.

Závěry, které o OpenSource Maurius vyvozuje jsou velice diskutabilní. Proto bych je rád komentoval ze svého pohledu. Některé jeho komentáře mi téměř připomínají slavné výroky Microsoftu, přirovnávající hnutí ke komunismu. Jiné zase zní rozumně. Jak to tedy vidím já?

Bod 1 – velké množství textových editorů

Myslím, že zde je situace relativně jasná. Napsat si svůj editor se jistě pokouší téměř každý začínající programátor. Potom je otázkou, kolik z tohoto obrovského množství se bude chtít vzdát své těžce vydobyté prvotiny. Proto se jich mnoho chopí vylepšování a šperkování SVÉHO editoru. Vím, o čem mluvím ;-). Sice to bylo ještě na Amize, ale taky se mi nechtělo kód, kterému jsem věnoval hodně času, opustit.

Bod 2 – grafické aplikace

Sdílím s Mariem smutek z nedostatku aplikací tohoto druhu. Na druhou stranu opět chápu, proč se tak stalo. Jakmile vznikl Gimp, tak se snažili vývojáři díky jeho koncepci pluginů co nejvíce si ušetřit práci a dopsat si svoji funkci do jinak již fungujícího systému Gimp. V této oblasti je celkem logicky podstatně méně erudovaných lidí (než v oblasti textových editorů), proto také nemůže vzniknout takové množství aplikací. Nicméně souhlasím, že by Gimpu slušela alespoň jedna kvalitativně srovnatelná konkurence, která by podle mého názoru posunula kvalitu o trochu dál. Ať si hardcore Linuxoví nadšenci říkají cokoli, Photoshop je přeci jen jiná liga.

Bod 3 – přehrávač filmů

Zde si dovoluji oponovat. Nezdá se mi, že by autor neznal dva nejrozšířenější, kterými jsou MPlayer a Xine. Kde zvláště MPlayer se vyvíjí vpravdě ďábelským tempem a za poslední rok nebo dva jsem nenarazil na film, který bych s ním nepřehrál. Zde se jedná o tak evidentní rozpor, že přemýšlím, jestli jsem přesně pochopil autorovu poznámku.

Bod 4 – záznamník zvuku

V tomto bodě si nejsem jistý. Asi před rokem jsem zkoušel sound recorder obsažený v Gnome 2.0 a nefungoval mi, ale jsem si téměř jistý, že problém byl v konfiguraci ovladače k mé zvukové kartě, nikoli funkčností programu. Každopádně v této oblasti neumím říct jedoznačný názor, protože moje zkušenosti se zvukem obsahují v podstatě jen grabování a přehrávání mp3 souborů.

Bod 5 – úspěšné projekty od komerčních firem

Nenapadá mě nic, čím bych oponoval. Je to prostě pravda. OpenOffice.org má za sebou Sun. Mozilla je pod křídly firmy Netscape. To, že je výsledný produkt pod GNU/GPL nebo podobnou licencí, jistě nic nemění na jeho kvalitách. Možná to opravdu ukazuje výhody pevnějšího vedení a jednotných strategií (zvláště u takto obsáhlých) projektů. Bohužel netuším, jak pevné toto vedení je.

Bod 6 – spojení sil na několika projektech

Jistě záslužná myšlenka, ale právě ta mi nejvíce připomíná v úvodu zmíněnou ideologii z časů nedávno minulých. Jak je vidět, lidé jsou velice různorodí a není v silách nikoho zavděčit se všem. Proto budou stále vznikat nové a nové projekty, konkurující těm zavedeným. Samozřejmě ne vždy musí být za novým projektem neshody s autory již existujícího. Opět zde může nastat případ z bodu 1a. Nebo prostě autoři nemají dostatečné možnosti komunikace s týmem vyvíjející starší konkurenční projekt. Popravdě netuším, jak se daří vývojářům Gimpu držet se v pozici absolutní jedničky.

Bod 7 – nepoužívejte a nevyvíjejte obskurní aplikace

Hlavní problém spatřuji v definici pojmu “obskurní aplikace”. Je obskurní aplikací tftpd, když ftp nabízí mnohem větší možnosti a komfort? Jistě ne. Pro bezdiskové stanice je to výborný způsob pro prvotní komunikaci s okolím. Je obskurní aplikací ftpd, když sftpd nám poskytne stejné služby a navíc je bezpečné? Zde je odpověď sice poněkud z jiného soudku, ale také na místě. Ftp (ftpd) je de facto standard a k jeho vytlačení nemá sftpd dostatečnou podporu a ani dostatek klientů pro širokou veřejnost. Navíc pod Windows se (téměř) nepoužívá. Všechny tyto protokoly mají svůj specifický důvod existence. Pokud se vrátíme k textovým editorům, zde bych chápal rozmrzelost nad neuvěřitelným množství jejich variací, ale to bych se opakoval (viz. bod 1).

Bod 8 – chvilka poezie (polemiky) na závěr

Samozřejmě se nebráním rozdílným názorům a prosím Vás o jejich sdělení v diskuzi pod článkem. Popravdě se opravdu obdivuji způsobu, jakým GNU/GPL, linuxové jádro, nebo ostatní free (ve smyslu GNU) projekty vznikají. U projektů jako jsou Gnome, KDE, XFree86 nebo GNU je pro mne téměř neuvěřitelné, jakých kvalit dokázaly dosáhnout.

Někde jsem četl, že Linux dokončil dobývání serverového světa a nyní nastal čas dobýt svět desktopu. Obávám se však, že to není tak docela možné. “Standardního” uživatele čehokoli totiž nezajímá, jak “to” funguje uvnitř, kde sehnat ovladač a jak ho dostat do mé verze kernelu.

Jeho ideální představa je: “Zmáčknu ten krásný červený knoflík a ono to udělá přesně to, co chci”. Klasickým přikladem je rádio. V ideálním připadě má knoflík na ladění (automatické :-D ), zesilování a někdy ještě na paměť několika stanic. Samozřejmě v rámci funkčnosti daného zařízení nebo systému, ale vzpomeňte si, kolikrát jste slyšeli historku, jak se někdo učí rok ovládat televizi dálkovým ovladačem. Prostě je to tak. Uživatelé nemají chuť trávit s něčím čas na učení. Chtějí aby to fungovalo hned. A je to trend do budoucna. Udělat “skříňku” (rozuměj distribuci) s minimem možných vstupů a tím odfiltrovat maximum chyb pocházejících od uživatele.

Proto je jediná šance v kompaktních, předinstalovaných a předkonfigurovaných systémech dodávaných na míru počítači a s ním na míru uživateli. Na trhu domácích počítačů se tomuto modelu nejvíce blíží firma Apple. Na x86 trhu se snaží bodovat Microsoft. Jistě si Mandrake 9.x (nebo novější Suse či RedHat) asi opravdu dokáže nainstalovat každý uživatel Windows. Pokud mu však instalační script nenajde ovladač k jeho winmodemu, sám si jej většinou ani nenajde, natož aby kompiloval nebo nedejbože konfiguroval v shellu. Možná namítnete, že OS X je založen na podobném základě jako Linux (BSD). Má ale jednu podstatnou výhodu a tou je jednotný hardware. Na ten se vyvíjí podstatně jednodušeji a není zapotřebí mít tisíce ovladačů.

Na druhou stranu, některé kvalitní komerční aplikace již pro Linux existují. Příkladem budiž Maya, VmWare nebo Star Office. Myslíte si, že je možné aby Linux dosáhl nebo předčil z čistě uživatelského hlediska (červený knoflík :-D ) kvality systémů Windows nebo Mac OS X? Já jsem skeptický.

uveřejněno: www.abclinuxu.cz , 8.4.2003