Jak uruchomić program jako root bez „sudo”?


10

Mam pewien program binarny na OS X, który można uruchomić tylko jako root.

Mam dość przygotowywania się za sudokaż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+sustawić 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.


Czy można go uruchomić w określonym czasie lub gdy wystąpi jakieś zdarzenie?
user151019,

9
Dawni guru unixowi sugerowaliby, że regularne ręczne wywoływanie operacji tylko do rootowania oznacza, że ​​robisz to źle. Czy to coś, co można zautomatyzować? Lub uruchomić jako demon? Więcej szczegółów może przynieść sugestie dotyczące rozwiązań innego rodzaju.
dmckee --- były moderator kociak

Czy program jest faktycznie własnością roota? Setuid / gid użyje użytkownika / grupy pliku.
Daniel Beck

2
… Gdzie „więcej szczegółów” obejmuje również takie rzeczy, jak to, czy plik binarny tego programu znajduje się na woluminie zamontowanym przez NFS i czy używasz nosuidopcji montowania… oprócz tego, dlaczego musisz regularnie uruchamiać program jako superużytkownik.
JdeBP

@dmckee wielu użytkowników komputerów Mac uruchamia oprogramowanie serwerowe na swoich stacjach roboczych i często konfiguruje się, aby wymagać rootowania dla rzeczy, które tak naprawdę nie powinny go potrzebować ... ale ponowne skonfigurowanie stosu LAMP do uruchamiania bez rootowania jest uciążliwe. Z drugiej strony, ponowne uruchamianie apache 20 razy dziennie i pisanie sudo za każdym razem jest również bolesne w dupie. To proste rozwiązanie.
Abhi Beckert

Odpowiedzi:


2

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 filepolecenia w programie.


17

Połowa rozwiązania twojego problemu:

w pliku sudoers dodaj:

username ALL= NOPASSWD: /path/to/command

Następnie z wiersza poleceń możesz wpisać:

sudo command

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.


Zaskoczony, gdy znalazłem najlepszą odpowiedź na dole. Dziękuję Ci!
CDR

Do rozwiązania drugiej połowy (bez konieczności wpisywania polecenia sudo) utwórz alias powłoki, który zawiera polecenie sudo w poleceniu (np. Surm = sudo rm "$ @")
Walter

4

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 scriptUruchom ten proces za pomocą polecenia, a zamiast sudo napiszesz swoje poświadczenia w AppleScript:

do shell script "/path/to/your/executable/here" user name "me" password "mypassword" with administrator privileges

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.


Sposób na „Runas” na
Maca

2

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


Mój problem polegał na tym, że zainstalowane programy zostały zainstalowane bez odpowiednich uprawnień, więc uruchomiłem to w katalogach tych programów, a teraz działają poprawnie bez sudo. Dzięki!
atwixtor

0

Możesz to zrobić

sudo tcsh

który umieści cię w powłoce root.


0

wygląda na to, że sam program sprawdza, czy działa z ID = 0


1
… Co oczywiście będzie, jeśli zostanie ustawiony superużytkownik UID (pomijając wyrażone powyżej obawy). Prawdopodobnie próbujesz powiedzieć, że program sprawdza rzeczywisty UID 0, a nie tylko efektywny UID 0.
JdeBP

-1

Mogłeś sudo chown YOUR-USERNAME-HERE BINARY-NAME-HERE.

Mimo to całkowicie zgadzam się z komentarzem dmckee.


Jak to by cokolwiek pomogło?
Scott
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.