Linux

Как предотвратить изменение пароля root в Linux?

Я устанавливаю сервер, к которому другие люди будут иметь доступ sudo через ssh. Они смогут устанавливать программы и вносить изменения по своему усмотрению, однако мне все еще нужно управлять сервером, устанавливать патчи и обновления программного обеспечения и т. д.

Мне интересно, если я сохраню пароль root, чтобы я всегда мог делать то, что мне нужно, могу ли я каким-то образом запретить людям с sudo изменять его с помощью sudo?

Ответ 1

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

Ответ 2

Есть несколько вариантов:

  1. Вы можете использовать PAM (Pluggable Authentication Modules), чтобы позволить вам войти в систему как root, независимо от того, какой пароль они установили. Есть много доступных модулей, поэтому я просто оставлю этот вариант.

  2. Вы создаете «второго пользователя root», открывая /etc/passwd и добавляя нового пользователя с тем же UID, что и у root (0). Затем добавьте пароль в файл /etc/shadow для этого конкретного пользователя. Это позволит вам войти в систему под именем root, и даже если пароль для «root» будет изменен, ваш вход все равно будет работать.

  3. Создайте shell-скрипт, который будет периодически запускаться, чтобы проверить, совпадает ли хеш пользователя root в /etc/shadow для root с тем, который вы хотите. Если нет, хеш будет изменен обратно.

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

Ответ 3

То, чего вы хотите, неразумно. Предоставление root людям в любой форме позволит им разрушить вашу систему. Даже если их доступ будет осуществляться через строго регулируемый sudo, умный, злонамеренный или действительно ненормальный пользователь сможет устроить хаос. Вы либо доверяете им, либо нет.

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

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

Вы также можете использовать что-то вроде openvz и дать каждому пользователю свой собственный экземпляр. Они не смогут стереть всю систему и смогут установить свое собственное программное обеспечение на свой аккаунт. Многие места используют это для веб-хостинга, где они дают клиентам «root» в режиме VZ.

Ответ 4

Вот где необходим тип пользователя со средним уровнем доступа. Я думаю, если бы существовал тип пользователя с настраиваемыми привилегиями (стандартный доступ плюс некоторые права доступа root), это было бы здорово. Также, чтобы предотвратить изменение этим пользователем, например, файла пароля (так как linux основан на файлах), мы могли бы ограничить права доступа к файлу пароля, чтобы он не был доступен этому пользователю. Затем поставьте пароль для BIOS, чтобы предотвратить изменение файла /etc/shadow с помощью сторонней загрузочной флешки или CD. Все вышесказанное лишь теория для разработчиков linux, и я не уверен, что это возможно...

Ответ 5

  1. Добавьте пользователей, которых вы хотите заблокировать, в группу

  2. Отредактируйте файл sudoer'а visudo

  3. Добавьте следующее в файл sudoer's (testgroup это группа, в которую вы добавили пользователей)

%testgroup ALL = (ALL) ALL

%testgroup ALL = /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root

%testgroup ALL = !/usr/sbin/visudo

Это не позволит пользователям sudo изменить пароль root, но позволит изменить все остальные пароли и не позволит им редактировать файл sudoers. Есть и другие вещи, которые вы, вероятно, должны добавить к этому коду, например, запрет на изменение пользователем группы, в которой он находится, но вы, надеюсь, поняли суть. 

Схожие статьи

Linux

Как лучше всего послать сигнал всем членам группы процессов

Linux

Как сгенерировать дамп ядра в Linux при ошибке сегментации

Linux

Каковы точные различия на уровне протокола между SSL и TLS?

Linux

Как я могу профилировать код, работающий в Linux?