Portál AbcLinuxu, 2. května 2025 05:45

Fedora 7, Truecrypt, Yum a další

25.7.2007 20:25 | Přečteno: 2419× | LinuxStuff | Výběrový blog

Rád bych se podělil o mé zkušenosti, které jsem získal, kdýž jsem se snažil nainstalovat Truecrypt do mojí 32 bit Fedory 7. Třeba se to nějakému začátečníkovi jako jsem já někdy hodí.

Čeho bych chtěl dosáhnout ?

Nainstalovat šifrovací sw Truecrypt tak, abych jako uživatel mohl připojovat svůj pevný disk, na kterém je jeden primární oddíl, která celá patří truecryptu, je šifrovaná metodou AES256 a je formátovaná fs ntfs v 3.0 (přistupuju k ní i z win xp).

Krok první - stažení truecryptu

Na stránkách projektuhttp://www.truecrypt.org/, stáhnu potřebný balík, v mém případě truecrypt-4.3a-source-code.tar.gz . Spustím terminál, stanu se rootem a rozbalím ho, např. do /usr/src
[merljin@auriga ~]$su
Heslo: 
[root@auriga merljin]# cd ~/Download/
[root@auriga merljin]# tar xvzf truecrypt-4.3a-source-code.tar.gz  -C /usr/src/

Krok druhý - nastavení YUMu a stažení zdrojáků jádra

Používám distribuční jádro, což v současné době znamená kernel-2.6.22.1-27.fc7 Je potřeba stáhnout kompletní zdroháky, protože balík kernel-devel, který obvykle dostačuje na build modulů proti aktualnímu jádru, neobsahuje všechny potřebné soubory. Nejdříve je potřeba povolit v repozitáři Fedory archiv se zdrojáky (fedora-sources)
[root@auriga merljin]# vim /etc/yum.repos.d/fedora.repo
v sekci [fedora-source] změnit enabled na 1
[fedora-source]
name=Fedora $releasever - Source
#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/releases/$releasever/Everything/source/SRPMS/
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-source-$releasever&arch=$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora file:///etc/pki/rpm-gpg/RPM-GPG-KEY
Příkazem yum repolist ověřím, že repozitář je aktivní
[root@auriga merljin]# yum repolist
Loading "installonlyn" plugin
Loading "refresh-updatesd" plugin
Loading "fastestmirror" plugin
repo id              repo name                                 status
fedora               Fedora 7 - i386                           enabled
 fedora-source        Fedora 7 - Source                         enabled 
livna                Livna for Fedora Core 7 - i386 - Base     enabled
updates              Fedora 7 - i386 - Updates                 enabled
Nyní je potřeba stáhnout vlastní zdrojáky. Nainstaluju také balík yum-utils, který obsahuje prográmek yumdownloader, který mi umožní stáhnout zdrojáky ( má volbu na stažení všech závislostí )
 
[root@auriga merljin]# yum -y install yum-utils sparse
[root@auriga merljin]# yumdownloader --source kernel
[root@auriga merljin]# rpm -ivh kernel-$(uname -r).src.rpm
[root@auriga merljin]# cd /usr/src
[root@auriga src]# rpmbuild -bp --target=i386 /usr/src/redhat/SPECS/kernel-2.6.spec
(jsem pořad v /usr/src )
[root@auriga src]# ln -s redhat/BUILD/kernel-2.6.22/linux-2.6.22.i386/ linux

Krok třetí - kompilace a instalace Truecryptu

Přepnu se do /usr/src/truecrypt-4.3a-source-code/Linux a spustím script build.sh který pojede nějakou dobu ( kompiluje se prakticky celý kernel, pokud už nemám ) a vytvoři se truecrypt.ko
[root@auriga merljin]# cd /usr/src/truecrypt-4.3a-source-code/Linux
[root@auriga Linux]# ./build.sh 
Checking build requirements...
Preparing kernel build system in /usr/src/linux... Done.
Building internal kernel modules (may take a long time)... Done.
Building kernel module... Done.
Building truecrypt... Done.
Pak spustím install.sh , který nakopíruje modul + aplikaci + help tam kam patří Pokud vám tak jako mě script install.sh skončí chybou, že nemůže najít modprobe, je to tím, že ve Fedoře adresář /sbin ( ani /usr/sbin ) není defaultně v cestě k prohledávání ($PATH )
[root@auriga Linux]# ./install.sh 
Checking installation requirements...
Error: modprobe or rmmod not found. TrueCrypt requires kernel module tools.
[root@auriga Linux]# export PATH=/sbin:/usr/sbin:$PATH
[root@auriga Linux]# ./install.sh 
Checking installation requirements...
Testing truecrypt... Done.

Install binaries to [/usr/bin]: 
Install man page to [/usr/share/man]: 
Install user guide and kernel module to [/usr/share/truecrypt]: 
Installing kernel module... Done.
Installing truecrypt to /usr/bin... Done.
Installing man page to /usr/share/man/man1... Done.
Installing user guide to /usr/share/truecrypt/doc... Done.
Installing backup kernel module to /usr/share/truecrypt/kernel... Done.
Teď už si jen přidám práva, abych mohl truecrypt spouštět jako user. Buď je možné provést to nepěkně ( z bezpečnostních důvodu nevhodné, ale pro používání snažší ) chmod u+s /usr/bin/truecrypt nebo lépe přidat si možnost spouštět truecrypt jako uživatel
[root@auriga Linux]# visudo

a přidat na konec řádek ( viz man sudoers )
merljin ALL=/usr/bin/truecrypt

No a nezbývá než otestovat (používám ntfs-3g pro zápis na ntfs oddíly )
truecrypt --user-mount -M '-t ntfs-3g -o locale=cs_CZ.UTF-8,rw' /dev/sdd1 /media/tcv
bezva, funguje. Tak si to přidám třebas do ~/.bashrc
# User specific aliases and functions
alias mtcv="truecrypt --user-mount -M '-t ntfs-3g -o locale=cs_CZ.UTF-8,rw' /dev/sdd1 /media/tcv"
Třeba to někomu pomůže. Jiným to jistě přijde triviální, ale mě to trvalo cca 1.5 hodiny :) a ještě jsem objevil yum-utils a yum-fastestmirror :)        

Hodnocení: 75 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

Cohen avatar 25.7.2007 21:12 Cohen | skóre: 21 | blog: Drobnosti | Brno
Rozbalit Rozbalit vše Re: Fedora 7, Truecrypt, Yum a další
Odpovědět | Sbalit | Link | Blokovat | Admin

Použití suid je nebezpečné. Tvoje řešení přes sudo ale není o moc lepší. Představ si situaci, že si na tvůj počítač někdo přinese svůj TrueCrypt svazek naformátovaný nějakým unixovým filesystémem, na kterém bude mít bash s nastaveným suid bitem vlastněný rootem. Když si takový svazek připojí s parametrem suid, tak má plný přístup ke tvému počítači.

Já to vyřešil vlastním wrapperem (přiloženo níže), který teprve povoluji spouštět přes sudo bez hesla.

Pokud v tom wrapperu někdo objevíte chybu, budu vděčný za nahlášení. ;-)

$ visudo
. . .
%encrypted ALL=(root) NOPASSWD: /usr/local/bin/truecryptmount.sh
. . .
$ ls -l /usr/local/bin/truecryptmount.sh
-rwxr----- 1 root root 7076 2006-07-27 19:56 /usr/local/bin/truecryptmount.sh
$ cat /usr/local/bin/truecryptmount.sh
#!/bin/bash
#
#Tento skript slouzi ke zpristupneni nekterych funkci programu truecrypt 
#i beznym uzivatelum. Je urcen ke spousteni za pomoci sudo bez vyzadovani hesla.
#

#
#Vycisteni promennych pouzivanych skriptem.
#
unset truecryptpath
unset usergroupregexp
unset options
unset user
unset group
unset dmask
unset fmask

#
#Nastaveni cesty k obsluznemu programu truecrypt.
#
truecryptpath=/usr/local/bin/truecrypt

#
#Test, zda byl skriptu predan alespon jeden parametr.
#
if [ $# -ge 1 ]; then
    #
    #Test, zda cesta k obsluznemu programu skutecne ukazuje na spustitelny 
    #soubor.
    #
    if [ -x $truecryptpath ]; then
        #
        #Analyza predanych parametru.
        #
        case "$1" in
            #
            #Zadost o vypis vsech pripojenych svazku. Musi byt zdan prave jeden 
            #parametr.
            #
            -l) if [ $# -eq 1 ]; then
                    #
                    #Vypis vsech pripojenych svazku.
                    #
                    $truecryptpath --list
                #
                #Pokud nebyl zdan prave jeden parametr, konci s chybou.
                #
                else
                    exit 4
                fi;;
            #
            #Zadost o odpojeni vsech pripojenych svazku. Musi byt zdan prave 
            #jeden parametr.
            #
            -a) if [ $# -eq 1 ]; then
                    #
                    #Odpojeni vsech pripojenych svazku.
                    #
                    $truecryptpath -d
                #
                #Pokud nebyl zdan prave jeden parametr, konci s chybou.
                #
                else
                    exit 5
                fi;;
            #
            #Zadost o odpojeni konkretniho svazku. Musi byt zdany prave dva 
            #parametry.
            #
            -u) if [ $# -eq 2 ]; then
                    #
                    #Kontola, zda druhy parametr je cesta k beznemu souboru 
                    #nebo adresari.
                    #
                    if [ -f "$2" -o -d "$2" ]; then
                        #
                        #Odpojeni svazku identifikovaneho pripojnym bodem nebo 
                        #zdrojovym souborem.
                        #
                        $truecryptpath -d "$2"
                    #
                    #Pokud druhy parametr neni cesta k beznemu souboru nebo 
                    #adresari, konci s chybou.
                    #
                    else
                        exit 8
                    fi
                #
                #Pokud nebyly zdany prave dva parametry, konci s chybou.
                #
                else
                    exit 6
                fi;;
            #
            #Zadost o pripojeni svazku. Musi byt zadano prave osm parametru.
            #
            -m) if [ $# -eq 8 ]; then
                    #
                    #Nastaveni pomocne promenne s regularnim vyrazem, kteremu 
                    #musi odpovidat zadane jmeno uzivatele a skupiny.
                    #
                    usergroupregexp='[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_][ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_.-]*[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567899_.$-]\?';
                    #
                    #Nastaveni pomocne promenne se jmenem uzivatele, ktery ma 
                    #byt vlastnikem souboru na pripojenem svazku.
                    #
                    user=`echo "$5" | grep -x -m 1 "$usergroupregexp"`;
                    #
                    #Nastaveni pomocne promenne se skupinou uzivatelu, ktere 
                    #maji nalezet soubory na pripojenem svazku.
                    #
                    group=`echo "$6" | grep -x -m 1 "$usergroupregexp"`;
                    #
                    #Nastaveni pomocne promenne se maskou prav k adresarum na 
                    #pripojenem svazku.
                    #
                    dmask=`echo "$7" | grep -x -m 1 '[0-7]\{3\}'`;
                    #
                    #Nastaveni pomocne promenne se maskou prav k souborum na 
                    #pripojenem svazku.
                    #
                    fmask=`echo "$8" | grep -x -m 1 '[0-7]\{3\}'`;
                    #
                    #Kontola, zda treti parametr je cesta k beznemu souboru, 
                    #ctvrty parametr je cesta k adresari a pomocne promenne 
                    #obsahuji retezec nenulove delky.
                    #
                    if [ -f "$3" -a -d "$4" -a -n "$user" -a -n "$group" -a -n "$dmask" -a -n "$fmask" ]; then
                        #
                        #Nastaveni pomocne promenne s parametry pro pripojeni 
                        #svazku.
                        #
                        options="uid=$user,gid=$group,dmask=0$dmask,fmask=0$fmask,utf8,noauto,nodev,noexec,nosuid";
                        #
                        #Pokud druhy parametr obsahuje retezece '-r'...
                        #
                        if [ "$2" = '-r' ]; then
                            #
                            #...pripoj svazek se zadanymi parametry ze zadaneho 
                            #umisteni do zadaneho pripojneho bodu pouze pro 
                            #cteni.
                            #
                            $truecryptpath -r --mount-options "$options" "$3" "$4"
                        #
                        #Pokud druhy parametr obsahuje retezece '-w'...
                        #
                        elif [ "$2" = '-w' ]; then
                            #
                            #...pripoj svazek se zadanymi parametry ze zadaneho 
                            #umisteni do zadaneho pripojneho bodu pro cteni 
                            #i zapis.
                            #
                            $truecryptpath --mount-options "$options" "$3" "$4"
                        #
                        #Pokud druhy parametr nebosahuje reteze '-r' nebo '-w', 
                        #konci s chybou.
                        #
                        else
                            exit 9
                        fi;
                    #
                    #Pokud neni spravne nastaven treti nebo ctvrty parametr 
                    #nebo alespon jedna promenna obsahuje retezec nulove delky, 
                    #konci s chybou.
                    #
                    else
                        exit 10
                    fi
                #
                #Pokud nebylo zdano prave osm parametru, konci s chybou.
                #
                else
                    exit 7
                fi;;
            #
            #Pokud v prvnim parametru nebyl nalezen spravny prikaz, konci 
            #s chybou.
            #
            *) exit 3;;
        esac
    #
    #Pokud cesta k obsluznemu programu neukazuje na spustitelny soubor, konci 
    #s chybou.
    #
    else
        exit 2
    fi
#
#Pokud skriptu nebyl predan ani jeden parametr, konci s chybou.
#
else
    exit 1
fi
$ exit
> # Read-only mód.
> sudo /usr/local/bin/truecryptmount.sh -m -r '/home/michalr/enc.tc' '/home/michalr/encmnt/' 'michalr' 'encrypted' '077' '177'
> # Unmount.
> sudo /usr/local/bin/truecryptmount.sh -u '/home/michalr/enc.tc'
> # Read-write mód.
> sudo /usr/local/bin/truecryptmount.sh -m -w '/home/michalr/enc.tc' '/home/michalr/encmnt/' 'michalr' 'encrypted' '077' '177'
> # Unmount all.
> sudo /usr/local/bin/truecryptmount.sh -a
> # List.
> sudo /usr/local/bin/truecryptmount.sh -l
OpenPGP key fingerprint: 489C 5EC8 0FD6 2BE8 9E59 B4F7 19C1 3E8C E0F5 DB61 (https://www.fi.muni.cz/~xruzick7/pgp-klic/)
25.7.2007 21:28 -=eM=- | skóre: 11 | blog: Merljin | Praha
Rozbalit Rozbalit vše Re: Fedora 7, Truecrypt, Yum a další
Popravdě řečeno, ta možnost mě nenapadla. Script je to pěknej, ale momentálně nad moje schopnosti - přiliš komplikované zatím - snad až se naučím sciptovat v bashi :) Musím si ho uložit a prostudovat. Na druhou stranu, zatím to používám jen sám na svém pc, tak by rizika měla být minimální ( snad ) . Nedovedu si ale představit jak obtížný musí být spravování nějakých serverů na které má třeba na VŠ přístup ( shell ) spoustu studentů. Masakr :)
It is wiser to find out than to suppose. -- Mark Twain
25.7.2007 21:54 Lu-Tze | skóre: 15 | blog: Lu-Tzeho blog
Rozbalit Rozbalit vše Re: Fedora 7, Truecrypt, Yum a další
Hele, jenom si tipnu, tak to kdyžtak ignoruj.

BTW piš radši if not něco then exit; dělej než if něco then dělej else exit a neporoste ti to tak do šířky

Takže: Brání tenhle skriptík tomu, abych nepřeplácnoul např. /bin něčím vlastním? Ani nechci domejšlet, co by se mohlo stát, jestli ne :-)
Cohen avatar 25.7.2007 22:00 Cohen | skóre: 21 | blog: Drobnosti | Brno
Rozbalit Rozbalit vše Re: Fedora 7, Truecrypt, Yum a další
Nejsem si moc jistý, co máš na mysli. Jak chceš „přeplácnout“ /bin?
OpenPGP key fingerprint: 489C 5EC8 0FD6 2BE8 9E59 B4F7 19C1 3E8C E0F5 DB61 (https://www.fi.muni.cz/~xruzick7/pgp-klic/)
25.7.2007 22:03 Lu-Tze | skóre: 15 | blog: Lu-Tzeho blog
Rozbalit Rozbalit vše Re: Fedora 7, Truecrypt, Yum a další
No prostě jako mountpoint uvedu /bin...
Cohen avatar 25.7.2007 22:05 Cohen | skóre: 21 | blog: Drobnosti | Brno
Rozbalit Rozbalit vše Re: Fedora 7, Truecrypt, Yum a další
Aha, to je další dobrá poznámka. To by se mělo taky nějak řešit. Díky za tip.
OpenPGP key fingerprint: 489C 5EC8 0FD6 2BE8 9E59 B4F7 19C1 3E8C E0F5 DB61 (https://www.fi.muni.cz/~xruzick7/pgp-klic/)
Cohen avatar 25.7.2007 22:03 Cohen | skóre: 21 | blog: Drobnosti | Brno
Rozbalit Rozbalit vše Re: Fedora 7, Truecrypt, Yum a další
Aha, oni se tam vlastně spouští ty grepy apod. bez absolutní cesty, co? To jsi asi měl na mysli, že? Hmm . . . :-D Tak jdu záplatovat. ;-)
OpenPGP key fingerprint: 489C 5EC8 0FD6 2BE8 9E59 B4F7 19C1 3E8C E0F5 DB61 (https://www.fi.muni.cz/~xruzick7/pgp-klic/)
Cohen avatar 25.7.2007 22:06 Cohen | skóre: 21 | blog: Drobnosti | Brno
Rozbalit Rozbalit vše Re: Fedora 7, Truecrypt, Yum a další
Moment, to by nemělo vadit, ne? Sudo tuším resetuje $PATH, ne?
OpenPGP key fingerprint: 489C 5EC8 0FD6 2BE8 9E59 B4F7 19C1 3E8C E0F5 DB61 (https://www.fi.muni.cz/~xruzick7/pgp-klic/)
otula avatar 28.7.2007 00:38 otula | skóre: 45 | blog: otakar | Adamov
Rozbalit Rozbalit vše Re: Fedora 7, Truecrypt, Yum a další
Odpovědět | Sbalit | Link | Blokovat | Admin
Chtělo by to nekompilovat truecrypt přímo do systému, ale vytvořit si balíček, který se pak seriózně nainstaluje
Kdo vám tvrdí, že jste paranoidní, ten v tom spiknutí s největší pravděpodobností jede taky.

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.