System > Administracja

(visudo) Przelogowanie bez hasła

(1/1)

jablopio:
Mam prośbę o pomoc w jak się zapewne okaże, prostym zadaniu, a mianowicie: w systemie mamy m.in. konta dwóch użytkowników: 'user1' i 'user2'; rzecz w tym, by 'user1' mógł się przelogować na 'user2' bez podawania hasła.

Bezskutecznie kombinowałem w 'visudo' dodając wpis:


--- Kod: ---
> visudo
  user1    ALL=NOPASSWD: /usr/bin/su user2

--- Koniec kodu ---
Nie mam pomysłu i  będę szczerze wdzięczny za pomoc.

Z góry dziękuję i pozdrawiam…
 

Paweł Kraszewski:
Brakuje części specyfikacji:


--- Kod: ---
user1    ALL=(ALL) NOPASSWD: /usr/bin/su user2

--- Koniec kodu ---

Poza tym upewnij się, gdzie tak naprawdę znajduje się su. Sprawdzałem na Debianie i Ubuntu, i tam to jest /bin/su. A sudo weryfikuje ścieżkę.

Możesz też wykorzystać natywny mechanizm sudo:


--- Kod: ---
user1    ALL=(user2) NOPASSWD: ALL

--- Koniec kodu ---

Wtedy user1 moze robić sudo -u user2 komenda albo nawet sudo -u user2 -i dla uzyskania zgłoszenia systemowego.

Pytanie: dlaczego wszyscy robią zawsze sudo su zamiast sudo -i ? Na palcach jednej ręki można policzyć różnice, i to na ogół są corner-case'y...

jablopio:
Witam i pierwsze co, to bardzo dziękuję za podjęcie tematu – już się martwiłem, że nie znajdzie się żaden chętny. A teraz po kolei…

Lokalizacja 'su' była sprawdzana i na pewno jest poprawna (CentOS 7). Niestety, nawet po wprowadzeniu poprawek do wpisu, przelogowanie nie działa tak, jak miało – nadal wymagane jest hasło.


--- Kod: ---
› whereis su
  su: /usr/bin/su /usr/share/man/man1/su.1.gz
› visudo
  user1   ALL=(ALL)  NOPASSWD: /usr/bin/su user2
  :wq
› su user2
  Password:

--- Koniec kodu ---
Druga zaproponowana opcja, co prawda umożliwia przelogowanie bez hasła ALE taki zapis powoduje, że 'user1' odrzynał zbyt wiele. Teraz może wywołać dowolną komendę w imieniu 'user2', ma dostęp do jego danych, możliwość usuwania jego plików, uruchamiania usług itp. Niby to bez różnicy, bo przecież i tak miał się na niego przelogować. No nie do końca, bo przy logowaniu/przelogowywaniu 'user2' zaczytuje swoją konfiguracje i m.in. ograniczenia.

Niestety, ani pierwsza ani druga propozycja nie daje rozwiązania – niemniej, raz jeszcze dziękuję. PROBLEM POZOSTAJE OTWARTY i naprawdę liczę na Waszą pomoc (za którą z góry dziękuję).
 

Paweł Kraszewski:
Ale wiesz, że modyfikacja sudoers nie robi żadnej magii (i nie ma żadnego wpływu na program su), i że dalej musisz wywołać su przez sudo?


--- Kod: ---
sudo su user2
--- Koniec kodu ---

jablopio:
O.K. Ogarnąłem…

Jak to zwykle bywa, rzecz w szczegółach. Tym razem chodziło o '-' (myślnik). Kiedy w 'visudo' dodamy brakujący myślnik wszystko zaczyna działać tak, jak powinno.


--- Kod: ---
root@localhost >visudo
  user1  ALL=(ALL)  NOPASSWD: /usr/bin/su - user2
  :wq

--- Koniec kodu ---
Gwoli sprawdzenia, poniżej widać, że teraz 'user1' może się przelogować na 'user2' nie podając hasła.


--- Kod: ---
user1@localhost >sudo su - user2
  Last login: Mon Apr  5 20:47:31 CEST 2021 on pts/0
user2@localhost >

--- Koniec kodu ---
Problem rozwiązany i dziękuję wszystkim zaangażowanym za pomoc. Temat DO ZAMKNIĘCIA.
 

Nawigacja

[0] Indeks wiadomości

Idź do wersji pełnej