4. 11. 2022

Oprava - digitálna rýchlovarná kanvica SilverCrest

Kanvica z predajne LIDL prestala po cca. 4,5 roku takmer denného používania ohrievať. Jedná sa o  SWKD 2400 B2 značky SilverCrest (IAN 292034). Digitálna kanvica umožňuje na rúčke nastaviť želanú teplotu vody a po voľbe začne s ohrevom, ktorý ukončí na danej teplote.

SilverCrest SWKD 2400 B2

Porucha sa prejavila tak, že zvoliť teplota išla, avšak ohrev nezačal, displej sa vypol.

Shell - hranie sa s AWK

AWK najčastejšie vidieť v jednoriadkových skriptoch ako filter stĺpcov. V skutočnosti ide o skriptovací jazyk, ktorý sa hodí na zložitejšie spracovanie textu v stĺpcoch. Ponúka definíciu vlastných premenných, polí, funkcií a regulárne výrazy.

Sériovo spracúva podmienky štýlom:

podmienka1 { prikaz1 }
podmienka2 { prikaz2 }

Bloky so slovami BEGIN a END miesto podmienky sú vykonané len raz, pred a po spracovaní vstupu.

Špeciálne premenné:
NR - počet záznamov (riadkov), NF - počet polí (stĺpcov) vrámci záznamu
RS - oddeľovač záznamov, FS - oddeľovač polí
$0 - celý riadok (v print netreba uvádzať ak je to jediný argument),  $1 - prvý stĺpec, $2 - druhý stĺpec..


Príklad analyzuje dvojbodkami oddelené záznamy v súbore /etc/passwd z hľadiska bezpečnosti:

awk -F: 'BEGIN { print "=== analyza /etc/passwd" }
$3 == "0" { print "rootom je: "$1 };
$3 == "0" { print "root grupa je: "$1 };
list[$3]++{print "duplicitne id pouzite pre "$1}
/sh$/ { print "shell ma: "$1 }
END { print NR" riadkov" } ' /etc/passwd


Suma v druhom stĺpci zoskupená podľa prvého (asociatívne pole), výpis všetkých hodnôt na koniec:

awk -F\  ' list[$1]+=$2 {} END { for ( i in list ) print i" "list[i] } ' auta.txt


Výpis 3 riadkov po nájdenom reťazci

awk ' /^<Directory/ { for ( i=1; i<=3; i++) { print;getline }  } ' /etc/apache2/apache2.conf


Výpis riadkov medzi dvoma nájdenými reťazcami:

awk ' /^<Directory/,/\/Directory/ { print } ' /etc/apache2/apache2.conf


3. 11. 2022

Oprava - meteostanica TFA


Staršia meteostanica TFA-dostmann 35.1047 sa nevedela zosynchronizovať s vonkajším senzorom.
Problém bol nakoniec v zaoxidovaných kontaktoch ukrytých pod plieškami spínačov - stačilo odkryť a zoškrabať.

4. 8. 2022

Shell - find príkazy na zvýšenie bezpečnosti

V postupoch pre zvýšenie bezpečnosti Linuxu (hardening) je väčšinou aj kontrola práv súborov a adresárov.

# 1.VYHLADANIE SUID A SGID, ULOZENIE MD5SUM - INICIALNY BEH
(find / '(' -path /proc -o -path /sys -o -path /snap ')' -prune -o \
 -perm /6000 -type f -ls 2>/dev/null ; \
 find / '(' -path /proc -o -path /sys -o -path /snap ')' -prune -o \
 -perm /6000 -type f -print 2>/dev/null | xargs -n 50 md5sum) \
 | sort | tee suid_ref

# 2.POROVNAVACI BEH
(find / '(' -path /proc -o -path /sys -o -path /snap ')' -prune -o \
 -perm /6000 -type f -ls 2>/dev/null ; \
 find / '(' -path /proc -o -path /sys -o -path /snap ')' -prune -o \
 -perm /6000 -type f -print 2>/dev/null | xargs -n 50 md5sum) \
 | sort | diff suid_ref - | Mail -s 'SU zmenene' admin@yoursite.com

# 3.KONTROLA SO ZLYM POUZIVATELOM ALEBO GRUPOU (Z INEHO SYSTEMU)
find / -path /proc -prune -o -nouser -o -nogroup -ls 2>/dev/null

# 4.ZAPIS PRE VSETKYCH (NAPR ADRESAR TMP)
find / '(' -path /proc -o -path /sys -o -path /snap ')' -prune -o \
 -perm -2 ! -type l ! -type c -ls 2>/dev/null

# 5.KONTROLA TEMPU NA EXECUTABLE ALEBO SUID, SGID, LINKY
find /tmp -perm /6111 ! -type d -ls 2>/dev/null
find /tmp '(' -name '.??*' -o -name '.[^.]' ')' -type f -ls 2>/dev/null

# 6.KONTROLA NA PODVRHNUTE ZAKLADNE PRIKAZY ls, cd, grep, su, sudo V INYCH CESTACH
find / '(' -path /snap -o -path /bin -o -path /usr ')' -prune -o \
 '(' -name "ls" -o -name "cd" -o -name "grep" -o -name "su" -o -name "sudo" ')' \
 -perm -1 -type f -ls 2>/dev/null

Prvé dve vyhľadávania hľadajú súbory s právami suid/sgid, teda spustením preberajúce práva vlastníka/skupiny súboru. Vypíše ako práva a dátumy, tak aj kontrolnú sumu a uloží do "suid_ref" súboru, voči nemu druhý porovnáva zmeny. Analyzovať tak stačí zmeny.

Ignorujú cesty začínajúce /proc, /sys a /snap, sú systémom generované a posledný je read-only.

3. hľadá súbory s neznámym vlastníkom, stáva sa pri rušení používateľov alebo prenose z iného systému

4. hľadá súbory a adresáre so zápisom pre všetkých, očakávané napr. pre /tmp adresár

5. hľadá suid, sgid a executable práva v /tmp, táto kontrola síce nie je dostatočná (spustiť možno aj súbor bez práv na spustenie), avšak ľahko sa kontroluje - nemá nič vrátiť.

6. podvrhnuté náhrady príkazov pre PATH=. , táto cesta by nemusela byť nastavená, ani pre bežného používateľa, nieto root


Find možno použiť aj na konkrétny súbor na kontrolu práv:

# KONTROLA KONKRETNYCH SUBOROV NA NADMERNE PRAVA

for x in /etc/passwd:f:6133 /etc/shadow:f:6137 /etc/fstab:f:6133; do
 s=`echo $x | cut -d':' -f1`
 t=`echo $x | cut -d':' -f2`
 p=`echo $x | cut -d':' -f3`
 echo -ne "kontrola $s \t ... "
 if [ "`find $s -type $t -perm /$p`" != "" ]; then echo "NOK";
  else echo "OK"; fi
done

28. 7. 2022

Oracle - plné undo

UNDO tablespace:

  • pôvodný image zmenených dátových blokov
  • read consistency
  • rollback


Zaplnený UNDO znamená, že beží jedna veľká transakcia ktorá musí prejsť naraz. Ak neprejde, tak neprejde z nej nič. Dobré rozdeliť na menšie.

Parameter undo_retention je štandardne nastavený na 900 sekúnd (15min). Keď už nageneruje toľko, že prepíše všetky staršie záznamy, začne prepisovať aj mladšie.

Za posledných 24 hodín sa v 10min rezoch dá pozrieť využitie v tabuľke v$undostat:

select
   to_char(u.begin_time,'MM/DD HH24:MI') begin_time,
   u.undoblks undo_blocks,
   u.maxquerylen query_length_secs,
   u.unxpstealcnt, u.expstealcnt,
   u.nospaceerrcnt,
   u.ssolderrcnt ora1555_count,
   '/* '|| s.sql_id || ' */ '|| s.sql_text sql_text
from
   v$undostat u, v$sqltext s
where
   u.maxqueryid = s.sql_id (+)
   and u.maxquerylen > 0 and s.piece = 0;


25. 7. 2022

Oracle - diakritika a sqlplus

Občas je potrebné spustiť cez klienta napríklad select alebo insert príkazy s diakritikou. Oracle sice robí konverziu diakritiky do databázy, ale v takomto prípade mu treba nastaviť akú diakritiku použijem lokálne.

windows:

set NLS_LANG=C:\Users\brano2> set NLS_LANG=AMERICAN_AMERICA.EE8MSWIN1250

linux:

export NLS_LANG=AMERICAN_AMERICA.EE8ISO8859P2

Ako nastavenie parametra overiť priamo v sqlplus klientovi? Jednoducho zavolať premennú a vyčítať z chybovej hlášky.

SQL> @%NLS_LANG%
SP2-0310: unable to open file "AMERICAN_AMERICA.EE8MSWIN1250"

Prvá polovica parametra pred bodkou určuje triedenie, formát dátumu, desatinný znak, atď (LANGUAGE_TERRITORY). Formát dátumu možno nastaviť premennou NLS_DATE_FORMAT.

24. 7. 2022

Oprava - utrhnutý jack na slúchadlách a tavička

Počas herného ošiaľu sa stane, že človek zabudne na slúchadlá a rozbehne sa od počítača, trochu sa občerstviť. Občas to tenké káble v mieste 3,5mm jack konektora nezvládnu a utrhnú sa.

Prvá oprava ktorá človeka napadne je kúpiť nový, rozoberateľný jack a prispájkovať. No tento bude problém upevniť dobre na tenučký kábel a utrhne sa skôr ako zalisovaný originál.

Čas pre tavnú lepiacu pištol.