Mam pewien program binarny na OS X, który można uruchomić tylko jako root.
Mam dość przygotowywania się za sudo
każdym razem, gdy je wywołuję i wpisuję hasło, i chciałbym, aby automatycznie uruchamiał się jako root, gdy wywołuję je regularnie, bez pytania o hasło.
Właścicielem programu jest root, a jego grupa to koło.
Próbowałem chmod ug+s
ustawić ID użytkownika i groupid podczas wykonywania na root / wheel, ale kiedy uruchamiam program bez sudo, nadal narzeka, że może działać tylko z sudo lub jako root.
nosuid
opcji montowania… oprócz tego, dlaczego musisz regularnie uruchamiać program jako superużytkownik.Odpowiedzi:
Czy jesteś pewien, że program, który próbujesz uruchomić, jest w rzeczywistości plikiem binarnym, a nie skryptem powłoki. Większość powłok ignoruje skrypty suid, ponieważ są one naprawdę bardzo trudne do wykonania bezpiecznie. Łatwym sposobem sprawdzenia jest użycie
file
polecenia w programie.źródło
Połowa rozwiązania twojego problemu:
w pliku sudoers dodaj:
Następnie z wiersza poleceń możesz wpisać:
i uruchomi polecenie bez pytania o hasło. To polecenie będzie działać jako root.
Uwaga: musisz zastąpić nazwę użytkownika rzeczywistą nazwą użytkownika.
źródło
Jeśli naprawdę nie możesz wywołać go jako demona z jakiegokolwiek powodu (to pytanie byłoby odpowiednie w tym przypadku) , tę metodę można zhakować razem, ale jest dość brudna i wcale nie jest bezpieczna.
Chodzi o uruchomienie go za pomocą AppleScript. Najpierw musisz wiedzieć, jak wywołać ten proces z wiersza poleceń (co, jeśli już używasz sudo, oznacza, że wszystko jest gotowe).
do shell script
Uruchom ten proces za pomocą polecenia, a zamiast sudo napiszesz swoje poświadczenia w AppleScript:Powtarzam część o tym, że jest to niepewne: TO ZNACZY, ŻE TWÓJ ADMIN CREDS ZOSTANIE PRZECHOWYWANY W TEKSTOWYM TEKSTIE. Jeśli to w ogóle możliwe, powinieneś znaleźć sposób, aby ustawić to w tle jako LaunchDaemon.
źródło
W OSX załóżmy, że program, który posiadasz, znajduje się w / usr / local / bin / YourProgramName ... Aby rozwiązać ten problem, wykonaj następujące polecenie: Aby zmienić identyfikator użytkownika / identyfikator grupy dla hierarchii plików zrootowanych w plikach zamiast samych plików .
sudo chown -R $(whoami) /usr/local/bin/
... następnie w Terminalu wywołaj programName, $ YourProgramName
źródło
Możesz to zrobić
który umieści cię w powłoce root.
źródło
wygląda na to, że sam program sprawdza, czy działa z ID = 0
źródło
Mogłeś
sudo chown YOUR-USERNAME-HERE BINARY-NAME-HERE
.Mimo to całkowicie zgadzam się z komentarzem dmckee.
źródło