sudo
ing добавляет небольшую преграду для выполнения потенциально глупых и опасных вещей в оболочке Linux, но это скудный сдерживающий фактор для новых пользователей Linux. Тем не менее, многие пользователи входят в систему как root
или стали нечувствительны к sudo
, и иногда может делать плохие вещи, например:
chmod 777 /
rm -rf /
doh_oops > /dev/sda
Похоже, что есть несколько случаев, в которых пользователь действительно хотел бы это сделать - их использование, вероятно, на 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, но ввела случайное двухзначное число. мог действовать как «могут быть драконы, выполняющие эту команду».
Сказав это, я думаю, что есть некоторые вещи, которые можно было бы сделать, чтобы улучшить его. Давным-давно у меня был патч ядра, который принудительно убивал любую программу, которая пыталась удалить файл с именем UNDELETABLE, и разбрасывал файлы с этим именем в ключевых каталогах.
Существует также система возможностей SElinux. Его нелегко использовать, но я бы подумал, что можно сделать так, чтобы для изменения определенных файлов или каталогов требовались определенные дополнительные возможности. Тогда «root» не будет полностью привилегированным пользователем, если вы не сделаете что-то для получения дополнительных возможностей.
Редактировать: Linux: создавать файлы и директории, но не удалять их говорит, что "chattr + i" отобразит файлы неизменный даже под root.
Я не думаю, что существует такая утилита. Я бы не сказал, что это плохая идея, но установка такого костыля приведет к небрежным / непродуманным действиям, которые «система поймает за меня».
Отсутствие корневого доступа, правильное использование sudo (не предоставление всем вслепую все: все) и т. Д. Будет иметь большое значение для защиты вас, но на самом деле нет замены компетентности системного администратора.
Для этого предназначен пам-фильтр. На самом деле он не получил большого развития и может не делать именно то, что вы хотите, без добавления кода для выполнения необходимой фильтрации.
Я должен указать, что даже с чем-то вроде этого, не стоит недооценивать способность глупых людей делать глупые вещи.