20.2.2004

ISPELL A BACKUP SYSTÉM

Filed under: Uncategorized — nax @ 11:51

Tak jste si asi vĹĄimli, Ĺže jsem zase začal pouŞívat nabodeníčka. Po tom co mě v předminulĂŠm postu Přemda hezky uzemnil v mĂŠm rozletu nehledĂ­c na gramatickou korektnost mĂ˝ch postĹŻ, jsem začal pĂĄtrat po tom, jak do ispellu, coĹž je utilita hojně pouŞívanĂĄ v unixovĂ˝ch systĂŠmech ke kontrole pravopisu, včlenit slovnĂ­k, kterĂ˝ sice bude mĂ­t českĂŠ vĂ˝razy, ale bez nabodeníček. Tedy Ăşplně pĹŻvodně mĹŻj zĂĄměr byl, Ĺže bych mohl udělat slovnĂ­k, kde by byly jak vĂ˝razy s nabodeníčky tak bez a včetně anglickĂŠho slovnĂ­ku. JenĹže nic nenĂ­ tak jednoduchĂŠ jak se zdĂĄ. BohuĹžel hned na začátek musĂ­m říct, Ĺže se mi ani jedno nepovedlo – jak je ostatně vidět z toho, Ĺže pĂ­ĹĄu tak jak pĂ­ĹĄu.

JeĹĄtě bych chtěl chtěl trochu Ĺžbleptnout (hmm tohle slovo asi kontrola pravopisu nebude znĂĄt 😉 o tom proč vlastně chci psĂĄt bez nabodeníček. Ono totiĹž je to prostě zvyk na rozloĹženĂ­ klĂĄvesnice. Neuvěřitelně mne dopaluje, kdyĹž zmáčknu klĂĄvesy “< " a mĂ­sto toho se napĂ­ĹĄe "?". NavĂ­c tu sou problĂŠmy s qwerty a qwertz kterĂ˝ mě doma sice netrĂĄpĂ­, ale kdyĹž třeba pĂĄĹĄu tohle zrovna v prĂĄci, tak uĹž je to o přenastavovĂĄnĂ­ cizĂ­ho profilu a tak. No ale teď k tomu popisu jak jsem se pokouĹĄel neĂşspěšně udělat ten slovnĂ­k. Tak nejdříve jsem si stĂĄhl nejnovějĹĄĂ­ verzi českĂ˝ch souborĹŻ pro ispell s nabodeníčky, kterĂ˝ se normĂĄlně instaluje v distribucĂ­ch, respektive jejich zdrojovou podobu. Po rozbalenĂ­ na vĂĄs vypadne několik souborĹŻ stručně popsanĂ˝ch v README. Tam jsou i příkazy pro vytvořenĂ­ těch konečnĂ˝ch souborĹŻ se kterĂ˝mi pak pracuje ispell. Konkretně:

$ perl -pe ‘print “echo “‘ *.cat | sh – | \
perl -pe ‘s/ +/\n/g; s/[{}\.]//g; s/-/\n/g’ > czech.a-z

$ ./buildhash czech.a-z czech.aff czech.hash

a ty soubory czech.aff a czech.hash se pak nakopĂ­rujĂ­ do /usr/lib/ispell.

Tak jsem prostě mezi ty 2 kroky šoupnul:

$ cstocs il2 ascii czech.a-z > czech.a-z.bez
$ cstocs il2 ascii czech.aff > czechbez.aff

a překompiloval jsem to a zkusil, Ĺže to nefunguje. AFF soubor definuje pravidla pro rĹŻznĂŠ skloňovĂĄnĂ­ a přechylovĂĄnĂ­ a jĂĄ nevĂ­m jakĂŠ vĹĄechny -nĂ­. Někde jsem četl, Ĺže ten českĂ˝ slovnĂ­k dokĂĄĹže rozpoznat přes 60 miliĂłnĹŻ slovnĂ­ch tvarĹŻ. BohuĹžel to i ty neháčkovanĂŠ slova opravovalo na slova s háčkovanĂ˝m přechylovĂĄnĂ­m. Tak třeba slovo “tride” mi to opravilo na “tridě”. Prostě prohra. Musel bych se pouĹĄtět hluboko do těch definic přechylovĂĄnĂ­ a na to uĹž nĂĄladu nemĂĄm 🙁 Teď jsem si jeĹĄtě vzpomněl: jak jsem hledal něco o tomhle tĂŠmatu, tak jsem naĹĄel stařičkou diskusi o vzniku Czech HOWTO kam dva posty poslal Mikšíček, kterĂŠho jsem měl v uplynulĂŠm semestru na cvičenĂ­ z teoretickĂŠ informatiky.

Do čeho sem se ale naopak pustil je zĂĄlohovĂĄnĂ­ dĹŻleĹžitĂ˝ch dat na mĂ˝ch počítačích. JĂĄ uĹž jsem zĂĄlohu dělal zhruba od doby kdy jsem rozjel server. Nejdříve jsem si napsal jednoduchĂ˝ skript, kterĂ˝ proste zkomprimoval zadanĂŠ cesty, kaĹždĂ˝ do jednoho souboru s datumem v nĂĄzvu a uloĹžil jsem je na partition, kterou jsem připojoval jen po čas toho zĂĄlohovĂĄnĂ­. Tento typ zĂĄlohy byl ale dobrĂ˝ leda proti neĂşmyslnĂŠmu katastrofĂĄlnĂ­mu smĂĄznutĂ­ části dat a to jen v případě příkazu typu rm -rf / (prosĂ­m vĂĄs hlavně ho nezkouĹĄejte pouĹĄtět!!! – pokud ho pustĂ­te jako root tak vĂĄm smĂĄzne tĂŠměř celĂ˝ obsah disku) a ne proti něčemu jako přemazĂĄnĂ­ partition apod. Ten skript měl ale tu nevĂ˝hodu, Ĺže se mi nikdy nepodařilo sprĂĄvně nastavit promazĂĄvĂĄnĂ­ starĂ˝ch zĂĄloh, aby na tom disku zĹŻstĂĄvali pouze řekněme nejvĂ­ce měsĂ­c starĂŠ zĂĄlohy. Buď tedy po zaplněnĂ­ tĂŠ partition přestalo zĂĄlohovĂĄnĂ­ fungovat a nebo jsem čas od času musel ty zĂĄlohy promĂĄznout ručně.

To byl také hlavní důvod proč jsem se jednoho dne prostě rozhodl nasadit radši něco co napsal někdo jiný a také jsem brzy našel co jsem hledal. backup2l je bash skript (tedy funguje skoro úplně všude), který navíc kompletní zálohu udělá jen někdy a pak po určitou pevně definovanou dobu dělá jen zálohy změn a při restoru ty změny aplikuje na tu původní plnou zálohu. Tím se hodně šetří místem na disku a pak také záloha probíhá velice rychle.

Teď už ale mám doma 2 pořád běžící počítače, takže jako velice logické mi přijde zálohovat data jedno na disk toho druhého. Pak bych mohl o všechna data přijít jen za předpokladu, že by oba 2 disky strčené v různých počítačích vyhořely současně. Já samozřejmě čas od času dělám zálohu zálohy na CD, ale jejich frekvence je tak jednou za půl roku (vždy o prázdninách ;).

Na obou systémech používám ten backup2l a synchronizaci budu provádět pomocí ftp serveru, který stejně musím mít na obou strojích rozjetý (na APčku musí být kvůli testu downloadu a uploadu). Problém ale nastal s tím, že jsem potřeboval alespoň minimální zabezpečení, tedy aby po přihlášení uživatelé viděli všechno chrootlý, jinak řečeno aby neviděli celý filesystém, ale jen strom v určitém adresáři /var/ftp a anonymní uživatel jen /var/ftp/pub. Docela rychle jsem zjistil, že wu-ftpd (to je název toho ftp serveru, který jsem tam rozjel) se dívá do /etc/passwd a chrootne to tam, kde v cestě homedir je řetězec /./ jenže když jsem to tak nakonfiguroval tak to tak nefungovalo. Nakonec se mi podařilo chrootnout anonymouse pomocí souboru /etc/wu-ftpd/ftpaccess kde je přímo konfigurace:
anonymous-root /var/ftp/pub

No a nakonec jsem přišel na to, že i pro ostatní uživatele je v tomto souboru důležité nastavení bez kterého to co napíšete do passwd nebude mít žádný vliv. Konkrétně totiž musíte z reálného účtu v systému (tedy takového který má ten záznam v passwd) udělat guest uživatele a to tak, že do ftpaccess souboru přidáte řádek:

guestuser *

No a uĹž to funguje tak jak mĂĄ. BTW přiĹĄel jsem na to, Ĺže dříve jsem to měl na tom internetovĂŠm serveru nakonfigurovanĂŠ blbě, takĹže se opravdu divĂ˝m, Ĺže to někdo nezneuĹžil pro svoje ĂşloĹžiĹĄtě dat. No na druhou stranu kdyĹž se podĂ­vĂĄm na upload, kterĂ˝ si platĂ­m, tak se zase tak moc nedivĂ­m 😉

————————————————————
FAUX PAS S HESLEM ROOTA

Na konec se vám moji milý dva možná 3 čtenáři svěřím s jednou příhodou vážící se k mému minulému postu. Totiž jak jsem byl u toho svého kámoše, tak mi zřídil účet roota (nebo lépe řečeno zřídil jsem si ho sám na jeho nabídku, protože jsem už s více root účty na jednom kompu měl zkušenosti z routeru).

Udělá se to příkazem vipw což je vim, nakonfigurovaný tak, že se vám nejdříve otevře passwd kam přidáte řádek s uid a gid 0 a nějakým jménem a pak to samé vlastně uděláte s shadow.

Pak si změníte heslo příkazem passwd [novyroot] a pak se přihlásíte buď rovnou, nebo z shellu nějakého obyčejného usera pomocí
$ su [novyroot]

No a já sem si toho roota u něj vytvořil pod jménem nax a heslem které doma používám na roota. Samozřejmě sem v tom měl děsnej guláš, protože sem těmi roky zvyklý, že když do login napíšu nax, tak píšu heslo obyč usera. No a tak se stalo, že jsem si na konci dne po všech těch peripetiích, které jsem popsal minule, chtěl heslo na ten můj účet změnit na to, které používám doma na obyč účet. Inu stalo se no a ve středu si takhle sedím v práci a pročítám si svojí poštu (přes ssh v terminálu pomocí mutta) a tu mi přišel email, že se ten můj kámoš nemůže dostat na roota, jestli jsem mu náhodou v tu neděli nezměnil heslo!

Včera jsem šel kolem, tak jsem mu brnknul a stavil jsem se. No a co myslíte? Jeho root měl moje heslo, které používám na obyčejného usera a ten můj účet co sem si u něj vytvořil měl heslo, které doma používám na roota. Jinak řečeno: to heslo sem nezměnil sobě ale jemu. A jak k tomu došlo? Velice prostě. Prostě jsem tak jak sem zvyklý napsal příkaz passwd (tentokrát je to příkaz, ne konfigurační soubor) a dvakrát zadal nové heslo, na které se mě to nakonec ptalo. Nojo, jenže tohle funguje pro uživatele s vlastním uid. Za normálních okolností když uživatel pustí tenhle příkaz, tak si změní heslo. Jedině root, když změní tenhle příkaz s parametrem jména uživatele, tak změní heslo tomu uživateli.

Jenže když sou 2 rooti, kteří mají tedy stejné uid 0 a jen se jinak jmenují jejich účty, tak pro změnu hesla toho roota který se nejmenuje root se musí dát jako parametr jeho jméno i když to nakrásně (tak jako já) pouštíte z jeho konzole. No prostě bych si příště až někde zas budu měnit nějaké heslo měl dávat dobrý pozor na to co to vlastně měním.

Comments are closed.

Powered by WordPress