편집 : OS X Mavericks 용 2014 년 1 월 9 일 업데이트 됨 (Dave의 제안, 감사합니다!)
이를 위해 bash 스크립트를 작성했습니다. 사용하지 않는 동일한 gid가 500 인 첫 번째 미사용 uid (Mac OS X의 데몬 계정 uid)를 사용합니다.
스크립트를 파일 이름으로 저장하고로 add_system_user.sh
실행 파일을 설정하십시오 chmod 755 add_system_user.sh
.
그런 다음 par 라는 데몬 / 시스템 사용자를 추가한다고 가정 해 봅시다 . 이 스크립트를 다음과 같이 실행합니다 :
sudo add_system_user.sh par
그리고 당신은 (당신이 요청한 이름으로 _par
) 별칭 par
이 있고 일치하는 uid와 gid (예를 들어 499 또는 무엇이든) 를 가진 시스템 사용자를 얻게 될 것 입니다.
스크립트는 다음과 같습니다.
#!/bin/bash
if (( $(id -u) )) ; then
echo "This script needs to run as root"
exit 1
fi
if [[ -z "$1" ]] ; then
echo "Usage: $(basename $0) [username] [realname (optional)]"
exit 1
fi
username=$1
realname="${2:-$username}"
echo "Adding daemon user $username with real name \"$realname\""
for (( uid = 500;; --uid )) ; do
if ! id -u $uid &>/dev/null; then
if ! dscl /Local/Default -ls Groups gid | grep -q [^0-9]$uid\$ ; then
dscl /Local/Default -create Groups/_$username
dscl /Local/Default -create Groups/_$username Password \*
dscl /Local/Default -create Groups/_$username PrimaryGroupID $uid
dscl /Local/Default -create Groups/_$username RealName "$realname"
dscl /Local/Default -create Groups/_$username RecordName _$username $username
dscl /Local/Default -create Users/_$username
dscl /Local/Default -create Users/_$username NFSHomeDirectory /var/empty
dscl /Local/Default -create Users/_$username Password \*
dscl /Local/Default -create Users/_$username PrimaryGroupID $uid
dscl /Local/Default -create Users/_$username RealName "$realname"
dscl /Local/Default -create Users/_$username RecordName _$username $username
dscl /Local/Default -create Users/_$username UniqueID $uid
dscl /Local/Default -create Users/_$username UserShell /usr/bin/false
dscl /Local/Default -delete /Users/_$username AuthenticationAuthority
dscl /Local/Default -delete /Users/_$username PasswordPolicyOptions
break
fi
fi
done
echo -e "Created system user $username (uid/gid $uid):\n"
dscl /Local/Default -read Users/_$username
echo -e "\nYou can undo the creation of this user by issuing the following commands:\n"
echo "sudo dscl /Local/Default -delete Users/_$username"
echo "sudo dscl /Local/Default -delete Groups/_$username"