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
Idź do wersji pełnej