Мы хотим, чтобы некоторые пользователи могли, например, сделать это sudo
и стать пользователем root,
Что ж, это проблема, которую sudo предназначен для решения, так что эта часть достаточно проста.
но с ограничением, что пользователь не может изменить пароль root.
Как указал SHW в комментарии, вы можете настроить sudo так, чтобы определенные пользователи могли выполнять только определенные действия от имени пользователя root. То есть, вы можете позволить user1 сделать sudo services apache2 restart
, позволяют user2 делать , sudo reboot
но ничего другого, позволяя при этом наемный-как-система-администратор user3
сделать sudo -i
. Существуют инструкции о том, как настроить sudo таким образом, или вы можете искать (или спрашивать) здесь. Это решаемая проблема.
Тем не менее, пользователь, которому была предоставлена возможность sudo -i
или sudo
в оболочку ( sudo bash
например), может делать все что угодно. Это связано с тем, что к тому моменту, когда sudo запускает оболочку, само sudo уже исчезло. Он обеспечивает контекст безопасности другого пользователя (чаще всего root), но не может сказать, что делает исполняемое приложение. Если это приложение запускается, passwd root
sudo ничего не может с этим поделать. Обратите внимание, что это можно сделать и с помощью других приложений; например, многие из более продвинутых редакторов предоставляют средства для выполнения команды через оболочку, оболочку, которая будет выполняться с эффективным идентификатором этого процесса редактора (то есть root).
То есть гарантия того, что мы все еще можем войти на этот сервер и стать пользователем root независимо от того, что будут делать другие пользователи.
Сожалею; если вы действительно имеете в виду «убедитесь, что мы сможем войти в систему и использовать систему независимо от того, что с ней делает кто-то с правами root», это (для всех целей и задач) сделать невозможно. Быстро "sudo rm / etc / passwd" или "sudo chmod -x / bin / bash" (или что-либо другое, что использует root), и вы все равно в значительной степени замаскированы. «В значительной степени шланг» означает «вам нужно восстановить данные из резервной копии и надеяться, что они не сделали ничего хуже, чем скольжение пальцев». Вы можете предпринять некоторые шаги, чтобы уменьшить риск случайного сбоя, ведущего к непригодной для использования системе, но вы не можете предотвратить возникновение очень серьезных проблем со злым умыслом вплоть до необходимости восстановления системы с нуля или, по крайней мере, из известных хорошие резервные копии.
Предоставляя пользователю беспрепятственный root-доступ в системе, вы доверяете этому пользователю (включая любое программное обеспечение, которое он может выбрать для выполнения, даже что-то столь же обыденное, как ls), чтобы он не имел злого умысла и не ошибся случайно. Это природа корневого доступа.
Ограниченный доступ с правами root, например, через sudo, немного лучше, но вы все равно должны быть осторожны, чтобы не открывать векторы атаки. А с корневым доступом существует множество возможных векторов атак для повышения привилегий.
Если вы не можете доверять им тот уровень доступа, который обеспечивает root, вам потребуется либо очень ужесточенная конфигурация sudo, либо просто вообще не предоставлять рассматриваемому пользователю доступ root с помощью любых средств, sudo или иным образом.
sudo
чтобы предоставить разрешение только для определенного привилегированного приложения. Таким образом, пользователь не сможет изменить пароль root