Назад | Перейти на главную страницу

Утилита Linux для отслеживания глупых /, вероятно, непродуманных команд

sudoing добавляет небольшую преграду для выполнения потенциально глупых и опасных вещей в оболочке Linux, но это скудный сдерживающий фактор для новых пользователей Linux. Тем не менее, многие пользователи входят в систему как root или стали нечувствительны к sudo, и иногда может делать плохие вещи, например:

Похоже, что есть несколько случаев, в которых пользователь действительно хотел бы это сделать - их использование, вероятно, на 1% преднамеренно и на 99% случайно. Конечно, было бы лучше сделать резервную копию ваших систем и не делать таких опасных вещей, но новички делают ошибки, а Linux не прощает ошибок.

Я не прошу UAC, но есть ли какая-то утилита, которая может контролировать консоль / SSH / другое интерактивный сеансов для ввода команд и прогнать ее через какой-то валидатор перед выполнением? Несколько правил регулярных выражений могут предотвратить много проблем, особенно для новых администраторов Linux, и поскольку большую часть времени вы не запускаете большое количество команд из интерактивного сеанса, это не будет слишком большим препятствием. В идеале, утилита должна генерировать дополнительное подтверждающее сообщение - «Вы УВЕРЕНЫ, что хотите пройти через это, потому что это выглядит действительно глупо» - и потребовать от администратора ввести что-то, подтверждающее опасность, выходящую за рамки стандартного «да», чтобы он вынужден прочитать это.

Существует ли такая утилита? Если да, то хотелось бы знать, где его взять.

Если нет, а это плохая идея, объясните, почему.

Хотя я понимаю, чего вы пытаетесь избежать и почему вам может понадобиться такая утилита, примите во внимание следующее: что вы делаете с ожидаемыми диалоговыми подсказками? Вы их быстро закрываете / подтверждаете без дополнительных размышлений. Добавление ожидаемого «нажмите Y, чтобы серьезно запустить эту команду» будет просто еще одним «да, я уверен, уволить».

К сожалению, перехватить потенциально опасные или уничтожающие данные команды не так просто, как "несколько правил регулярных выражений". Для этого вам нужно будет перечислить довольно подробный список команд и комбинаций для защиты от «ошибок» (учитывая, что каждый канал, перенаправление, копирование файлов, инструмент связывания имеют последствия для потери данных / безопасности).

Таким образом, я не знаю ни одного существующего инструмента, позволяющего это сделать. Тем не менее, возможно, это отличная идея, в которой люди найдут большую пользу. Если вы действительно хотите поэкспериментировать со своей идеей, вы можете начать с псевдонима некоторых «опасных» команд, которые будут запускаться после «оболочки подтверждения».

Чтобы начать работу со сценарием, ознакомьтесь с этой простой функцией, которую я взломал для автоматического установщика: https://github.com/tristanfisher/culinary/blob/master/culinary.bash#L42-52

edit: Я на самом деле думаю, что это довольно крутая идея, особенно если бы она была доступна в виде пакета, который можно было бы легко установить. У вас есть новый пользователь Linux CLI? apt-get install cli-seatbelt и добавьте строку в его / ее $ SHELLrc. Я бы не стал доверять ему, чтобы моя мама не могла случайно запустить межконтинентальные баллистические ракеты через BASH, но ввела случайное двухзначное число. мог действовать как «могут быть драконы, выполняющие эту команду».

  • Достаточно сложно составить исчерпывающий список «плохих вещей»
  • Та же проблема, что и UAC: люди «тренируются» говорить «да», не читая и не думая.
  • Это не поможет вам, если вы намереваетесь сделать «плохой» поступок, и это приведет к неправильному результату.

Сказав это, я думаю, что есть некоторые вещи, которые можно было бы сделать, чтобы улучшить его. Давным-давно у меня был патч ядра, который принудительно убивал любую программу, которая пыталась удалить файл с именем UNDELETABLE, и разбрасывал файлы с этим именем в ключевых каталогах.

Существует также система возможностей SElinux. Его нелегко использовать, но я бы подумал, что можно сделать так, чтобы для изменения определенных файлов или каталогов требовались определенные дополнительные возможности. Тогда «root» не будет полностью привилегированным пользователем, если вы не сделаете что-то для получения дополнительных возможностей.

Редактировать: Linux: создавать файлы и директории, но не удалять их говорит, что "chattr + i" отобразит файлы неизменный даже под root.

Я не думаю, что существует такая утилита. Я бы не сказал, что это плохая идея, но установка такого костыля приведет к небрежным / непродуманным действиям, которые «система поймает за меня».

Отсутствие корневого доступа, правильное использование sudo (не предоставление всем вслепую все: все) и т. Д. Будет иметь большое значение для защиты вас, но на самом деле нет замены компетентности системного администратора.

Для этого предназначен пам-фильтр. На самом деле он не получил большого развития и может не делать именно то, что вы хотите, без добавления кода для выполнения необходимой фильтрации.

pam_filter

Я должен указать, что даже с чем-то вроде этого, не стоит недооценивать способность глупых людей делать глупые вещи.