Как я могу разрешить одному пользователю su другим без разрешения root-доступа?

53

Я хотел бы разрешить определенным пользователям использовать su для другой учетной записи пользователя без необходимости знать пароль этой учетной записи, но не разрешать доступ к любой другой учетной записи пользователя (например, root).
Например, я бы хотел, чтобы Tom DBA прислал su пользователю oracle, но не пользователю tomcat или root.

Я полагаю, что это можно сделать с помощью файла / etc / sudoers - возможно ли это? Если так, то как?

gharper
источник

Ответы:

44

Да, это возможно

В / etc / sudoers элемент, следующий сразу за равенством, - это пользователь, которому разрешено выполнять команду.

tom  ALL=(oracle) /bin/chown tom *

Пользователь (tom) может набрать sudo -u oracle / bin / chown tom / home / oracle / oraclefile

казарка
источник
5
Это позволило бы Тому запускать команды как оракул, но не становиться пользователем оракула
gharper
11
Что насчет sudo -u oracle su -? Это дало бы ему оболочку, открытую как пользователь оракула. Это то, что вы хотите?
Брент
+1 за последний комментарий, Брент. Это был бы мой ответ.
Анника Бэкстрем
3
Будет работать что-то вроде следующего: sudo -u oracle -s или sudo -u oracle -i (-s для оболочки, -i для входа в систему - создает оболочку входа в систему). К сожалению, я не знаю, что вы будете использовать в / etc / sudoers для ограничения пользователей, но, учитывая, что вы разрешаете им доступ к оболочке, вы, вероятно, просто захотите сделать tom ALL = (oracle) ALL, как кто-то еще упомянул. Если они могут запускать оболочку, вы, вероятно, не заботитесь об ограничении команд, которые они могут выполнять.
Марк
1
В идеале, вы бы не хотели, чтобы Том выполнял команды от имени оракула, а не становился пользователем оракула? Различие небольшое, но оно обеспечивает отличный журнал аудита без необходимости использования оболочки аудита.
Скотт Пак
40

Добавьте в ваш / etc / sudoers что-то вроде

tom ALL=(oracle) ALL

Тогда пользователь tom должен иметь возможность использовать sudo для запуска вещей от имени пользователя oracle с параметром -u, не позволяя tom

Т.е. получить оболочку как пользовательский оракул (хорошо, учитывая, что ваш sudo достаточно новый, чтобы иметь опцию -i).

sudo -u oracle -i
Кжетил Йоргенсен
источник
5
Мне пришлось использовать синтаксис, tom ALL=(oracle)NOPASSWD:ALLчтобы sudo не спрашивало пароль
snowindy
9

Чтобы ТОЛЬКО предоставить возможности в вопросе, добавьте следующее в / etc / sudoers:

tom            ALL=(oracle)    /bin/bash

Тогда Том может:

sudo -u oracle bash -i
karimofthecrop
источник
0

Например, я бы хотел, чтобы Tom DBA прислал su пользователю oracle, но не пользователю tomcat или root.

Мне нужно было сделать это с системой недавно, и мне было трудно найти свои заметки об альтернативной установке, которую я использовал несколько лет назад, которая также допускала синтаксис su <user>. В моей ситуации мне нужно было разрешить несколько пользователей для suконкретного пользователя.

Создайте группу, используя addgroup <groupName>которую другие пользователи смогут suбез пароля. Затем добавьте эту группу к каждому пользователю, к которому вы хотите suподключиться без пароля: usermod -a -G <groupName> <userName>(или usermod -a -G oracle tom). Изменения в группе могут не вступить в силу до следующего входа в систему.

Примечание: в вашем случае у вас уже есть группа, потому что oracleгруппа была бы создана, когда вы сделали пользователя oracle с помощью adduser oracle.

Теперь отредактируйте /etc/pam.d/suи под следующим:

# This allows root to su without passwords (normal operation)
auth       sufficient pam_rootok.so

..добавить строки правил авторизации, поэтому раздел выглядит так:

# This allows root to su without passwords (normal operation)
auth       sufficient pam_rootok.so
auth       [success=ignore default=1] pam_succeed_if.so user = <groupName>
auth       sufficient   pam_succeed_if.so use_uid user ingroup <groupName>

Заменить <groupName>на oracleв этом случае. Это позволит любому пользователю , который является частью <groupName>Tosu <groupName>

Теперь tomможно, su oracleи если вам нужно предоставить другим пользователям такой же доступ, добавьте их в oracleгруппу.

подобный вопрос здесь

jtlindsey
источник