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

373
Utkarsh.K

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

Я посмотрел на superuser.com/questions/244342 и все ссылки в нем.

Для того, чтобы что - то вроде псевдонима sudo /sbin/shutdownя бы сначала псевдоним sudoиндивидуально, а затем /sbin/shutdownв echo 'Not allowed'.

Однако это, похоже, не работает, поскольку, sudoочевидно, выполняет его в корне. Таким образом, псевдонимы этих .bashrcпользователей бессмысленны. Как мне решить мою проблему? Я не хочу изменять какие-либо системные атрибуты, такие как .bashrcпользователь root и т. Д.

1
Хм ... как именно вы случайно набираете "sudo shutdown now"? Bob 7 лет назад 0
Мы предоставляем доступ некоторым пользователям, которые могут сделать это по ошибке. Utkarsh.K 7 лет назад 0
Не прямой ответ на вопрос, но, возможно, более жизнеспособный подход - посмотрите на установку пакета `molly-guard`. Очень полезно, когда вы часто забываете, на какой машине работает ваша оболочка! Toby Speight 7 лет назад 1

3 ответа на вопрос

1
janos

Как вы правильно заметили, псевдонимы оболочки не подходят для ваших целей.

Правильный способ избежать случайного выполнения этих команд sudo- обновить вашу конфигурацию sudo(использовать visudo) и полностью запретить доступ. Вы можете назначить группу, членам которой разрешено выполнять эти команды sudo, и никому другому.

1
djsmiley2k

Итак, « правильный » подход состоит в том, чтобы не предоставлять этим пользователям sudo, но кажется, что это одна из тех ситуаций, которые вы не можете избежать, чтобы предоставить пользователям такой доступ (допустим, вы остановили их при выключении, они могли бы просто rm -rf /*вместо этого)

Однако, чтобы остановить их выполнение определенных команд через sudo, вы можете контролировать это в файле sudoers:

Во-первых, мы определяем псевдоним для выключения системы в /etc/sudoers.conf

Cmnd_Alias SHUTDOWN = /usr/sbin/shutdown

И затем мы удаляем возможность для любого в группе колеса, чтобы выполнить эту команду:

%wheel ALL = ALL, !SHUTDOWN

Это означает, что все пользователи могут запускать все команды на всех компьютерах, кроме команд в shutdown cmnd_Alias.

man sudoersобъясню это гораздо более подробно, и фактически содержит почти это точное объяснение. Также обратите внимание, что это не помешает кому-то преднамеренно пытаться выполнить команду выключения, только тем, кто случайно запустил ее, не осознавая (возможно, потому что они вошли в неправильную машину).

0
Horn OK Please

Даже если вы успешно запретите пользователю запускать все команды, которые непосредственно ответственны за перезагрузку, пользователь с sudoдоступом (где доступ sudo не внесен в белый список для определенного набора двоичных файлов, для которых у него нет разрешения на изменение, и который не может возможно, манипулировать с запуском кода перезагрузки) можно перезагрузить систему через:

  1. Загрузите исходный код в программу наподобие rebootили halt(например, в GNU binutils, IIRC), скомпилируйте его с помощью gcc, а затем запустите sudo ./rebootв локальной копии.

  2. Напишите программу на Ruby, Python, C / C ++, Java и т. Д., Которая вызывает соответствующие системные вызовы для запуска перезагрузки или завершения работы.

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

Если вы на 100% уверены, что все двоичные файлы, которые вы предоставляете пользователю для запуска, sudoне могут быть использованы для выполнения произвольного кода (что приводит к пунктам 1 или 2 выше), тогда, возможно, все будет в порядке. Но хитрый пользователь (или программа, выполняемая от имени этого пользователя) все еще может использовать уязвимости безопасности в любой из этих программ для повышения и перезагрузки / выключения.

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

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

Могут ли они скопировать мусорную корзину в свой дом? djsmiley2k 6 лет назад 0

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