2009. július 31., péntek

# Fájlrendszeri ACL-ekről


Wikipedia link. Az alap "rwx" nem lehet mindig elegendő, ezért ezt kibővíti az Access Control List.
Vajon mivel kezdünk? :)
apt-get install acl
EXT3 esetén az fstab-ban a megfelelő sorban írjuk mount opciónak még az "acl"-t! Ha nem akarjuk újraindítani a gépünket, és például a "/home"-ra állítottuk, akkor:
mount -o,remount /home
-al már is használható lesz. De például XFS esetén nem szükséges az említett plusz mount opciót megadni.
Hozzunk létre egy pár próbafilét:
for j in {0..1}; do echo "hi, ez itt a[z] $j. probafile" > probafile-$j; mkdir valami-$j; cd valami-$j; done; cd ../../
Milyen extra jogok vannak beállítva egy fájlra/vagy mappára?
getfacl probafile-0
# file: probafile-0
# owner: gbor
# group: gbor
user::rw-
group::r--
other::r--
Rekurzívan:
getfacl -R valami-0/
# file: valami-0/
# owner: gbor
# group: gbor
user::rwx
group::r-x
other::r-x

# file: valami-0//probafile-1
# owner: gbor
# group: gbor
user::rw-
group::r--
other::r--

# file: valami-0//valami-1
# owner: gbor
# group: gbor
user::rwx
group::r-x
other::r-x
Az ACL által kezelt jogok ugyan azok, mint a megszokott "rwx", csak ezek kibővítésre kerültek azzal, hogy kinek adhatunk, "rwx" jogosultságokat.
A jogok a következő kulcs szavakhoz vannak rendelve:
  • user: a jogok a felhasználóra vonatkoznak, a felhasználó az állomány tulajdonosa, ha a bejegyzés nem tartalmaz felhasználói nevet, egyébkén pedig a listabejegyzésben olvasható felhasználó.
  • group: a jogok az állomány tulajdonoscsoportjára vonatkoznak, ha a bejegyzés nem tartalmaz csoportnevet, egyébként pedig a bejegyzésben található csoportra.
  • other: a bejegyzésben található jogok azokra a személyekre [folyamatokra] vonatkoznak, amelyekre egyetlen más ACL bejegyzés sem vonatkozik.
  • mask: az ilyen jellegű bejegyzések a megadható legmagasabb jogokat mutatják, amely jog tehát nem szerepel ebben a maszkban, azt nem kaphatja meg senki, hiába szerepel a jog a másik bejegyzésben. Kivételt képez ez alól az állomány tulajdonosa és az other kulcsszóval megadott csoport, akiknek a jogait a maszk nem korlátozza.
Adjunk olvasási és írási jogot egy bizonyos felhasználó számára:
setfacl -m u:gbor2:rw probafile-0
Nézzük meg, mit műveltünk:
getfacl probafile-0
# file: probafile-0
# owner: gbor
# group: gbor
user::rw-
user:gbor2:rw-
group::r--
mask::rw-
other::r--
Tett egy plusz mask sorunk, látszanak a hozzáadott jogok a "gbor2" usernek, és egy "ls -lh" a filére már rak egy "+" jelet ezentúl, jelzésképpen, hogy ott nem csak az alap rwx jogosultságok léteznek:
ls -lh probafile-0 -rw-rw-r--+ 1 gbor gbor 29 2010-01-01 01:01 probafile-0
Most távolítsuk el az imént hozzáadottakat:
setfacl -x user:gbor2 probafile-0
getfacl probafile-0
# file: probafile-0
# owner: gbor
# group: gbor
user::rw-
group::r--
mask::r--
other::r--
Rekurzívan módosítani:
setfacl -R -m u:gbor2:rw valami-0/
Rekurzívan törölni:
setfacl -R -x u:gbor2 valami-0/
Az összes ACL bejegyzés egy paranccsal törölhető:
setfacl -b probafile-0
Ugyan így rekurzívan megint, stb..:
setfacl -R -b valami-0/
Példa: Egy "gbor" nevű felhasználó egy közös munka megkezdésekor egy "gbor2" emberkével szeretne együtt dolgozni, mármint olykor közös fájlokat használni. A felhasználó nevében:
cd /home/gbor/
mkdir kozos
cd kozos
echo "megosztott szoveg" > olvassel.txt
cd ..
"gbor" x jogot ad [ :D:D ] "gbor2"-nek a "/home/gbor"-ra:
setfacl -m user:gbor2:--x $HOME
Most a közös mappa [de másnak ne legyen joga hozzá]:
setfacl -R -m user:gbor2:rwx,other::--- kozos/
De: mivan, ha a "kozos"-ben egy új mappát/fájlt hoz létre valaki? Nem muszáj [ :D ] beállítani újra az ACL-t azon a fájlon, hanem létezik egy "default" kapcsolója a "setfacl"-nek, amivel megadhatunk öröklődést:
setfacl -m d:u:gbor2:rwx,o::--- kozos/
A "user"-t lehet rövidíteni "u"-nek is. "Group"-ot: "g"-nek, "other"-t "o"-nak.
cd kozos
mkdir barmi
getfacl barmi/
# file: barmi/
# owner: gbor
# group: gbor
user::rwx
user:gbor2:rwx
group::r-x
mask::rwx
other::---
default:user::rwx
default:user:gbor2:rwx
default:group::r-x
default:mask::rwx
default:other::---
ui.: Mount options
ui2.: Alap user kezelés

# Wiimote csatlakoztatása és beállítása távirányítóként Linux alatt


Mi az a wiimote? [Röviden, egy sokoldalú távirányító a Wii konzol mellé.]
Anno írtam róla, hogyan lehet helyettesíteni vele egy drága digitális táblát [by: Johnny Chung Lee] [készítettem Magyar feliratot az eredeti videókhoz], pedig csak 10e RMF-be kerül [Rossz Magyar Forint :) ].

Van benne egy nagy felbontású infra érzékelő, és egy infra tollal lehet "hadonászni" :) egy táblára írva, ennyi, ezt érzékeli, és lehet egy projector segítségével olyan hatást elérni, mint ha az infra tollal írnánk. Van benne gyorsulásmérő, és egy rezgő motor is. Kreativitás szabhat csak határt :D

Most csak gyorsan leírom, hogyan lehet csatlakoztatni, mint távirányítót, és megadni neki gombokat, pl.: mplayer-nél az "f"-betű a teljes képernyőre való állításhoz, ESC a kilépés, "o"-betű a kijelzésre, hogy hol tart a videó, szóköz a pause-nak, stb.
Kell egy pár csomag:
apt-get install wminput lswm gtkwhiteboard wmgui
A "wmgui"-t ebből nem használjuk, csak azért kell, hogy pl.: egy szép grafikus felületen lehet látni pl.: az infra érzékelőjének, vagy a gyorsulásmérőjének az adatait, stb., a "gtkwhiteboard"-al pedig lehet a digitális táblás apróságot próbálgatni :) [egy öngyújtó is ad infra jelet, tehát azzal is lehetne írni egy táblára :D ]
Töltsük be egy neki kellő modult:
modprobe uinput
Vajon tényleg betöltődött?
lsmod | grep uinput
Állítsuk be, hogy egy reboot után ne nekünk kelljen újra "modprobe"-olni:
echo "uinput" >> /etc/modules
Ok, most megszerkeszthetjük a config filéjét [Vim-hez segítség itt]:
vim /etc/cwiid/wminput/buttons
Wiimote-ról kép itt. A config fájl csak két oszlopból áll: első része a wiimote-on levő gombok, második rész pedig, hogy mit akarunk hozzájuk rendelni, én ezeket módosítottam:
Wiimote.Minus = KEY_ESC
Wiimote.1 = KEY_SPACE
Wiimote.2 = KEY_O
Wiimote.Home = KEY_F
Az egeret a gyorsulásmérő segítségével irányíthatjuk.. :D
Ok. Csatlakoztassuk Bluetooth-on keresztül:
wminput $(lswm -q)
Az "lswm -q"-val megkapjuk a wiimote MAC address-ét, amit megadunk a "wminput"-nak. Kérni fogja, hogy nyomd meg egyszerre az "1&2"-es gombokat, kéken elkezdenek villogni a rajta levő LED-ek, ekkor kereshető.
ui.: a "wminput"-ot lehet infra érzékelésre is használni, de ~nem a legjobb, inkább "gtkwhiteboard".

# Video out állítása


Ha pl.: van egy S-videó kábeled + mellé audió is, ami pl.: Scart-ban végződik [ezzel próbáltam], akkor hogyan lehet az X újraindítása nélkül clone-módba állítani a kijelzőket?

Előtte egy dolog - ha esetleg fekete-fehér lenne a kép, mert NTSC-re volt állítva, nem pedig PAL-ra:
xrandr --output TV --set TV_FORMAT PAL
Infókat így tudhatsz meg:
xrandr --verbose
Csak ez után dugd össze az S-videó kábelét a videókártyáddal, és:
xrandr --auto
ui.: Mi az aktuális képernyő felbontásom?

2009. július 22., szerda

# Mount options


Csak a felosztásról/mount opciókról, mert így nagyobb biztonság érhető el: LVM-el - dm_crypt [AES 256]-al a teljes HDD titkosítva - kivéve a "/boot":
mount point type options size dump pass
/ xfs defaults,noatime 2 GB 0 1
/boot xfs defaults,noatime,nodev,nosuid,noexec 256 MB 0 2
/home xfs noatime,nodev,nosuid * GB [ami marad] 0 2
/tmp xfs noatime,nodev,nosuid,noexec 10 GB 0 2
/usr xfs noatime,nodev 6 GB 0 2
/var xfs noatime,nodev,nosuid 3 GB 0 2
none swap sw 1 GB 0 0
Ha menet közben szeretnénk "újracsatolni", mert pl.: módosítottunk a mount opcióin:
mount /tmp -o remount
  • Miért XFS-t fájlrendszernek? Mert gyorsabban fut le rajta az esetleges fsck + amit kitörlök, azt nehezebb visszahozni + mert szeretem a feature-jei miatt :D:D
  • Minek a teljes HDD titkosítása? Mert ez esetben a laptop-om volt, nem tárolok rajta jaj de "non-public" dolgokat, egyszerűen csak r*h*djon meg az, aki ellopná :). +Nem mellesleg nagyobb biztonság, miszerint nem fognak tudni csak úgy bebootolni egy LiveCD-t, és hozzáférni az adatokhoz, ergo hitelesség, biztonság növelés.
ui.: Filerendszer felcsatolása
ui2.: Debian 5 Lenny telepítés - Hogyan.org

2009. július 18., szombat

# Kernel forgatás [alap leírás]


Mindenkinek a saját felelősségére. Nem annyira jellemző Debian alatt. De vannak disztribúciók, esetleges célok/igények, amikor mégis kellhet. Olvasd végig az egészet, és csak utána kezdj bele.
Lenny alatt jelenleg a "2.6.26-2"-es kernel van gyárilag, de mi a példa kedvéért alá szeretnénk rakni a jelenlegi legfrissebb stable kernelt, a "2.6.30-1"-est.
Töltsük le a forráskódot, tömörítsük ki, lépjünk bele a mappájába, majd másoljunk neki egy configot:
cp /boot/config-2.6.26-2-686 ./.config
Mielőtt elkezdenénk, kell egy pár csomag a gépre [figyelmeztet, hogy mégis mi hiányzik még a gépről]:
apt-get install gcc make libncurses5-dev
Most, ha akarsz/kell:
make menuconfig
-ban módosíthatod a config-ot, miszerint pl.: mi legyen "modulként", mi legyen "built-in"-ként, vagy mi ne legyen az elkészülő kernelben. Ez után már lehet kezdeni fordítani. A "make" parancsnak van egy "-jX" kapcsolója, ahol az "X" egy számot jelent, hogy hány szálon fog dolgozni/forgatni. Tehát pl.: csak tipp: két magos procinál:
time make -j2
legyen a parancs [azért a "time" elé, mert így a végén megtudhatjuk, hogy mennyi ideig tartott - nálam az első alkalommal: "real: 50m11.194s" - T7100-as C2D procival]. Ekkor rákérdezhet rengeteg dologra, egyszerűen üssünk entert [illetve tartsuk folyamatosan lenyomva azt, mivel említetten sok dologra kérdez rá, a default válaszok jók. A te régi kerneled configja, és az új közötti különbségek miatt teszi csak ezt]. A forgatás eltarthat egy jó darabig, gép/config file beállítástól nagyon függ. [Egy esetleges "megszakítás" esetén a "make"-nél ott kezdi, ahol "abbahagyta".] Kernel lefordulva, telepítsük [csak is innentől _kell_ "root" jog]:
time make modules_install install
Másoljuk az elkészült "fájlt" a helyére ["x86" helyett lehet, pl.: "x86_64", amilyen architektúrád van]:
cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.30-1
initrd image:
time mkinitramfs -o /boot/initrd.img-2.6.30-1 2.6.30.1
Ha nem akarod kézzel szerkeszteni a GRUB beállításait, akkor csak ezt a parancsot add ki:
update-grub
De viszont figyelj arra, hogy biztos ~így nézzen ki a "/boot/grub/menu.lst"-ed megfelelő része:
title
root
kernel
initrd
kernel 2.6.30.1-barminev
(hd0,1)
/boot/vmlinuz-2.6.30-1 root=/dev/hda2 ro
/boot/initrd.img-2.6.30-1
Mármint az "update-grub" az "initrd"-részt nálam kihagyta. A "/dev/XdXX", "(hdX,X)", mindenkinek változó lehet, ezt majd látni fogod [az "update-grub" azt legenerálja]. Szerkesztéshez használj pl.: Vim-et.
Kész, reboot.
ui.: Kernel forgatás - hupwiki, itt pedig egy sulinetes írás, itt pedig egy a cyberciti-ből. ""Bagoj úr blogja"". És még egy Hup.hu link.
ui2.: Pl.: Gentoo-sok szerintem több tucat/száz oldalt beszélhetnének kernel forgatásról, majd még később bővítem esetlegesen ezt az alap írást :D
ui3.: Csak egy megjegyzés.
ui4.: Roll a kernel Debian, Ubuntu way
ui5.: The Kernel Newbie Corner - csak hátha talál itt valaki valami "érdekeset" :) .
ui6.: Program fordítás Linuxon
ui7.: Saját Kernel Fordítása Ubuntu 9.04 Rendszeren
ui8.: KernelCheck: kernel compiling process as easy as the click of a button
ui9.: Kernel compile and install on Debian 5.0 for newbies
ui10.: Kernel Compilation & Installation on Ubuntu - KernelCheck
ui11.: Kernel forgatás, hup, egy és kettő.

2009. július 14., kedd

# Mely fájlok mikor módosultak a gépen?


Legfeljebb egy perccel ezelőtt módosultak:
find / -mmin 1
Az elmúlt ötödik, és tizedik perc közt módosult fájlok:
find / -mmin +5 -mmin -10
Az elmúlt 24 órában:
find / -mtime 0
Az elmúlt 24 órában:
find / -mtime -1
Az elmúlt 24, és 48 óra közt:
find / -mtime 1
48 óránál több ideje:
find / -mtime +1

2009. július 2., csütörtök

# Vágólap használata terminálból [xclip]


Telepíteni..:
apt-get install -fy --force-yes xclip
Pár tipp - szöveg vágólapra vitele:
echo -e "valami-elso-sora\nvalami-masodik-sora" | xclip
állományban levő szöveg vágólapra vitele [amúgy "-i filenev" lenne, de így is jó]:
xclip filenev
vágólapra vitel, de úgy, hogy GUI alól is be lehessen illeszteni [különböző karakterkészleteket "nem szereti" :) ]:
echo -e "valami-elso-sora\nvalami-masodik-sora" | xclip -selection c
beillesztés:
xclip -o
ui.: Ezzel az "X vágólapjáról" is illeszthetünk be szövegeket, pl.: egy GUI-s böngészőben jobbegér-másolás-al "elmentünk" egy URL-t, azt egy terminálban "xclip -o" kiadása után viszont láthatjuk.
ui2.: Innen és innen.
ui3.: Kell futnia x-session-nak a működéséhez...