Jak mogę pozwolić jednemu użytkownikowi na su bez zgody roota?

53

Chciałbym zezwolić niektórym użytkownikom na su na innym koncie użytkownika bez konieczności znajomości hasła do tego konta, ale nie zezwalam na dostęp do żadnego innego konta użytkownika (tj. Root).
Na przykład chciałbym zezwolić Tomowi DBA na su dla użytkownika wyroczni, ale nie dla użytkownika tomcat lub użytkownika root.

Wyobrażam sobie, że można to zrobić za pomocą pliku / etc / sudoers - czy to możliwe? Jeśli tak to jak?

gharper
źródło

Odpowiedzi:

44

Tak, jest to możliwe.

W / etc / sudoers elementem bezpośrednio po znaku równości jest użytkownik, którego polecenie będzie mogło wykonać jako.

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

Użytkownik (tom) może wpisać sudo -u oracle / bin / chown tom / home / oracle / oraclefile

Brent
źródło
5
To pozwoliłoby Tomowi uruchamiać polecenia jako wyrocznia, ale tak naprawdę nie stać się użytkownikiem wyroczni
gharper
11
Co z sudo -u oracle su -? To dałoby mu powłokę otwartą jako użytkownik wyroczni. Czy tego chcesz?
Brent
+1 za ostatni komentarz, Brent. To byłaby moja odpowiedź.
Annika Backstrom
3
Działa coś takiego: sudo -u oracle -s lub sudo -u oracle -i (-s dla powłoki, -i dla logowania - wykonuje powłokę logowania). Niestety nie wiem od razu, czego byś użył w / etc / sudoers w celu ograniczenia użytkownika, ale biorąc pod uwagę, że zezwalasz im na dostęp do powłoki, prawdopodobnie po prostu chcesz zrobić tom ALL = (wyrocznia) ALL, jak ktoś inny wspomniał. Jeśli potrafią uruchomić powłokę, prawdopodobnie nie obchodzi cię ograniczenie poleceń, które mogą uruchamiać.
Mark
1
Idealnie, czy nie chciałbyś, aby Tom wykonywał polecenia jako użytkownik wyroczni, zamiast zostać użytkownikiem wyroczni? Rozróżnienie jest niewielkie, ale zapewnia świetny dziennik kontroli bez konieczności korzystania z powłoki kontrolnej.
Scott Pack
40

Dodaj do / etc / sudoers coś takiego

tom ALL=(oracle) ALL

Wówczas użytkownik tom powinien móc używać sudo do uruchamiania rzeczy jako użytkownik wyroczni z opcją -u, nie pozwalając tomowi

To znaczy, że otrzymujesz powłokę jako wyrocznia użytkownika (cóż, biorąc pod uwagę, że twoje sudo jest wystarczająco nowe, aby mieć opcję -i).

sudo -u oracle -i
Kjetil Joergensen
źródło
5
Musiałem użyć składni, tom ALL=(oracle)NOPASSWD:ALLaby sudo nie pytało o hasło
snowindy
9

Aby TYLKO zapewnić możliwości w pytaniu, dodaj następujące polecenie do / etc / sudoers:

tom            ALL=(oracle)    /bin/bash

Wtedy Tom może:

sudo -u oracle bash -i
karimofthecrop
źródło
0

Na przykład chciałbym zezwolić Tomowi DBA na su dla użytkownika wyroczni, ale nie dla użytkownika tomcat lub użytkownika root.

Musiałem to ostatnio zrobić w systemie i miałem trudności ze znalezieniem notatek na temat alternatywnej konfiguracji, której użyłem lata temu, która również umożliwiała składnię su <user>. W mojej sytuacji musiałem umożliwić wielu użytkownikom dostęp do sukonkretnego użytkownika.

Utwórz grupę, korzystając z addgroup <groupName>tego, że inni użytkownicy będą mogli to suzrobić bez hasła. Następnie dodaj tę grupę do każdego użytkownika, do którego chcesz mieć sudostęp bez hasła: usermod -a -G <groupName> <userName>(lub usermod -a -G oracle tom). Zmiany w grupie mogą nie zostać uwzględnione do następnego logowania.

Uwaga: W twoim przypadku masz już grupę, ponieważ oraclegrupa zostałaby utworzona, gdy utworzyłeś użytkownika Oracle adduser oracle.

Teraz edytuj /etc/pam.d/sui poniżej:

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

.. dodaj linie reguł auth, aby sekcja wyglądała następująco:

# 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>

Wymień <groupName>się oraclew tej sprawie. Pozwoli to każdemu użytkownikowi, który jest częścią <groupName>dosu <groupName>

Teraz tommożesz, su oraclea jeśli chcesz dać innym użytkownikom taki sam dostęp, dodaj ich do oraclegrupy.

podobne pytanie tutaj

jtlindsey
źródło