Krótka wersja: chcę, aby uruchomić program somefunction("username")
i zwrócić mu identyfikator użytkownika powiązany z username
. Na przykład somefunction("root")
zwróci 0
.Jak mogę uzyskać identyfikator użytkownika powiązany z loginem w systemie Linux?
Piszę program serwera, który może potencjalnie używać portów o niskim numerze, więc musi zaczynać się jako root. Oczywiście nie chcę, aby działał jako root, więc plan polega na umożliwieniu użytkownikom określenia, który użytkownik powinien uruchomić program. Problem polega na tym, że setuid()
wymaga identyfikatora użytkownika i nie wiem, jak wyszukać identyfikator użytkownika z nazwy logowania. Spojrzałem w unistd.h
i wydaje się, że ma tylko funkcje do wyszukiwania informacji o bieżącym użytkowniku.
Wiem, że mogę po prostu otworzyć /etc/passwd
, ale wolałbym, gdy nie ma być funkcja do tego.
Odpowiedź dał ci rybę; oto jak łowić ryby: 'man -k -s 3 password' oraz' man man' w przypadku, gdy nie wiesz, co oznacza pierwsze polecenie. – msw