Προς το περιεχόμενο

Fork bombs και άλλα τέρατα


Ozone

Προτεινόμενες αναρτήσεις

Ωραίος ο apoikos, εξαιρετικά ενδιαφέρον!

2 παρατηρήσεις μόνο (είμαι σπαστικός το ξέρω):

1. όταν κάνεις compare στο bash χρησιμοποιώντας διπλά square brackets, πρέπει να βάζεις και τις variables σε "". Δηλαδή:

>if [[ "$pid" == "./fork" ]]

Τουλάχιστον μέχρι μερικές εκδόσεις πίσω στο bash αυτό ίσχυε.

2. Πέραν του case study για το shell και τα signals δεν έχει ιδιαίτερη χρησιμότητα in real life γιατί μέχρι να κάνει όλα αυτά τα redirections και τα compare το shell, το σύστημα θα έχει σχεδόν πεθάνει.

Σε κάθε περίπτωση thanks!!!

 

P.S. και για να μην ξεχάσω. Όντως το zsh είναι πολύ καλύτερο από το bash αλλά πρώτα βγαίνει η ψυχή και μετά το χούι. Οπότε (t)csh. Παρ' όλα αυτά διαπίστωσα πως το zsh έχει προσπαθήσει να πάρει τα καλύτερα από τους 2 κόσμους και τολμώ να πω ότι τα έχει καταφέρει θαυμάσια.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Απαντ. 85
  • Δημ.
  • Τελ. απάντηση
Ωραίος ο apoikos, εξαιρετικά ενδιαφέρον!

2 παρατηρήσεις μόνο (είμαι σπαστικός το ξέρω):

1. όταν κάνεις compare στο bash χρησιμοποιώντας διπλά square brackets, πρέπει να βάζεις και τις variables σε "". Δηλαδή:

>if [[ "$pid" == "./fork" ]]

Τουλάχιστον μέχρι μερικές εκδόσεις πίσω στο bash αυτό ίσχυε.

Όχι απαραίτητα, πλέον δεν υπάρχει καν πρόβλημα με κενά, αλλά πράγματι δεν είναι κακή ιδέα. Το βασικό πρόβλημα προκύπτει όταν το string που πας να ελέγξεις είναι κενό, οπότε αν δεν έχει quoting δημιουργείται συντακτικό λάθος. Σε παλιές εκδόσεις του bash και του sh δε, για να αποφύγεις αυτό το πρόβλημα θα έκανες:

>
if [[ "x$pid" == "x./fork" ]]

Κάτι το οποίο ακόμα βλέπεις σε startup scripts που τρέχουν μέσα από busybox κλπ.

Σε κάθε περίπτωση πάντως, ορθά το τονίζεις και είναι καλή πρακτική να κάνεις quote οποιοδήποτε tested string.

 

2. Πέραν του case study για το shell και τα signals δεν έχει ιδιαίτερη χρησιμότητα in real life γιατί μέχρι να κάνει όλα αυτά τα redirections και τα compare το shell, το σύστημα θα έχει σχεδόν πεθάνει.

Σε κάθε περίπτωση thanks!!!

Φυσικά, σε κάθε περίπτωση ένα reset θα ήταν ταχύτερο, εκτός ίσως από μεγάλα μηχανήματα που αξίζει να το παλέψεις αν είναι ακόμα responsive. Δεν είναι πάντως τόοσ μεγάλος ο φόρτος εργασίας, απ' τη στιγμή που τρέχεις μέσα στο ίδιο process (που ελπίζεις ότι δεν έχει γίνει swapped out).

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

soturin

εσύ γνώρισε την Python γιατί θα σου χρειαστεί στον Blender, και αργότερα πας και σε Βίκυ !

 

πρέπει να φάτε μιά τιμωρία απο τον κύριο να μάθετε !:mrgreen:

 

θα μπεί ξαφνικά ο κύριος, και θα πάμε μερικοί άτακτοι για banιο !

.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το Alt+SysRq+k που σκοτώνει όλα τα processes στην τρέχουσα κονσόλα (και τα X) γιατί όταν το δοκιμάζω στο άσχετο πιάνει, αλλά αν έχω τρέξει την fork bomb δεν πιάνει και θέλει REISUB;

 

Δε θα έπρεπε όμως να έχουν από default κάποια προστασία τα λειτουργικά για τέτοιες περιπτώσεις; Π.χ. εκτός από το max processes per user, να υπάρχει και limit max cpu per user; Ώστε και χιλιάδες διαφορετικές μπόμπες να ρίξει ο ίδιος ο χρήστης, να μην μπορεί να φάει πάνω από π.χ. 90% cpu, ώστε να μένει και στον καημένο τον admin ένα 10%, να μπορέσει να τη σκοτώσει...

Τώρα όποιος user δει το "κόλπο", μπορεί να κρεμάσει το server για πλάκα (ειδικά σε thin clients).

 

Apoikos, επιμορφωτικότατος.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

alkisg: Τα fork bombs δεν ανήκουν στο vt7 που τρέχει ο X server, αλλά στο pts/[0-9]+ που αντιστοιχεί στο terminal που έσκασες τη βόμβα.

 

Όσον αφορά στην προστασία, μπορείς: man limits.conf. Θέτεις ένα όριο max 80-100 processes/user, maxlogins/user στο 1 (αν πρόκειται για μαθητές ας πούμε) και ενδεχομένως maxlogins στο σύστημα. Γενικά το να εντοπίσεις μια fork bomb δεν είναι τόσο εύκολο, γιατί πρέπει να βρεις ποιο process έχει το μεγαλύτερο process tree από κάτω και με heuristics να καταλάβεις αν είναι well- ή ill-behaved. Τα limits κάνουν κατά 99% καλή δουλειά πάντως για προστασία από τέτοιου είδους απειλές.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

poscaman: δεν ξέρω πως μπορεί να σχετιστεί με τη «νομιμότητα» κάτι τέτοιο. Είναι όσο νόμιμο είναι το να σβήσεις το /bin ας πούμε και σε καμία περίπτωση δε συνιστά ορθή χρήση των πόρων που σου διατίθενται. Κάνεις denial of service και προσωπικά θα σου διέγραφα το account κατ' ελάχιστον, ασχέτως παρανομίας ή όχι.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Για δώστε τώρα σαν root την παρακάτω εντολή. Όποιος μπορέσει να το "ξεκολλήσει" έχει τούρτα ολόκληρη.

 

cp /dev/zero /dev/mem

 

Μην κάνετε καμιά χαζομάρα και το τρέξετε...Πάτε άκλαυτοι!!!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.


  • Δημιουργία νέου...