To nie odpowiada bezpośrednio na pytanie, ale nie sądzę, aby zadawano tutaj właściwe pytanie. Wydaje mi się, że pytający chce programu, który prawdopodobnie będzie działał inaczej, jeśli ma pewne uprawnienia, ale nie twierdzę, że sprawdzanie sudo nie jest na to sposobem. Po pierwsze, wiele systemów może nie implementować „sudo”, nie jest to w żadnym wypadku wymagane w Linuksie lub wielu systemach uniksowych.
Na przykład użytkownik może być już zalogowany jako root, co powoduje, że sudo nie ma sensu, a może system ma użytkowników innych niż root, którzy nadal mają możliwości wykonywania zadań administracyjnych, które program może chcieć wykonać. Wreszcie być może system nie ma roota ani sudo i zamiast tego używa obowiązkowego systemu kontroli dostępu o różnych możliwościach i bez przechwytywania wszystkich superużytkowników do sudo. Albo użytkownik może zostać sudo, ale ze względów bezpieczeństwa na konto, które ma uprawnienia bez własnego konta (często uruchamiam niezaufany kod z tymczasowym nieuprzywilejowanym użytkownikiem, który może pisać tylko na ramdyskach, aby upuścić, a nie podnosić moje uprawnienia ). Ogólnie złym pomysłem jest zakładanie określonego modelu uprawnień, takiego jak sudo lub istnienie roota, lub zakładanie, że sudoedowany użytkownik ma jakieś szczególne uprawnienia.
Jeśli chcesz dowiedzieć się, czy masz uprawnienia do wykonania operacji, najlepszym sposobem jest zazwyczaj po prostu próba zrobienia tego, a następnie sprawdź, czy errno nie ma problemów z uprawnieniami, jeśli się nie powiedzie lub jeśli jest to operacja wieloetapowa, która musi zakończyć się niepowodzeniem lub powodzeniem możesz sprawdzić, czy operacja będzie działać z funkcjami takimi jak funkcja dostępu POSIX (strzeż się tutaj możliwych warunków wyścigu, jeśli uprawnienia są aktywnie zmieniane)
Jeśli dodatkowo musisz znać prawdziwego użytkownika za sudo, możesz użyć funkcji getlogin, która powinna działać dla każdej interaktywnej sesji z bazowym terminalem i pozwoli ci na przykład dowiedzieć się, kto „naprawdę” uruchamia polecenie do kontroli lub znaleźć katalog domowy prawdziwego użytkownika do zapisywania dzienników.
Wreszcie, jeśli naprawdę chcesz dowiedzieć się, czy użytkownik ma dostęp do roota (wciąż zły pomysł, ale mniej specyficzny dla implementacji), możesz użyć getuid, aby sprawdzić identyfikator użytkownika 0, a tym samym root.