Я настраиваю сервер, к которому другие люди будут иметь доступ sudo через ssh. Они могут устанавливать что-то и вносить изменения по своему усмотрению, но мне все еще нужно управлять сервером, устанавливать патчи, обновления программного обеспечения и т. Д.
Мне интересно, сохраняю ли я пароль root, чтобы я всегда мог делать то, что мне нужно, могу ли я как-то отключить людей с помощью sudo от возможности изменить его с помощью sudo.
Вы должны думать об этом вот так. Если вы дадите им пароль root или путь к нему, вы по существу спросите: «Как я могу дать им root, кроме тех случаев, когда я волшебным образом не хочу, чтобы они его имели». И ответ: «Вы не можете. Компьютеры так не работают».
Вы можете выборочно разрешить определенные команды с помощью sudo, но вы должны быть осторожны, чтобы не разрешать программы, которые разрешают доступ к оболочке, запись в символьные ссылки или одну из нескольких десятков других проблем. Вот страница о безопасных сценариях sudo: http://www.kramse.dk/projects/unix/security-sudo-script_en.html
Всегда можно было надеяться, что они не знают о команде chattr ;-)
Я думаю, что ответ здесь зависит от того, пытаетесь ли вы помешать им злонамеренно изменить пароль, чтобы не допустить вас, или просто неосторожно получили пароль, потому что они забыли, что вам нужен доступ. В первом случае у вас будет много неприятностей. Я не знаю, при каких обстоятельствах вы дадите пользователям root-доступ к ящику, но все же беспокоитесь об этом, но лучшее, что вы можете сделать, - это попытаться ограничить их доступ к командам через sudo, что, как упоминали другие, в лучшем случае сложно. В последнем случае кажется, что решением было бы создать себе пользователя с привилегиями sudo. Никто не собирается случайно изменить пароль в вашей учетной записи, поэтому вам не нужно беспокоиться о том, что кто-то просто ошибется или даже изменит пароль по уважительной причине и забудет сообщить вам об этом, потому что вы всегда можете войти с свой аккаунт и верните его обратно.
SELinux может делать то, что вы ищете, хотя это все равно, что использовать ядерный боевой топор, сокрушающий планеты, чтобы ударить муху, или что-то еще. Автостопщик цитата на самом деле есть. Если вы настроены на Linux, а не на Solaris (и его блестящий RBAC), самый простой вариант, вероятно, будет заключаться в настройке sudo, чтобы разрешать только необходимые команды.
Есть несколько вариантов:
Как отмечали другие, предоставление root-доступа позволит им делать в системе все, что им нравится, и если они действительно хотят заблокировать вас; они могут. Однако приведенные выше параметры делают его труднее или менее прозрачным для них.
Solaris решил эту проблему, сделав root в качестве «роли», так что никто не имеет пароля root, а пользователь root не может войти в систему. Чтобы никто не заблокировал вас, существует множество детализированных опций безопасности; так что вы можете сделать так, чтобы они выполняли большинство рутинных операций с помощью "pfexec" (эквивалент sudo), но вы можете предотвратить их отмену ваших привилегий sudo.
[[Я не фанат Solaris, но в Solaris есть несколько очень хороших вещей, помимо ZFS и DTrace. Жаль, если оракул потушит пламя]]
Вместо того, чтобы мешать им изменять пароль, просто сделайте политику, что им это не разрешено. Затем вы можете настроить что-то вроде аудит чтобы просмотреть файл паролей и уведомить вас об изменениях.
То, что вы хотите, не разумно. Предоставление root права людям в любой форме позволит им разрушить вашу систему. Даже если их доступ осуществляется через строго регулируемый sudo, умный, злонамеренный или действительно ненормальный идиот сможет устроить хаос.
Вы либо доверяете им, либо нет.
Если вы поддерживаете их потребности, а фирма платит вам за их поддержку, это их машина, не твоя; вы здесь только для того, чтобы он работал, несмотря на все их глупости. Может быть, после того, как они его пару раз обжаривают, вы можете спросить своего босса, можете ли вы предоставить клиентам меньший доступ, или в противном случае фирме придется продолжать платить вам, чтобы исправить беспорядок. Как бы то ни было - это их копейки.
Если это ваш компьютер, и вы оказываете другим услугу, вежливо попросите их быть вежливыми.
Тем не менее, вы всегда можете загрузиться с компакт-диска (или другого носителя, предназначенного только для чтения). Они по-прежнему смогут уничтожать другие файловые системы или монтировать поверх / etc с их собственным / etc, но все, что вам нужно сделать, чтобы вернуть систему к некоторому элементарному уровню функциональности.
Вы также можете использовать что-то вроде openvz и дать каждому пользователю свой экземпляр. Они не смогут уничтожить всю систему и смогут установить собственное программное обеспечение на свой срез. Многие места используют это для веб-хостинга, где они предоставляют клиентам «корень» в VZ-срезе.
Если вы не можете использовать систему с RBAC, например Solaris, HP-UX или AIX, вы можете реализовать RBAC в Linux с помощью grsec патч.
Вот где и нужен тип пользователя доступа среднего уровня. Я думаю, если бы существовал тип пользователя с настраиваемыми привилегиями (стандартный доступ плюс некоторые корневые доступы), это было бы хорошо. Также, чтобы этот пользователь не мог изменить, например, файл паролей (поскольку Linux основан на файлах), мы могли бы ограничить права доступа к файлу паролей, поскольку они недоступны этому пользователю. затем введите пароль для BIOS, чтобы запретить пользователю изменять файл / etc / shadow с помощью сторонней загрузочной флеш-памяти или компакт-диска.
Вышесказанное - всего лишь теория для разработчиков Linux, и я не уверен, возможно ли это ...
предотвратить изменение любого пароля:
chattr +i /etc/shadow
Неважно, почему пользователи задают вопросы. Ответ «Нельзя» неверен! Ответ фактически указан внизу страницы "man sudoers". Это называется «Белый список за исключением», и я фактически внедряю его для компании, в которой работаю. Вот что ты делаешь -
%testgroup ALL = (ALL) ALL
%testgroup ALL = /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
%testgroup ALL = !/usr/sbin/visudo
Это не позволяет пользователям sudo изменять пароль root, но позволяет изменять все остальные И не позволяет им редактировать файл sudoers. Есть и другие вещи, которые вы, вероятно, должны добавить к этому, например, запретить пользователю изменять группу, в которой он находится, но, надеюсь, вы уловили суть.