maybe
コマンドラインからの操作ではrm
等は不可逆な操作で
不用意にコマンドを走らせて後悔したことの一回や二回
は必ずあるはずです。
Python製で、インストールはpipで
$ sudo pip install maybe
インストールするとmaybe
コマンドが使える様になって、
使いたいコマンドをmaybe
の引数に与えてあげると、
$ maybe mkdir testDir
maybe has prevented mkdir testDir from performing 1 file system operations:
create directory /tmp/testDir
Do you want to rerun mkdir testDir and permit these operations? [y/N] y
こんな感じで変更点が挙げられた上で実際に
実行するか聞かれ、y
を押せば実際に実行されます。
特に重要なファイルを変更するような物をスクリプトを 実行する際には一度挟んで確認するにはとても便利だと思います。
ただし、READMEにもありますが、maybe
では擬似的にコマンドを実行して、
ファイルなどへの変更を行うプロセスを回避する、みたいなことをしているので、
ここに攻撃を含ませる様な事は可能です。
なので怪しいスクリプトやコマンドを試すために使う、みたいな使い方はしないでください、とのこと。
あくまで自分で書いた信頼できるスクリプトなどでの確認の為に使う程度で。
ただし今のところMacだと使えないようです。
Macだと
$ maybe mkdir testDir
Warning: Running without traceFork support. Syscalls from subprocesses can not be intercepted.
Traceback (most recent call last):
File "/usr/local/bin/maybe", line 11, in <module>
sys.exit(main())
File "/usr/local/lib/python2.7/site-packages/maybe/maybe.py", line 154, in main
prepareProcess(process)
File "/usr/local/lib/python2.7/site-packages/maybe/maybe.py", line 53, in prepareProcess
process.syscall()
File "/usr/local/lib/python2.7/site-packages/ptrace/debugger/process.py", line 469, in syscall
ptrace_syscall(self.pid, signum)
File "/usr/local/lib/python2.7/site-packages/ptrace/binding/func.py", line 254, in ptrace_syscall
ptrace(PTRACE_SYSCALL, pid, 1, signum)
File "/usr/local/lib/python2.7/site-packages/ptrace/binding/func.py", line 148, in ptrace
raise PtraceError(message, errno=errno, pid=pid)
ptrace.error.PtraceError: ptrace(cmd=22, pid=69183, 1, 0) error #22: Invalid argument
な感じでエラーが出ます。 Issueを見る限り、簡単に回避できる問題じゃ無さそうなので すぐに対応できるということは無さそうです。
Linuxでコマンドラインゴミ箱
ちなみにrm
による即時削除をなんとかしたい、と言う場合のために
trash
というコマンドを以前作りました。
シェルスクリプトなのでコマンドラインならMacでもLinuxでも使えます。 割と便利です。
Sponsored Links