
Я хочу заблокировать пользователям sudo возможность менять пароль root. Как это возможно?
решение1
Если вы говорите о пользователях, которым разрешено выполнять только несколько определенных команд, которые вы добавили в белый список (после того, как вы убедились, что их нельзя использовать для достижения целей, которые вы хотите запретить), то, какРаман Сайлопал говорит, решение простоенетвключите любые команды, которые вы не хотите, чтобы эти пользователи могли запускать с правами root.
В частности, пользователям не обязательно иметь права root, чтобы запустить passwd
команду для изменения своегособственныйпароли, поэтому в зависимости от ваших конкретных потребностей, скорее всего, вам не нужно предоставлять им возможность запускалюбой passwd
команду от имени пользователя root с sudo
.
Однако, если вы ищете эффективный способ ограничить возможности пользователейкому вы позволили вообще выполнять какую-либо командукак root с sudo
возможностью запуска только некоторых определенных команд, которые вы считаете опасными, то ответ таков:нет эффективного способа добиться этого, и вместо этого вам следует пересмотреть, следует ли вам давать этим пользователям те полномочия, которые вы им сейчас даете. Даже если бы вы запретили определенные команды, пользователи, которые могли бы запускать любые, кроме нескольких команд из черного списка, как root, sudo
могли бы просто достичь той же цели, используя другие команды.
Какруководствоsudo
говорит вЗАМЕТКИ ПО БЕЗОПАСНОСТИраздел:
Ограничения оператора «!»
«Вычитать» команды из других команд обычно неэффективно.ВСЕс помощью оператора '
!
'. Пользователь может тривиально обойти это, скопировав нужную команду под другим именем и затем выполнив ее. Например:bill ALL = ALL, !SU, !SHELLS
На самом деле не мешаетсчетот выполнения команд, перечисленных в СУилиРАКУШКИпоскольку он может просто скопировать эти команды под другим именем или использовать выход из оболочки редактора или другой программы. Поэтому такого рода ограничения следует считать в лучшем случае рекомендательными (и подкрепленными политикой).
В общем, если у пользователя есть sudoВСЕничто не мешает им создать собственную программу, которая предоставит им root-оболочку (или создать собственную копию оболочки) независимо от любых
!
элементов ' ' в спецификации пользователя.
Это частный случай более общего принципа, согласно которому нельзя дать кому-либо возможность выполнятьпроизвольныйдействия в системе, эффективно ограничивая их, пытаясь запретить некоторые узкие действия. По крайней мере, вы не можете сделать это просто заблокировавобщие механизмыкоторые используются для их выполнения. Они всегда могут найти другой способ, и они вполне могут это сделать. Они могут найти другой способдаже случайно, поэтому вы, вероятно, не сможете эффективно бороться даже с их беспечностью таким способом.
Более того, если у вас есть пользователи, которым вы хотите доверить администрирование системы, но которым вы не доверяете, чтобы они согласились на ваше требование воздержаться от смены пароля root, то действительно ли вы доверяете им в любом из способов, которые действительно имеют значение? Действительно ли вы доверяете им во всехдругойспособности, которые у них есть, большинство из которых гораздо более разрушительны? Как я уже писал вмой ответкЧто мешает кому-то установить пароль root?об администрировании систем Ubuntu (где, по умолчанию, членство в sudo
группе дает административные полномочия):
Вы являетесь членом группы
sudo
. Вы можете удалить все файлы в системе. Вы можете записать необработанные данные на жесткий диск, перезаписав то, что там находится, без возможности восстановления. Вы можете получить доступ к файлам других пользователей, даже если они установили ограничительные разрешения. Вы можете установить новую прошивку на свои физические устройства. Вы можете сбросить пароли пользователей из теневой базы данных и попытаться взломать их или просто сбросить их. Вы можете установить вредоносное ПО, которое нарушает конфиденциальность пользователей или уничтожает данные, включая кейлоггеры и программы-вымогатели. Вы можете делать действительно странные вещи с вашими сетевыми интерфейсами. Вы можете заставить систему дезинформировать пользователей о безопасности их коммуникаций. Вы можетезамести следы. Вы можете передать все эти силы, и другие, которые я не перечислил, людям, которые будут использовать их во зло. Когда дело доходит до злоупотребленияsudo
или Полкита,теэто те вещи, о которых вам следует беспокоиться.Действительно, не следует впускать в дом без присмотра непроверенных людей, но причина не в том, что они могут открыть дверь изнутри и войти.*