Dowiedz się, co dokładnie wykona polecenie lub program, zanim je wykonasz
Czy zastanawiałeś się kiedyś, co zrobi polecenie systemu Unix przed jego wykonaniem? Nie każdy wie, co zrobi dane polecenie lub program. Oczywiście możesz to sprawdzić za pomocą Explainshell. Musisz skopiować/wkleić to polecenie na stronie internetowej wyjaśniającej Shell, aby dowiedzieć się, co robi każda część polecenia systemu Linux. Jednak nie jest to konieczne. Teraz możemy łatwo dowiedzieć się, co dokładnie zrobi polecenie lub program przed jego wykonaniem, bezpośrednio z terminala. Przywitaj się z „może”, prostym narzędziem, które pozwala uruchomić polecenie i zobaczyć, co zrobi z Twoimi plikami bez konieczności robienia tego! Po przejrzeniu wymienionych wyników możesz zdecydować, czy naprawdę chcesz je uruchomić, czy nie.
Jak działa „może”?
Zdaniem dewelopera,
"może" uruchamia procesy pod kontrolą ptrace przy pomocy biblioteki python-ptrace. Kiedy przechwytuje wywołanie systemowe, które ma dokonać zmian w systemie plików, rejestruje to wywołanie, a następnie modyfikuje rejestry procesora tak, aby zarówno przekierowały wywołanie do nieprawidłowego identyfikatora wywołania systemowego (skutecznie zamieniając je na no-op), jak i ustawiło zwraca wartość tego wywołania no-op na wartość wskazującą powodzenie pierwotnego wywołania. W rezultacie proces wierzy, że wszystko, co próbuje zrobić, faktycznie się dzieje, podczas gdy w rzeczywistości nic się nie dzieje.
Ostrzeżenie: należy zachować bardzo dużą ostrożność podczas korzystania z tego narzędzia w systemie produkcyjnym lub w dowolnym innym systemie, na którym Ci zależy. Nadal może wyrządzić poważne szkody, ponieważ zablokuje tylko kilka wywołań systemowych.
Instalacja „może”
Upewnij się, że masz zainstalowany Pip w swoim systemie Linux. Jeśli nie, zainstaluj go w sposób pokazany poniżej, w zależności od używanej dystrybucji.
W Arch Linux i jego pochodnych, takich jak Antergos, Manjaro Linux, zainstaluj pip, używając następującego polecenia:
sudo pacman -S python-pipW RHEL, CentOS:
sudo yum install epel-releasesudo yum install python-pipW Fedorze:
sudo dnf install python-pipNa Debianie, Ubuntu, Linux Mint:
sudo apt-get install python-pipW SUSE, openSUSE:
sudo zypper install python-pipPo zainstalowaniu pip uruchom następujące polecenie, aby zainstalować „może”.
sudo pip install maybeDowiedz się, co dokładnie wykona polecenie lub program, zanim je wykonasz
Użycie jest absolutnie proste! Po prostu dodaj „może” przed poleceniem, które chcesz wykonać.
Pozwól, że pokażę ci przykład.
maybe rm -r ostechnix/Jak widać, zamierzam usunąć z mojego systemu folder o nazwie „ostechenx”. Oto przykładowe wyjście.
maybe has prevented rm -r ostechnix/ from performing 5 file system operations:
delete /home/sk/inboxer-0.4.0-x86_64.AppImage
delete /home/sk/Docker.pdf
delete /home/sk/Idhayathai Oru Nodi.mp3
delete /home/sk/dThmLbB334_1398236878432.jpg
delete /home/sk/ostechnix
Do you want to rerun rm -r ostechnix/ and permit these operations? [y/N] y
Narzędzie „może” wykonuje 5 operacji na systemie plików i pokazuje mi, co dokładnie zrobi to polecenie (tj. rm -r ostechnix/). Teraz mogę podjąć decyzję, czy wykonać tę operację, czy nie. Super, tak?
Oto kolejny przykład. Zamierzam zainstalować klienta komputerowego Inboxer dla Gmaila. Oto co dostałem.
$ maybe ./inboxer-0.4.0-x86_64.AppImage
fuse: bad mount point `/tmp/.mount_inboxemDzuGV': No such file or directory
squashfuse 0.1.100 (c) 2012 Dave Vasilevsky
Usage: /home/sk/Downloads/inboxer-0.4.0-x86_64.AppImage [options] ARCHIVE MOUNTPOINT
FUSE options:
-d -o debug enable debug output (implies -f)
-f foreground operation
-s disable multi-threaded operation
open dir error: No such file or directory
maybe has prevented ./inboxer-0.4.0-x86_64.AppImage from performing 1 file system operations:
create directory /tmp/.mount_inboxemDzuGV
Do you want to rerun ./inboxer-0.4.0-x86_64.AppImage and permit these operations? [y/N]Jeśli nie wykryje żadnych operacji na systemie plików, po prostu wyświetli wynik podobny do poniższego.
Na przykład uruchamiam to polecenie, aby zaktualizować mój Arch Linux.
maybe sudo pacman -Syu
sudo: effective uid is not 0, is /usr/bin/sudo on a file system with the 'nosuid' option set or an NFS file system without root privileges?
maybe has not detected any file system operations from sudo pacman -Syu.Widzieć? Nie wykrył żadnych operacji na systemie plików, więc nie było żadnych ostrzeżeń. To jest absolutnie genialne i dokładnie to, czego szukałem. Od tej chwili mogę łatwo wiedzieć, co zrobi polecenie lub program, jeszcze przed jego wykonaniem
Sugerowana lektura:
- Jak symulować polecenia systemu Linux bez zmiany czegokolwiek w systemie
Zasób:
- strona „może” w GitHubie
