Когда Ubuntu просит администраторский пароль пользователя, как она решает который административный пользователь попросить?

Я настраиваю машину Ubuntu (10.10), которая будет использоваться несколькими людьми. Это - общая машина в малом офисе. Его основные роли размещают виртуальные машины с VirtualBox и служат файлам с Samba.

Для Samba должны быть настроены несколько учетных записей пользователей так, чтобы различные люди могли соединиться с долями Samba от своих собственных рабочих станций. Однако существует также учетная запись, которая выделена просто выполнению виртуальных машин, которые будут использовать несколько человек. Иногда люди пытаются сделать вещи с этой учетной записью, которые требуют поднятых полномочий - это вызывает Gnome, "введите пароль административного пользователя" диалоговое окно для появления. Однако это диалоговое окно запрашивает мой пароль - когда я настроил машину, мой был первой созданной учетной записью, таким образом, это, кажется, предполагает, что я - предоставленные sudo полномочия единственного пользователя.

Я хочу назначить другого пользователя как "администратора первого курорта", если можно так выразиться, и это не может быть пользователь общей учетной записи, потому что все должны знать пароль той учетной записи, таким образом, я хочу ее полномочия, строго ограниченные. Это не может быть моя учетная запись, так как никакой effing путь не я говорящий другим людям мой пароль, и я не буду присутствовать на сайте достаточно часто для ввода его сам. Существует, тем не менее, кто-то, кто может сделать это лично, таким образом, я добавил их к /etc/sudoers. Как я могу сказать Ubuntu, что, когда она должна поднять полномочия для чего-то, она должна попросить их учетную запись сначала?

Подводить итог:

  • Учетные записи на машине: Alice, Bob, Гимн, Dave, Eliza.
  • Когда Ubuntu была установлена, Alice была первым пользователем, добавленным во время процесса установки.
  • "Dave" является на самом деле учетной записью, которую используют многие люди, кто не может быть в /etc/sudoers потому что его пароль является общеизвестным фактом.
  • Bob был установлен быть "Административной" учетной записью в Gnome и соответственно вводится в /etc/sudoers - Bob является боссом в этом офисе.
  • Когда действия, для которых нужны поднятые полномочия, предприняты, в то время как зарегистрированный как Bob, Гимн, Eliza или Dave, система должна запросить учетные данные Bob's.
  • Когда действия, для которых нужны поднятые полномочия, предприняты, в то время как зарегистрированный как Alice, система должна запросить учетные данные Alice (хотя Alice является видом системного администратора ковбоя и имеет привычку к использованию su - сделать расширенные задачи администрирования).

Какие изменения конфигурации я должен внести для вызывания требуемого состояния здесь?

11
задан 13 December 2011 в 23:16

3 ответа

В Unix / Linux есть только один суперпользователь, его имя - root, но sudoers - это пользователи, которые могут стать root. Вы должны использовать группы:

newgrp admins

, а затем назначить пользователей в эту группу:

chgrp alice admins

, а затем добавить группу admins в файл конфигурации sudoers, как если бы эта группа была пользователем.

Обновление

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

chgrp alice admin
0
ответ дан 13 December 2011 в 23:16

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

  1. sudo

  2. PolicyKit

Первый используется, когда вы явно запускаете команду с [ 111] или пункт меню, команда которого заключена в gksu (например, Synaptic Package Manager ).
В этом случае требуется пароль вызывающего пользователя, обычно это пользователь, вошедший в систему.

Второй используется, когда приложение с поддержкой PolicyKit пытается выполнить привилегированное действие. В таком случае приложение запрашивает локальный орган PolicyKit (через D-Bus), можно ли выполнить действие. Затем локальный орган через агента аутентификации просит активного пользователя подтвердить свою личность. Диалоговые окна похожи на следующие (к сожалению, с текстом на итальянском языке:)

enter image description here

Вы можете идентифицировать PolicyKit по маленькому черному треугольнику и метке Подробности [ 119]. Как видите, если в группу admin входит более одного пользователя, вы можете выбрать из списка, какого пользователя использовать для аутентификации.

Учитывая все это, и sudo, и PolicyKit намного сложнее в отношении конфигураций, которые могут быть достигнуты: вы можете настроить действие, которое может быть выполнено без пароля, выполненным только конкретным пользователем или группой и т. д.

В ответ на ваш вопрос, когда механизмом, используемым приложением, является PolicyKit, независимо от текущего пользователя, вошедшего в систему, требуется пароль Боба или Алисы (только два администратора, если я правильно понимаю), и Вы можете изменить из списка, какого пользователя вы хотите использовать для аутентификации.

Когда механизмом, используемым приложением, является sudo (для задач администратора, выполняемых через GUI, это становится все менее частым), у вас нет немедленного и простого способа выбрать пользователя для аутентификации.

0
ответ дан 13 December 2011 в 23:16

Очевидно, sudo был бы предпочтительный вариант для меня в таком случае. Важный пункт, кажется, что самые (фактические) администраторы на самом деле не используют /etc/sudoers до его самой полной степени (User_Alias, Runas_Alias, Host_Alias, Cmnd_Alias).

Большинство администраторов заканчивает тем, что использовало только некоторые существующие правила и добавило пользователей, или хуже, просто добавляющих пользователей к sudo группа, для которой правило обычно существует на установках Ubuntu (%sudo ...). Это, конечно, дает соответствующую пользовательскую полную свободу и полную мощность учетной записи суперпользователя.

Учитывая Ваш комментарий:

таким образом, я добавил их к /etc/sudoers

Я считаю, что Вы также не используете его по мере возможности.

В сценарии такой как Ваш я буквально написал бы сценарий нескольких действий, которыми должен быть ограничен Bob. На самом деле это - то, что я сделал на сервере, который я поддерживаю, чтобы позволить двум конкретным пользователям перезагружать конкретного гостя KVM на хосте. Сценарии содержали бы hashbang с полным путем к интерпретатору (например. #!/bin/dash вместо #!/usr/bin/env bash) и вероятно выполненный с оболочкой, которая используется в другом месте для привилегированных задач (/bin/dash или /bin/sh). Это - просто меры предосторожности. Кроме этого, я удостоверился бы к hardcode все полные пути к двоичным файлам и использованию как можно меньше из них. Например, при использовании bash/dash Я предпочел бы builtins commands (см. man bash). Можно сделать это удобным в сопровождении путем присвоения переменной полного пути и обращения к программе на основе той переменной ($VIRSH вместо /usr/bin/virsh). Если Вы можете, исследовать код каких-либо внешних сценариев прежде, чем назвать их. Особенно, если необходимо назвать их в привилегированном контексте. В моем случае я также ограничиваю пользователей конкретным корневым каталогом и конкретной подсистемой SSH, поскольку они только соединяются с машиной через sshd и аутентификация с открытым ключом. Очевидно, Вам не нужно это.

Удостоверьтесь, что chown root: <the-script>; chmod u=rw,a=,a+rx <the-script> предотвратить любого, но root надлежащий от переделывания его. Также будьте осторожны с setuid и setgid биты включили на целевых двоичных файлах (find может использоваться для определения их). Давайте предположим в настоящий момент, что Ваш сценарий находится в /usr/sbin/priv-action.

Теперь отредактируйте Ваш /etc/sudoers. noexec может использоваться для предотвращения других двоичных файлов, чем явно позволенные также. Существует на самом деле много дополнительных настроек, не просто тех, которых я описываю здесь. Поэтому удостоверьтесь, что консультировались man sudoers.

Теперь я предпочитаю называть пользователей (User_Alias) в моем sudoers файл, но Вы могли точно также использовать a Group_Alias (man sudoers) или фактическая системная группа (например. %sudo):

# The list is comma-separated: bob,alice,...
User_Alias      LIMITED_ADMINS=bob

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

# The list is comma-separated: /usr/sbin/priv-action,/bin/bash,...
Cmnd_Alias      PRIV_ACTION=/usr/sbin/priv-action

Наконец, что не менее важно, прибывает волшебная строка для разрешения bob (или скорее пользователи, перечисленные под LIMITED_ADMINS) выполнить привилегированные команды с помощью сценария:

LIMITED_ADMINS  ALL=(root) PRIV_ACTION

В отличие от предыдущих определений псевдонима, что строка требует объяснения. Поэтому давайте сначала выроем в части на "Пользовательской средней строке" Спецификации. Здесь man sudoers помогает:

Базовая структура пользовательской спецификации who where = (as_whom) what.

Строка в качестве примера (найденный на большинстве установок Ubuntu):

root    ALL=(ALL) ALL

Это говорит, что пользователь назвал root (используйте #0 связывать его с UID 0) май, на всех хостах, выполненных под любым пользовательским контекстом почти, попросят его пароля (принимающий поведение по умолчанию). Добавление NOPASSWD тег перед последним ALL затем также позволил бы root сделать то же, не попросившись пароля (как так: root ALL=(ALL) NOPASSWD:ALL). ALL внутренний подстановочный псевдоним для различных типов псевдонима.

Но назад Bob:

LIMITED_ADMINS  ALL=(root) PRIV_ACTION

позволил бы bob и другие перечисленные члены User_Alias LIMITED_ADMINS работать (на всех хостах, это что ALL для) как пользователь root (группа подразумевала, но могла быть дана, видеть man sudoers) команды, поданные Cmnd_Alias PRIV_ACTION. Это поправляется. Все еще принятие Вас пишет этот сценарий, Вы могли позволить различные параметры, таким образом, стараясь не писать несколько сценариев. /etc/sudoers с удовольствием берет подобные оболочке подстановочные знаки для ограничения возможностей аргументов, позволенных быть переданными.

Я последовательно находил, что администраторы не используют sudoers путем это должно использоваться, который является, почему я ценил соответствующий "Взлом" из двух книг "Взломы Сервера Linux" и "Объем Взломов Сервера Linux Два", который запустил меня с более сложного использования этого большого средства.

Можно придумать все виды замысловатых - который не может точно помочь аспекту безопасности - решения для особого случая, но после того как Вы говорите базовый словарь /etc/sudoers можно выполнить довольно волшебные подвиги :)

NB: имеет в виду, что можно также создать новый файл внизу /etc/sudoers.d/ если Вы чувствуете себя настолько склонными. Это принимает Ваш /etc/sudoers содержит строку:

#includedir /etc/sudoers.d
6
ответ дан 13 December 2011 в 23:16

Другие вопросы по тегам:

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