Jak działają rzeczywiste i skuteczne identyfikatory użytkowników?


13

Kiedy normalny użytkownik chce wprowadzić zmiany w pliku passwd, użytkownik otrzyma efektywny dostęp. Użytkownik zostaje tymczasowo rootowany i może edytować hasło.

Jednak możesz edytować hasło tylko poprawnie, a nie wszyscy? Jednak efektywny dostęp użytkownika to root. Dlaczego więc nie możesz zmieniać innych haseł oprócz swojego?

Kiedy uruchamiasz program z setuid, co to właściwie oznacza, kiedy efektywny użytkownik jest rootem, ale prawdziwy identyfikator użytkownika to nadal twoje imię?

Odpowiedzi:


13

Nie możesz zmienić innych haseł, ponieważ program na to nie pozwala. Program ma uprawnienia systemowe do zmiany dowolnego hasła, które chce, ponieważ działa jako root, ale program został specjalnie zaprojektowany, aby nie dawać użytkownikowi możliwości uzyskania tych uprawnień.

Nie jest tak, że użytkownik tymczasowo zostaje rootem, to dlatego, że zaufany program działa z uprawnieniami roota. Oczywiście tylko programy specjalnie zaprojektowane w taki sposób, aby ograniczać użytkowników do robienia tylko tego, do czego powinni mieć pozwolenie, mogą być bezpiecznie skonfigurowane jako setuid.


Tak więc w przypadku otwarcia powłoki ustawiam identyfikator użytkownika na 0 (używając setreuid), aby efektywny identyfikator użytkownika był rootem, ale prawdziwym identyfikatorem użytkownika wciąż jestem ja. Skoro nie sądzę, że powłoka ma coś wbudowanego, co mi przeszkadza, czy to oznacza, że ​​mam wtedy dostęp do całego systemu?
gwiezdna kukurydza

Zastanawiam się w kontekście techniki ataku polegającego na zniszczeniu stosu. Tam, gdzie złośliwy haker otwiera powłokę z poziomem administratora.
starcorn

@starcron: Tak. W rzeczywistości może ataki mogą być pokazane poprzez pokazanie, jak użyć tego ataku, aby utworzyć powłokę root setuid.
David Schwartz

2

Możesz zmienić tylko swoje hasło, pomimo posiadania skutecznego identyfikatora użytkownika root, ponieważ podczas zmiany hasła sprawdzany jest rzeczywisty identyfikator użytkownika, a nie efektywny identyfikator użytkownika. Możesz zmienić tylko efektywny identyfikator użytkownika, a nie rzeczywisty identyfikator użytkownika.
Tylko użytkownik root może zmienić rzeczywisty identyfikator użytkownika, aby uruchomić program jako użytkownik nieuprzywilejowany. Rzeczywistego identyfikatora użytkownika nie można zmienić, ponieważ jest on ustawiany w momencie rozpoczęcia sesji.
Dlatego tylko twoje hasło może zostać zmienione, ponieważ rzeczywisty identyfikator użytkownika nie jest zmieniany (ponieważ nadal jest Twój, a nie root).


0

Wczesny hack w Uniksie polegał na utworzeniu dowiązania symbolicznego do skryptu powłoki setuid i wywołaniu tego linku -i. Powoduje to, że skrypt jest wywoływany jako ten, sh -iktóry zamiast wykonać skrypt wywoływany -izgodnie z przeznaczeniem, uruchamia interaktywną powłokę, która następnie daje pełną moc. Efektywnego identyfikatora użytkownika można użyć do zmodyfikowania passwdpliku dla dowolnego użytkownika lub samego użytkownika root. Najlepszym sposobem zabezpieczenia się przed tym jest użycie SELinux, aby uniemożliwić modyfikowanie skryptów i programów zaufania poza obszarem, na który pozwala SELinux.

Inną techniką jest posiadanie niezmiennego bitu na ważnych plikach, których jeden zestaw nie może być modyfikowany nawet przez użytkownika root (z wyjątkiem trybu pojedynczego użytkownika)

Jako root możesz zaprosić użytkowników do zalogowania się do twojego systemu bez hasła i pojawienia się jak każdy użytkownik, ale normalne procesy uprzywilejowane bardzo starają się temu zapobiec.

Jeśli korzystasz z sieciowych systemów archiwizacji, użytkownik root będzie traktowany jak nikt w tym obszarze plików zamiast root, który pozwala niezaufanym komputerom na dołączenie do zaufanej sieci, takiej jak kampus uniwersytecki.


0

Możesz jedynie zmienić swoje hasło, ponieważ program z ustawionym hasłem, choć ma moc robienia czegokolwiek, jest zaprogramowany tylko do zmiany haseł. Sprawdzi prawdziwy identyfikator użytkownika, aby zdecydować, które hasło zmienić.

Ponieważ nie możesz zmienić swojego prawdziwego identyfikatora użytkownika, nawet przez wywołanie programu set-uid, program może go użyć do wdrożenia zabezpieczeń. System operacyjny rezygnuje z zabezpieczeń dla ustawionego programu głównego UID.

Uwaga: ustawiony program główny UID może również zmienić rzeczywisty identyfikator użytkownika (ale nie jest to przydatne w tym przypadku użycia).

Ostrzeżenie: ustawienie root root jest uważane za szkodliwe (znacznie mniej niż idealne). Powinniśmy korzystać z możliwości w dzisiejszych czasach (zobacz Jakie są różne sposoby ustawiania uprawnień do plików itp. W GNU / Linux i http://man7.org/linux/man-pages/man7/capabilities.7.html )

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.