Přemýšleli jste někdy, co udělá unixový příkaz před jeho provedením? Ne každý ví, co konkrétní příkaz nebo program udělá. Samozřejmě to můžete zkontrolovat pomocí Explainshell . Musíte zkopírovat/vložit příkaz na web Explainshell a ten vám dá vědět, co každá část příkazu Linuxu dělá. Není to však nutné. Nyní můžeme snadno vědět, co přesně příkaz nebo program provede, než jej provede, přímo z terminálu. Pozdravte „možná“ , jednoduchý nástroj, který vám umožní spustit příkaz a zjistit, co to udělá s vašimi soubory, aniž byste to skutečně dělali! Po zkontrolování uvedeného výstupu se můžete rozhodnout, zda jej skutečně chcete spustit nebo ne.
Jak „možná“ funguje?
Podle vývojáře
„možná“ spouští procesy pod kontrolou ptrace pomocí knihovny python-ptrace. Když zachytí systémové volání, které se chystá provést změny v systému souborů, zaprotokoluje toto volání a poté upraví registry CPU tak, aby přesměrovalo volání na neplatné ID syscall (ve skutečnosti je změnilo na ne-op) a nastavilo návratová hodnota tohoto neoperativního volání na hodnotu indikující úspěch původního volání. Výsledkem je, že proces věří, že vše, o co se snaží, se skutečně děje, i když ve skutečnosti nic.
Upozornění :Měli byste být velmi velmi opatrní při použití tohoto nástroje v produkčním systému nebo v jakémkoli systému, na kterém vám záleží. Stále může způsobit vážné škody, protože zablokuje pouze několik systémových volání.
Instalace „možná“
Ujistěte se, že jste nainstalovali Pip ve vašem systému Linux. Pokud ne, nainstalujte jej, jak je uvedeno níže, v závislosti na distribuci, kterou používáte.
Na Arch Linux a jeho deriváty jako Antergos , Manjaro Linux , nainstalujte pip pomocí následujícího příkazu:
$ sudo pacman -S python-pip
Na RHEL , CentOS :
$ sudo yum install epel-release
$ sudo yum install python-pip
Na Fedoře :
$ sudo dnf install python-pip
V Debianu , Ubuntu , Linux Mint :
$ sudo apt-get install python-pip
Na SUSE , openSUSE :
$ sudo zypper install python-pip
Jakmile je pip nainstalován, spusťte následující příkaz pro instalaci „možná“.
$ sudo pip install maybe
Vědět, co příkaz nebo program přesně udělá, než jej spustí
Použití je naprosto snadné! Stačí přidat „možná“ před příkaz, který chcete provést.
Dovolte mi ukázat vám příklad.
$ maybe rm -r ostechnix/
Jak vidíte, smažu složku s názvem "ostechnix" ze svého systému. Zde je ukázkový výstup.
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
Nástroj „možná“ provede 5 operací souborového systému a ukáže mi, co přesně tento příkaz (tj. rm -r ostechnix/) udělá. Nyní se mohu rozhodnout, zda mám tuto operaci provést nebo ne. Skvělé, jo?
Zde je další příklad. Chystám se nainstalovat Inboxer desktopový klient pro Gmail. To je to, co jsem dostal.
$ 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]
Pokud nedetekuje žádné operace souborového systému, pak jednoduše zobrazí výsledek podobný níže.
Tento příkaz jsem například spustil, abych aktualizoval svů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.
Vidět? Nezjistil žádné operace souborového systému, takže se neobjevila žádná varování. To je naprosto skvělé a přesně to, co jsem hledal. Od této chvíle mohu snadno vědět, co příkaz nebo program udělá, ještě před jeho provedením
Doporučené čtení:
- Jak simulovat příkazy Linuxu, aniž byste cokoli změnili v systému