Как предотвратить 'sudo rm -rf /'

10

Несколько раз я случайно выполнил команду sudo rm -rf /.

Есть ли способ, как предотвратить запуск этой команды? Например, я могу как-то отключить его с помощью файла sudoers?

iProgram
источник
2
Как вы случайно набрали эту команду и затем выполнили ее?
fnord_ix
Если я наберу команду, как это. sudo rm -rf / Applications/chess.appОбратите внимание на расстояние между / и А. Вот как
iProgram

Ответы:

14

Вы можете добавить строку как

%admin ALL = !/bin/rm -rf /

в ваш sudoersфайл, чтобы предотвратить выполнение команды с конкретными параметрами.

Или, если вы хотите исключить несколько команд, вы можете работать с псевдонимами команд

Cmnd_Alias DANGEROUS_CMNDS=/bin/rm -rf /, /bin/rm -fr /
%admin ALL=!DANGEROUS_CMNDS

Вы также можете попытаться избежать опасности, используя

Cmnd_Alias DANGEROUS_CMNDS=/bin/rm -rf /, /bin/rm -fr /, /bin/rm / *, /bin/rm * /, /bin/rm -rf / *, /bin/rm -rf * /, /bin/rm -fr / *, /bin/rm -fr* /
%admin ALL=!DANGEROUS_CMNDS

но все еще могут быть другие способы, которыми вы можете выстрелить себе в ногу, rmтак что будьте осторожны в любом случае.

Но имейте в виду, что все сопоставления выполняются для полной строки команды, поэтому sudo rm -rf /Volumesвсе равно будет работать (как и было бы cd /; sudo rm -rf .).

PS: Конечно, используйте sudo visudoдля редактирования sudoersфайла и НИКОГДА не редактируйте его напрямую

PPS: Я явно не проверял это с rm(только /bin/echoвместо)

Nohillside
источник
Комментарии не для расширенного обсуждения; этот разговор был перенесен в чат .
bmike
6

Я знаю, что вы сформулировали вопрос таким образом, что я подозреваю, что вы не хотите слышать этот ответ, но вам действительно следует удалить себя из файла sudoers, если вы склонны повторять одну и ту же ошибку снова и снова.

Основная проблема заключается в вас не псевдонимы rmбыть движение к мусору (что ясно , как вы используете его в настоящее время и в прошлом) , или в противном случае вынуждены rm -rбудет вынужденоrm -ri

alias rm='/bin/rm -i'

Вы всегда можете обойти псевдоним, как command rm -rf whateverтолько вы тренируете свой ум, когда измеряете дважды, один раз отрежьте для rm -rfиспользования.

bmike
источник
Спасибо за этот совет. Я думал о создании скрытой учетной записи администратора (только для доступа к терминалу) и стандартной учетной записи только для обычного использования. Вместо этого я мог бы сделать так, чтобы обертка переместилась в корзину. Спасибо за этот совет. Я думаю, что предотвращение судо может быть более безопасным шагом. Я все еще буду уверен, что смогу получить к нему доступ, войдя в систему скрытого администратора.
iProgram
Не помечен как ответ, так как он не отвечает выше. Это все еще хороший совет
iProgram