Запустите демон как другой пользователь на Mac OS X - PullRequest
3 голосов
/ 02 ноября 2011

Я сейчас пытаюсь создать отдельного пользователя для jenkins на Mac Os и запустить его с этим пользователем. Я создал нового пользователя:

# Create the group
sudo dscl . create /Groups/jenkins
sudo dscl . create /Groups/jenkins PrimaryGroupID 300
# Create the user
sudo dscl . create /Users/jenkins
sudo dscl . create /Users/jenkins PrimaryGroupID 300
sudo dscl . create /Users/jenkins UniqueID 300
sudo dscl . create /Users/jenkins UserShell /bin/bash
# Set the users pasword
sudo dscl . passwd /Users/jenkins 123qweASD
# Add the user to the group
sudo dscl . append /Groups/jenkins GroupMembership jenkins

И я пытаюсь запустить jenkins как пользователь jenkins:

sudo su - jenkins -c run_jenkins.sh

и получил ошибку:

su: no directory

после того, как я создал каталог для пользователя jenkins:

sudo dscl . -create /Users/jenkins NFSHomeDirectory /Users/jenkins

сопровождается следующей ошибкой:

su: unknown login: jenkins

Общий вопрос:

  1. Как мне создать _www-подобного пользователя для демона без домашнего каталога, т.е.
  2. Как мне запустить скрипт от имени этого нового пользователя.

Спасибо за помощь!

Ответы [ 3 ]

8 голосов
/ 03 ноября 2011

man launchd.plist

 UserName <string>
 This optional key specifies the user to run the job as. This key is only
 applicable when launchd is running as root.

 GroupName <string>
 This optional key specifies the group to run the job as. This key is only
 applicable when launchd is running as root. If UserName is set and Group-
 Name is not, the the group will be set to the default group of the user.
0 голосов
/ 02 ноября 2011

su - эмулирует обычный вход в систему и, следовательно, требует, чтобы учетная запись была настроена для обычных входов в систему (были определены оболочка и домашний каталог, и т. Д.). Если вам это не нужно по какой-то причине, просто позвольте sudo сделать это:

sudo -u jenkins run_jenkins.sh
0 голосов
/ 02 ноября 2011

Вам может понадобиться использовать абсолютное значение run_jenkins.sh (при условии, что оно /Users/jenkins/run_jenkins.sh):

sudo su - jenkins -c /Users/jenkins/run_jenkins.sh
...