Pull to refresh

Comments 17

Интересно, что будет, если скрестить ее с докером.

Интересно, если взять VirtualBox (или что-то подобное), запустить inotifywait и до кучи tcpdump, мы увидим больше чем предлагаемый скрипт?


Хотя и так понятно, что если программа думает что записала что-то на диск, а на самом деле не записала, то работать она будет не так как предполагается в нормальных условиях.

UFO just landed and posted this here

а в Вашем скрипте нет даже флагов


set -eu

а с ними вообще скрипт быстренько вылетит. В общем получилась утилита, может и полезная для чего-то, только теперь надо придумать для чего :)

На OSX не поддержку не завезли.
Напомнило мне старую досовскую утилиту под названием, если я правильно помню, «condom». :) Делала вид что на дискеты все записывается, а в реальности ничего не писала. :)
вывод maybe
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


Но ведь rm -r должна была удалить файлы, лежащие в каталоге ostechnix, правильно?
То есть получается, что maybe еще и файловые пути выводит неправильно.

Возможно, это rm из недоверенного места, который автор и захотел проверить с помощью maybe, прежде чем запускать?) Теперь он увидел, что этот rm удалит совсем не то, что он просит, значит его запускать не надо, это вирус)

Возможно, /home/sk/ostechnix — на самом деле символическая ссылка на /home/sk, а скрипт использует что-то вроде cd -P чтобы показать фактические пути файлов?

Смысл в том, что может показаться, что команда очистит какую-то ненужную папку, а на самом деле будут удалены файлы из домашнего каталога пользователя.
На версии 0.3.0-1 из репов Ubuntu аналогично:
Пример вызова maybe
[~]: mkdir test1
[~]: cd test1
[test1]: mkdir test2
[test1]: mkdir test3
[test1]: mkdir test3/test4
[test1]: tree
.
├── test2
└── test3
    └── test4
[test1]: maybe rm -rf test3/
maybe has prevented rm -rf test3/ from performing 2 file system operations:

  delete /home/ronkajitsu/test1/test4
  delete /home/ronkajitsu/test1/test3

Do you want to rerun rm -rf test3/ and permit these operations? [y/N]


Судя по виду, перечисление файлов без правильных относительных путей, поэтому и выводимый абсолютный путь кривой.
Если запускать не какие-нибудь вирусы, эксплуатирующие уязвимости ядра, то что мешает запускать утилиту в докере под strace? Вместо maybe.
Если я правильно понял, то maybe работает как интерпретатор команд bash скрипт, но вот вопрос. Как эта программа эмулирует/симулирует передачу адреса? В самой себе или посылая её в консоль и создавая иллюзию действия с последующим получением ответа. Просто уж слишком сильно костылями пахнет.

Бесполезная хрень. Тут уже показали, как она сломается. Итого, скрипт, который захочется проверить, сломается на третьей строчке на чём-нибудь безобидном, а когда вы его выполните целиком — грохнет вам все данные.
Нужна нормальная песочница — чтобы не просто не выдавались сообщения об ошибках, но и результаты вызовов были доступны.

Вероятно, maybe sudo pacman -Syu не сработала потому, что sudo — suid-ный бинарник, а их трассировать с помощью ptrace обычный пользователь не может.
Стоит попробовать sudo maybe pacman -Syu.

По заголовку почему-то подумал, что сейчас будем проблему остановки решать на баше.

Как узнать, что будет делать программа для Linux, не выполняя её по-настоящему?
Тут стоит отметить, что следует проявлять большую осторожность при использовании maybe в любых системах, отказ которых может привести к тяжёлым последствиям. Дело в том, что эта утилита пока ещё блокирует не особенно много системных вызовов, как результат, её использование может привести к сбоям в работе компьютера.

«Как не надо узнавать, что будет делать программа для Linux»
Sign up to leave a comment.