Как получить ненулевой код выхода от Марионетки, когда конфигурация не может быть применена?

Самый легкий способ создать "защищенную среду выполнения" состоит в том, чтобы просто выполниться как непривилегированный пользователь. Процесс может затем только внести изменения в вещи, которые у пользователя есть разрешение изменить, который, если Вы создаете пользователя специально для безопасного тестирования, будет по существу ничем. Добавление и удаление пользователей являются единственной командой.

Единственная причина этот метод не был бы жизнеспособен, состоит в том, если процесс требует полномочий суперпользователя. В этом случае необходимо использовать некоторую специальную песочницу или виртуальную машину. "Песочницы" в целом не обязательно означают, что полномочия суперпользователя жизнеспособны, но они могут (q.v. man chroot).

Я выяснил путем чтения некоторых статей, что лучший способ достигнуть этого будет использовать Виртуальную файловую систему (VFS) и FUSE.

Я не уверен, почему Вы думаете это. Виртуальная файловая система является все еще просто файловой системой, таким образом, она не предлагает вида безопасности WRT исполняемые файлы в нем. Это столь же "безопасно" как монтирование карты с интерфейсом USB (содержащий файловую систему) и затем выполняющий исполняемый файл, сохраненный на нем. Просто, потому что исполняемый файл (или, в случае Python, сценария/байт-кода) хранится на съемном устройстве (или VFS) не защищает Вас ни от чего вообще.

Аналогично, я не вижу, как "Системы управления версиями файла (например, Делящий)" предлагают любой вид безопасности для хост-системы по той же самой причине. Это не их цель, BTW.

Поиск WRT чего-то, что преодолевает недостатки, которые Вы перечисляете:

  • "никакая поддержка воспроизведения или фиксации", Если "никакой поддержкой" Вы подразумеваете, что это не возможно, конечно, это возможно. Можно использовать любую методологию, которую Вы обычно использовали бы. Если "никакой поддержкой" Вы подразумеваете, что VM не включает некоторое программное обеспечение телепатии, которое корректно. Телепатия требует дополнительных аппаратных средств ;)

  • "никакие механизмы для проверки изменений, внесенных различными процессами" Так же последняя точка. Если необходимо наблюдать то, что делает процесс, можно сделать это однако, Вы обычно делали бы это- strace, профилирование, безотносительно. Могут быть специализированные песочницы, которые действительно делают это, но я думаю, что они будут специализированы вдоль конкретных строк.

На той передней стороне я не пользователь Python, а быстрый Google, ведомый к SandBoxedPython. Я не знаю, включает ли что-нибудь там инструменты, чтобы сделать трассировку для Вас, но если код, который Вы хотите протестировать, является Python, который кажется хорошим стартовым местом.

3
01.11.2014, 00:03
1 ответ

Вы можете использовать The People Applicate --help , чтобы увидеть все доступные варианты. Это тот, кто интересно:

* --detailed-exitcodes:
  Provide transaction information via exit codes. If this is enabled, an exit
  code of '2' means there were changes, an exit code of '4' means there were
  failures during the transaction, and an exit code of '6' means there were both
  changes and failures.

в вашем конкретном случае:

# puppet apply --detailed-exitcodes --debug --modulepath modules manifests/host.pp
-2
27.01.2020, 21:48

Теги

Похожие вопросы