Muszę umożliwić użytkownikowi martin
przejście na użytkownika martin-test
bez hasła
su - martin-test
Myślę, że można to skonfigurować /etc/pam.d/su
. W tym pliku jest już kilka wierszy, które można odkomentować. Jednak nie podoba mi się pomysł dodania użytkownika martin
do grupy wheel
. Nie chcę dawać martin
więcej przywilejów niż możliwość zmiany martin-test
. Ja też nie chcę używać sudo
.
Jaki byłby najlepszy sposób na to, przy jednoczesnym utrzymaniu martin
minimalnych uprawnień użytkownika ?
users
password
authentication
pam
Martin Vegter
źródło
źródło
sudo
npsudo -u martin-test -i
. Czy jest jakiś powód, dla którego pytasz konkretniesu
?sudo
tylko z tego powodu (zwykle nie używamsudo
i nie lubię tego szczególnie). I myślę, że używaniepam
jest czystszym i bardziej przejrzystym sposobem na to.sudo
było przeznaczone. Jakie są zastrzeżenia oprócz tego, że normalnie go nie używasz?pam
, wolałbym tosudo
. Jeślisudo
jest to jedyna możliwość, to też jest w porządku. Moje zastrzeżeniasudo
są głównie ideologiczne: nie podoba mi się pomysł użytkownika administrującegosudo foo
. Kiedy potrzebuję administracji, loguję się jako root. W przeciwnym razie loguję się jako użytkownik. Te dwie różne role nie powinny być mieszane. Ponadto mam jużpam
zainstalowaną infrastrukturę. Nie chcę instalować innegosetuid
programu, który może wprowadzić błędy bezpieczeństwa.sudo foo
określonych poleceń. Sudo ma,sudo -s
który uruchomi powłokę. sudo jest bardzo powszechnym narzędziem, co oznacza, że jego bezpieczeństwo zostało dokładnie sprawdzone, o wiele bardziej niż inne oszustwa. Argumentowałbym również, że uzyskanie powłoki root do zadań jest znacznie bardziej niepewne niż uruchamianie określonych poleceń. Po uruchomieniu powłoki uruchamiasz wszystko jako root. Jeśli którakolwiek z tych rzeczy (np. Prostals
) ma lukę w zabezpieczeniach, właśnie otworzyłeś lukę w zabezpieczeniach.Odpowiedzi:
Dodaj następujące linie bezpośrednio pod
pam_rootok.so
linią w swoim/etc/pam.d/su
:Linie te wykonują kontrole za pomocą
pam_succeed_if.so
modułu. Zobacz także składnię pliku konfiguracyjnego Linux-PAM, aby dowiedzieć się więcej oauth
liniach.martin-test
. Jeśli tak, nic się nie dzieje (success=ignore
) i kontynuujemy w następnym wierszu, aby sprawdzić bieżącego użytkownika . Jeśli tak nie jest, następny wiersz zostanie pominięty (default=1
) i kontynuujemy w kolejnych wierszach ze zwykłymi krokami uwierzytelnienia.martin
. Jeśli tak, system uznaje proces uwierzytelnienia za udany i zwraca (sufficient
). Jeśli tak nie jest, nic się nie dzieje i kontynuujemy kolejne linie ze zwykłymi krokami uwierzytelnienia.Możesz również ograniczyć się
su
do grupy, tutaj grupaallowedpeople
możesu
bez hasła:źródło
Jeśli nie chcesz zmieniać grup ani używać
sudo
, użyj modułu pam wywoływanegopam_exec
do wykonywania zewnętrznych skryptów na etapie pam.Dodaj wiersz
/etc/pam.d/su
po swoimpam_rootok.so
wierszu:/path/to/script
ma uprawnienia 755 (rwxr-xr-x) i następującą treść:Ten skrypt istnieje z powodzeniem, jeśli
su
:martin
imartin-test
.Widzieć:
źródło
/etc/pam.d/su
aby wykorzystać wpam_access
mojej sytuacji?pam_access
nie mogę tego zrobić. Kiedysu
przechodzi przez stos pam, robi to jako użytkownik, do którego się zmieniasz, a nie użytkownik, z którego się zmieniasz. Więc jeśli dodać regułę, takie jak+ : martin : ALL
, pozwoli to ktoś zmienia sięmartin
. Nawet jeśli zmieniszmartin
namartin-test
, nadal pozwoli każdemu to zrobić. Musisz przeanalizować zarówno użytkownika, z którego pochodzisz, jak i użytkownika, na który się zmieniasz. Naprawdę, właśnie po tosudo
jest ...Jeśli nie masz dostępu do konta root, ale masz hasło użytkownika, którego chcesz użyć do uruchomienia polecenia, możesz wykonać następujące czynności.
Po prostu zainstaluj swój klucz publiczny w uprawnionych kluczach toto
źródło
Moje proste rozwiązanie to:
Jeśli chcesz uniknąć sudo za wszelką cenę, myślę, że powinno być możliwe umieszczenie tego w skrypcie:
Jednak nie mogę rozgryźć
chown root
ichmod +s ToTest.sh
bitów, aby to faktycznie działało:Nadal działam jako mój normalny użytkownik, jak mówi mi echo. I nadal wymaga hasła sudo. Gdyby działał jako root, można by zerwać z
sudo
ostatnim wierszem ...źródło
bash
jest, dlaczego zakładasz, że wiesz, gdzieenv
jest lub czy w ogóle istnieje?). Ale ostatecznie nie wiesz, cobash
to dokładnie będzie. Może pochodzić z katalogu użytkownika wywołującego i został skompilowany minutę wcześniej z jego kodu źródłowego. Widzisz gdzie idę? Albo użytkownik może zastąpićwhoami
...