2015-09-27 35 views
5

Jaki jest właściwy sposób tworzenia użytkownika na MacOS X z wiersza poleceń, który będzie używany tylko do uruchamiania aplikacji serwera? Na przykład istnieje już użytkownik "_www" dla serwera httpd Apache, ale dla nowej aplikacji chcę, aby korzystał on z własnego konta.Utwórz użytkownika do uruchamiania demona na MacOS X?

Odpowiedz

7

Brak komendy "adduser". Podejście Mac polega na użyciu polecenia dscl, które jest "Narzędziem wiersza poleceń usługi katalogowej". Usługi katalogowe są podobne pod względem protokołu LDAP, ale stanowią inne rozwiązanie.

Poniższe przykłady użyją "mydaemona" jako konta docelowego, ale zazwyczaj użyjesz wartości pasującej do nazwy Twojej aplikacji demona.

Wszyscy użytkownicy demona mają prefiks z podkreślnikiem, na przykład _www.

Aby wyświetlić listę atrybutów istniejącego wpisu:

sudo dscl . -read /Users/_www 

Przed utworzeniem użytkownika, utworzyć grupę wyborze nieużywany identyfikator grupy (tutaj wybraliśmy 300):

sudo dscl . -create /Groups/_mydaemon 
    sudo dscl . -create /Groups/_mydaemon PrimaryGroupID 300 

Gdy to zrobisz, tworzymy nowego użytkownika (używamy tego samego identyfikatora co dla grupy, która nie będzie używać powłoki:

sudo dscl . -create /Users/_mydaemon UniqueID 300 
    sudo dscl . -create /Users/_mydaemon PrimaryGroupID 300 
    sudo dscl . -create /Users/_mydaemon UserShell /usr/bin/false 

Powyższe opiera się na lekturze różnych źródeł informacji i weryfikacji samego procesu. Jedno odniesienie, które znalazłem przydatny jest:

http://minecraft.gamepedia.com/Tutorials/Create_a_Mac_OS_X_startup_daemon

Uwaga, istnieje również GUI wersja DSCL (lokalizacja na podstawie MacOS X 10.10):

/System/Library/CoreServices/Applications/Directory \ Utility.app/

+0

Ostatni używany identyfikator GID można znaleźć za pomocą polecenia 'dscacheutil -q group | grep gid | tail -n 1' – Sphinges

+1

Polecenie sugerowane przez [@sphinges] (https://stackoverflow.com/users/1710017/sphinges) jest nieprawidłowe. Identyfikatory grupowe niekoniecznie są wymienione w porządku rosnącym, dlatego ostatnia, ale niekoniecznie najwyższa jest zwracana '' 'dscacheutil -q group | grep gid | awk "{print 2 $}" sort -n | tail -n 1''' powinien działać lepiej, chociaż zdecydowanie wolę widzieć ostatnie 15 lub więcej, ponieważ powyżej 260 mają tendencję do bycia dość rzadkim '' 'dscacheutil -q group | grep gid | awk "{print 2 $}" sort -n | ogon -n 15''' – Scott