ნარჩევი ბრძანებები ტერმინალისთვის – old but gold

თუ გაინტერესებთ 1 ბრძანებით როგორ უნდა გააფუჭოთ, დაკიდოთ ან სრულიად გაანადგუროთ ლინუქსის სისტემა, განაგრძეთ კითხვა.

1.

ქვემოთ მოცემული პუნქტუაციის ნიშნების გროვა წარმოადგენს bash-ის ფუნქციას. ის არის .ე.წ. fork bomb შეტევის მაგალითი. ასეთ დროს, გარკვეული პროცესი საკუთარი თავის რეპლიკაციას ახდენს და უფრო და უფრო მეტ რესურსს მოიხმარს სისტემის საბოლოო დაკიდება/გათიშვამდე.

:(){ :|: & };:

უფრო უკეთ რომ ავხსნათ როგორ მუშაობს კონკრეტულად ეს ბრძანება, დავყოთ ის სამ ნაწილად :(){ :|: & };:

:() ქმნის ფუნქციას, რომელსაც ჰქვია :

{ :|: & }; უშვებს : ფუნქციას, მისი output-ს აწვდის ისევ : -ს, ხოლო & ნიშნავს, რომ ეს ყველაფერი მოხდეს background პროცესად

: უშვებს ფუნქციას ტერმინალში

გირჩევთ გატესტოთ ლინუქსის ვირტუალურ ინსტალაციაზე.

რაც მთავარია ამ ბრძანების გაშვებას root არ სჭირდება. შეინახეთ ეს პოსტი ბავშვებისთვის ხელმიუწვდომელ ადგილას!

2.

კიდევ ერთი შემზარავი ბრძანებაა

mv <folder_name> /dev/null

ეს ბრძანება, იღებს (cut) <folder>-ს და გადააქვს /dev/null-ში.

/dev/null წარმოადგენს სპეციალურ ფაილს, რომელსაც ხანდახან შავ ხვრელს უწოდებენ – ყველანაირ მონაცემს, რასაც კი გავუგზავნით, გადაყრის, მაგრამ არეპორტებს რომ write/copy ოპერაცია წარმატებით შესრულდა.

მეორეს მხრივ, ეს ბრძანება რომ გატესტოთ, შეძლება საერთოდ არ გაეშვას ტერმინალში (ერორებს ამოყრის). თუმცა უმჯობესია რაიმე ისეთი ფოლდერით გატესტოთ, რომელშიც მნიშვნელოვანი მონაცმეები არ გიყრიათ.

3.

ყველასათვის საყვარელი

rm -rf /

ეს ბრძანება შლის / (root) ფოლდერს.

/ არის მთავარი ფოლდერი ლინუქსში, რომელშიც სხვა ყველაფერი დანარჩენია განთავსებული. ანუ როგორც მიხვდით, ეს ბრძანება ოპერაციულ სისტემას თავისი იუზერების ფაილებიანად შლის (თუმცა გაშვებას root სჭირდება).

rm არის ფოლდერის/ფაილის წაშლის ბრძანება.

-r ნიშნავს, რომ sub-folder-ებსაც მიყვეს წაშაშლელად.

-f ნიშნავს force-ს, აუ იგნორირება გაუკეთოს ყვევა გაფრთხილებასა და შეცდომას და წაშალოს ყველაფერი.

ამ ბრძანების გაშვების შემდეგ, ლინუქსის სისტემისგან არაფერი დარჩება 🙂

4.

mkfs არის ბრძანება, რომელიც ფაილური სისტემების შესაქმნებლად/დასაფორმატებლად გამოიყენება.

mkfs-ს შემდეგ რა ფოლდერსაც ან დრაივსაც მივუთითებთ, დაფორმატდება და ცარიელი ფაილური სისტემით შეიცვლება.

5.

ლინუქსის ოპერაციულ სისტემაში შეიძლება გავაკეთოთ ბომბი!

უფრო კონკრეტულად კი ე.წ. tar ბომბი.

tar არქივია, რომელშიც შეიძლება მილიონობით ფაილი იყოს ჩაყრილი. ასეთი “ბომბი” შეიძლება ვინმემ ბოროტად გახუმრებისთვის გამოგიგზავნოთ. და თუ წინასწარ არ გავითვალისწინებთ და ცალკე გამოყოფილ ფოლდერში არ ჩავყრით, არქივის ფაილები სხვა ფაილებს შეერევა და მათგან ჩვენი ფაილების გამოხშირვა თივის ზვინში ნემს(ებ)ის ძებნას დაემსგავსება.

ცალკე გამოყოფილ ფოლდერში ჩაყრის გარდა, შეგვიძლია tar არქივს შევხედოთ -t ატრიბუტით და გამოარქივებამდე დავინახავთ რამდენი და რა ფაილები არის არქივში

tar -tf archive_name.tar.gz

tar ბომბის მსგავსი მეთოდია ე.წ. კომპრესირებული ბომბის გაგზავნა ვინმესთვის. შესაძლებელია, რომ ათობით გიგაბაიტი მონაცემი რამდენიმე ათეულ კილობაიამდე შევკუმშოთ. გამოაარქივებისას კი, იუზერს ფაილური სისტემა შეიძლება გადაევსოს.

ვირტუალბოქსის პრობლემა Kali-ზე

რამდენიმე ხნის წინ Kali-ზე ვირტუალბოქსის (4.3.12 ვერსია, Debian 7.0 (“Wheezy”)-სთვს) გაშვება დამჭირდა. Kali დაყენებული მქონდა 64-ბიტიან HP EliteBook 8460-ზე.

ვირტუალბოქსისა და guest ოპერაციული სისტემის ინსტალაციის შემდეგ კი, ჩემი ვირტუალური OS აღარ ეშვებოდა შემდეგი შეცდომის გამო (რომელსაც გვარიანად ვეწვალე):

Kali Virtualbox Error

 

თვითონვე გთავაზობს გამოსავალს “/etc/init.d/vboxdrv setup” ბრძანების გაშვებით, რაც უშედეგოდ მთავრდება. გამოსული შეცდომა და ლოგების ნახვა ლინუქსის საჭირო ჰედერების არარსებობაზე მიუთითებს.

პრობლემა არ გვარდება DKMS პაკეტების დაინსტალირებით: https://packages.debian.org/squeeze/dkms (ინსტალაციის შემდეგ “/etc/init.d/vboxdrv setup”-ის გაშვება იგივე ერორს იძლევა).

ლინუქსის ფორუმებზე უხვად არის გამეორებული, რომ კერნელის ჰედერების დაინსტალირებისთვის საჭიროა შემდეგი ბრძანების გაშვება:

sudo apt-get install linux-headers-$(uname -r)

თუმცა “linux-headers-3.7-trunk-amd64”-სთვის ჰედერს ვერ ერთ repository-ში ვერ პოულობდა:

unable to locate package linux-headers-3.7-trunk-amd64

როგორც აღმოჩნდა პაკეტები ამ ჰედერისთვის ძირითადი რეპოებიდან უკვე წაიშალა. Kali-ს ფორუმზე მივაგენი სოლუშენს:

/etc/apt/sources.list-ში (ამ ფაილში განსაზღვრულია საიდან უნდა გადმოიწეროს სისტემამ აფდეითები) უნდა ჩავამატოთ შემდეგი ხაზი:

deb http://snapshot.debian.org/archive/debian/20130201T032911Z/ experimental main contrib non-free

შემდეგ ვუშვებთ ბრძანებებს:

sudo apt-get -o Acquire::Check-Valid-Until=false update (რეპოების არქივებში პაკეტების შემოწმების დროს მათ timestamp-ს რომ არ მიაქციოს ყურადღება, რადგანაც უკვე გადაგდებული პაკეტები გვჭირდება ვირტუალბოქსის ასამუშავებლად)

sudo apt-get install build-essential linux-headers-$(uname -r)

პაკეტები წარმატებულად ინსტალირდება. მერე ვუშვებთ ვირტუალბოქსის ერორში ნახსენებ ბრძანებას:

/etc/init.d/vboxdrv setup

რაც შეცდომების გარეშე უნდა დასრულდეს და ვირტუალური OS-ის გაშვებაც უპრობლემოდ უნდა მოახერხოთ.

აუცილებლად წაშალეთ ჩამატებული ხაზი (“deb http://snapshot.debi…mental main contrib non-free”) /etc/apt/sources.list-დან! (რადგანაც ძველ ან ექსპერიმენტულ პაკეტებს შეიცავს).

ვირტუალბოქსის ამ უაზრო, გადაშენებულ პაკეტებზე დამოკიდებულებამ რამდენიმე საათი დამაკარგვინა.

პითონის default ვერსიის შეცვლის, სიმბოლური ლინკებისა და yum-ის KeyboardInterrupt ერორის ამბავი

რამდენიმე ხნის წინ დამჭირდა პითონის დააფდეითება 2.7.5-დან 3.2.3-ზე ჩემს ფედორა 19-ზე. დააფდეითების შემდეგ ($ sudo yum upgrade python), ვერსიად მაინც ძველს (2.7.5) მაჩვენებდა.

მცირედი დაგუგლვის შემდეგ ვიპოვე, რომ საკითხის მოგვარება მარტივად შეიძლება პითონის სიმბოლური ლინკის შეცვლით:

/usr/bin-ში (სადაც არის პითონის ინსტალაცია), არის ფაილი python, რომელიც უთითებს პითონის ვერსიაზე.

ამის შემოწმება შეგვიძლია შემდეგნაირად:

$ readlink /usr/bin/python

python2

python2 იყო ბრძანების პასუხი.

symbolic link-ების შესაქმნელად თუ შესაცვლელად ვიყენებთ ln-ს. შეიძლება symbolic link ისე შევცვალოთ, რომ არ წავშალოთ.

პითონის შემთხვევაში:

$ ln -f -s /usr/bin/python3 /usr/bin/python

$ readlink /usr/bin/python

-f არის ბრძანების ფორსირება. -s არის სომბოლური ლინკის შექმნა. ამის შემდეგ, ჯერ ვუთითებთ target ფაილს/ფოლდერს, შემდეგ კი ლინკს.

შედეგი:

$ python –version

Python 3.2.3

ამას კიდევ ერთი შედეგი მოჰყვა. კერძოდ ის, რომ yum-მა პროტესტის ნიშნად მუშაობაზე უარი განაცხადა. ნებისმიერი პაკეტის ინსტალაციის თუ აფდეითის დროს, აგდებდა შეცდომას:

File “/usr/bin/yum”, line 30

except KeyboardInterrupt, e:

გამოძიებამ დაადგინა, რომ საქმე სამხრეთ ამერიკული სერიალის სიუჟეტივით ყოფილა ჩახლართული.

პითონის 3.2.3 ვერსიას ჰქონია ავი ზნე: სისტემას მოყოლილ პითონის ინსტალაციის ბრძანება python-ს ცვლის. რა შუაშია yum-თან? ეს უკანასკნელი პითონის (2.7.5 ვერსიის) გარვეულ მოდულებს იყენებს.

მოკლედ, ინტერნეტში ბევრი სხვადასხვა ვერსიაა პრობლემის მოსაგვარებლად. მაგალითად, რჩევა $ yum clean all ბრძანების გაშვებისა. არ დაიჯეროთ. yum საერთოდ არ ეშვება და აბა clean all-ს როგორ იზამს.

მოკლედ, “დავროლბექდი” ისევ 2.7.5-ზე სიმბოლური ლინკების გადართვით:

$ ln -f -s /usr/bin/python2 /usr/bin/python

ცოტაოდენი კითხვის შემდეგ აღმოვაჩინე, რომ თუ პითონის ახალ ვერსიას დავაინსტალირებთ make install-ით უარესად იქნება საქმე და yum-ს შეიძლება მხოლოდ პითონის ძველი ვერსიის ფორსირებულმა გადაინსტრალირებამ უშველოს. აქ არის დეტალები: http://stackoverflow.com/questions/11171015/python-and-yum-issue-centos-5-4

ალტერნატივა (ანუ საჭიროების შემთხვევაში პითონის ახალი ვერსიის გამოყენება) არის პითონის სასურველი ვერსიის ცალკე დაინსტალირება (ძველი ვერსიის შენარჩუნებით) და “პირდაპირ დაძახება” python3-ით ან /usr/bin/python3.3-ით.

$ python3 –version

Python 3.3.3