Strona 1 z 1

C/C++ - sprawdzenie z jakimi prawami została uruchomiona aplikacja

: 02 lipca 2010, 20:00
autor: takedowner86
Witam.
Chciałem poprosić Was o pomoc w implementacji mechanizmu w aplikacji napisanej w C/C++, który umożliwiłby sprawdzenie, czy aplikacja ta została uruchomiona przez administratora. Jeżeli nie, to czy jest możliwość implementacji takiego mechanizmu, który by poprosił użytkownika o hasło roota i aplikacja ta mogła kontynuować pracę w trybie super użytkownika (oczywiście chodzi mi o kod w C/C++)? Wszelkie sugestie (oraz linki, których nie mogłem doszukać się w sieci) mile widziane. Z góry dziękuję.
Pozdrawiam

: 02 lipca 2010, 20:59
autor: lessmian2
Poczytaj manuala getuid, geteuid. Jeśli zwrócona wartość jest równa zero, oznacza to że program uruchomił root, jeśli jest różna od zera, jest to inny użytkownik.

: 02 lipca 2010, 21:11
autor: takedowner86
Super, bardzo Ci dziękuję lessmian2. Mam jednak jeszcze jedną kwestię do rozwiązania. Czy jest możliwość (bądź odpowiednia funkcja), aby w programie C/C++ użytkownik mógł wprowadzić hasło dla roota tak aby ten kontynuował swoją pracę z tymi prawami, czy jedynym wyjściem jest zakończenie programu i poinformowanie użytkownika, aby uruchomił aplikację jako administrator? Jeszcze raz z góry dziękuję za odpowiedź.
Pozdrawiam.

: 02 lipca 2010, 22:58
autor: takedowner86
Napotkałem się na funkcję:

Kod: Zaznacz cały

getpass
jednak w opisie man jest ostrzeżenie, że jest ona przestarzała i nie należy z niej korzystać. Czy znacie może aktualną alternatywę (w tym przypadku chodzi mi o możliwość pobrania hasła na konto root'a)?

: 06 lipca 2010, 16:12
autor: db
Bez setuida/setgida się nie obejdzie.

: 07 lipca 2010, 00:09
autor: fnmirk
&quot pisze:jednak w opisie man jest ostrzeżenie, że jest ona przestarzała i nie należy z niej korzystać.
Przeczytaj dokładnie całą informację co należy zrobić w takiej sytuacji.