Mac OS X 10.5의 터미널에서 사용자 계정을 어떻게 만듭니 까?


86

컴퓨터에 ssh 한 후 Mac OS X 10.5에서 원격으로 새로운 사용자를 만들 수 있기를 원합니다. 어떻게해야합니까?


아직 대답 할 평판은 없지만 single_user모드 (보안 재설정) 에서이 작업을 수행하는 방법을 찾고 있다면를 누른 채로 재부팅해야합니다. Command-S화면 세부 정보에 따라 디스크에 대한 쓰기 권한을 얻습니다. 그런 다음 rm /var/db/.AppleSetupDone새 관리자 계정을 만들 수 있습니다. 이것이 누군가
에게

답변:


80

dscl 명령을 사용하십시오. 이 예제는 다음과 같이 "luser"사용자를 작성합니다.

dscl . -create /Users/luser
dscl . -create /Users/luser UserShell /bin/bash
dscl . -create /Users/luser RealName "Lucius Q. User"
dscl . -create /Users/luser UniqueID "1010"
dscl . -create /Users/luser PrimaryGroupID 80
dscl . -create /Users/luser NFSHomeDirectory /Users/luser

그런 다음 passwd를 사용하여 사용자 비밀번호를 변경하거나 다음을 사용할 수 있습니다.

dscl . -passwd /Users/luser password

사용자의 홈 디렉토리에 대해 / Users / luser를 작성하고 사용자가 디렉토리에 액세스 할 수 있도록 소유권을 변경하고 UniqueID가 실제로 고유한지 확인해야합니다.

이 줄은 사용자를 관리자 그룹에 추가합니다.

dscl . -append /Groups/admin GroupMembership luser

7
UID가 고유한지 어떻게 확인합니까?
JR Lawhorne

3
자동적 인 방법은 없습니다. 이 스크립트를 작성하면 "id ####"명령을 실행하여 "No such user"또는 이와 같은 핵을 반환하도록 할 수 있습니다.
palmer

1
권한이없는 경우 sudo를 사용하십시오.
Raffi Khatchadourian

BTW, 이것이보다 장황하기 때문에 이러한 명령을 구문 으로 이식했습니다useradd .
Xiong Chiamiov

1
그 주 PrimaryGroupID 80입니다 admin, 그래서 luser사용할 수 있습니다 sudo당신은 관리자의 그룹에 그를 추가 할 경우에도.
ruslo

20

(이 답변은 팔머의 절차에서 일부 공백을 채우는 부록으로 간주되어야합니다)

새 사용자를 위해 사용하지 않는 UniqueID를 선택하려면 다음을 사용할 수 있습니다.

maxid=$(dscl . -list /Users UniqueID | awk 'BEGIN { max = 500; } { if ($2 > max) max = $2; } END { print max + 1; }')
newid=$((maxid+1))

... 그런 다음 palmer가 제공 한 dscl 명령 시퀀스를 사용하여 계정을 작성한 후 다음을 사용하여 새 사용자의 홈 디렉토리를 작성하십시오.

cp -R /System/Library/User\ Template/English.lproj /Users/luser
chown -R luser:staff /Users/luser
if [[ "$(sw_vers -productVersion)" != 10.[0-5].* ]]; then
    # Set ACL on Drop Box in 10.6 and later
    chmod +a "user:luser allow list,add_file,search,delete,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown,file_inherit,directory_inherit" /Users/luser/Public/Drop\ Box
fi

(createhomedir 명령이 있지만 테스트 할 때 작동하지 않았습니다.)


1
Open Directory Master를 새 사용자로 채우고 sudo createhomedir -sOpen Directory Replicas / Fileshares에서 (IIRC) 를 호출하는 스크립트를 작성하여 행복하게 홈 디렉토리를 작성했습니다.
클린턴 블랙 모어

2
dscl -list256 개 결과로 제한되므로 256 명 이상의 사용자가있는 경우이 기술은 고유 한 UID를 보장하지 못합니다.
smokris

2 개의 추가 파이프를 제거하는 작은 트릭 (awk 만 사용) : dscl. -list / Users UniqueID | awk '{if ($ 2> max) max = $ 2; } 끝 {print max + 1; } '
Valtoni Boaventura

@ValtoniBoaventura 니스. 나는 그것을 정답으로 통합했습니다 (일반 계정이없는 경우 기본값으로). 또한 Drop Box ACL (10.6에서 추가됨)을 설정하는 단계를 추가했습니다.
고든 데이비스 슨

8

작성할 사용자가 많은 경우 구조화 된 텍스트 파일을 작성 dsimport하여 작업을 수행하도록 전달할 수 있습니다.

Apple의 명령 행 관리 안내서에는 사용자 및 그룹에 대한 전체 장이 있습니다.


이상한. Apple은 처음에 언급 한 문서의 v10.5를 없애 버린 것 같지만 v10.3 과 덜 포괄적 인 Snow Leopard 버전
chb

7

계정을 만들기 전에 고유 한 사용자 ID를 선택하고 선택하는 다른 방법은 목록을 살펴보고 사용하려는 ID가 없는지 확인하는 것입니다.

 sudo dscl . list /Users uid
 sudo dscl . list groups gid

특정 ID를 사용해야하는 경우 편리


dscl -list256 개 결과로 제한되므로 256 명 이상의 사용자가있는 경우이 기술은 고유 한 UID를 보장하지 못합니다.
smokris

그래 그 최단 경로 그냥, 지금 바로 여기에 해당 사용자를 추가 할 수있어 grep와 함께 id새 사용자에 사용할 생각했던
yair

7

여기에 다른 답변을 활용하여 사용자 계정을 만드는 훌륭한 스크립트라고 생각하는 것을 생각해 냈습니다. 분명히 이것은 ssh에서 한 번에 명령을 실행하도록 설계되지 않았습니다. 또한 Casper Imaging 또는 InstaDMG에서 만든 OS X의 패키지 기반 이미지를 컴파일 할 때 스크립트를 실행하도록 설계되었습니다 .

#!/bin/bash
# This script creates a user account under Mac OS X
# (tested with 10.5 and 10.6; likely works with 10.4 but not earlier)
# Written by Clinton Blackmore, based on work at
# http://serverfault.com/questions/20702

# === Typically, this is all you need to edit ===

USERNAME=joeadmin
FULLNAME="Joe Admin"
PASSWORD="hard_to_hack"

# A list of (secondary) groups the user should belong to
# This makes the difference between admin and non-admin users.
# Leave only one uncommented
#SECONDARY_GROUPS=""  # for a non-admin user
SECONDARY_GROUPS="admin _lpadmin _appserveradm _appserverusr" # for an admin user

# ====

if [[ $UID -ne 0 ]]; then echo "Please run $0 as root." && exit 1; fi

# Find out the next available user ID
MAXID=$(dscl . -list /Users UniqueID | awk '{print $2}' | sort -ug | tail -1)
USERID=$((MAXID+1))

# Create the user account
dscl . -create /Users/$USERNAME
dscl . -create /Users/$USERNAME UserShell /bin/bash
dscl . -create /Users/$USERNAME RealName "$FULLNAME"
dscl . -create /Users/$USERNAME UniqueID "$USERID"
dscl . -create /Users/$USERNAME PrimaryGroupID 20
dscl . -create /Users/$USERNAME NFSHomeDirectory /Users/$USERNAME

dscl . -passwd /Users/$USERNAME $PASSWORD


# Add use to any specified groups
for GROUP in $SECONDARY_GROUPS ; do
    dseditgroup -o edit -t user -a $USERNAME $GROUP
done

# Create the home directory
createhomedir -c > /dev/null

echo "Created user #$USERID: $USERNAME ($FULLNAME)"

스크립트를 통해 사용자가 속한 그룹을 지정할 수 있습니다. 실행중인 OS X 버전에 따라 다를 수 있습니다. idOS X 10.6에서 관리자로 실행할 때 OS X 10.5에서 관리자로 실행할 때와 다른 결과가 나타납니다 .


또 다른 대답으로, Elliott는 'createhomedir -c'명령이 끝까지 바인딩 된 디렉토리의 모든 사용자에 대한 계정을 생성 할 것이라고 경고합니다. (맨 페이지의 '-c'옵션은 '로컬 홈 경로에 대해서만 홈 디렉토리를 만듭니다.') 더 좋은 다른 옵션 인 '-u username'이 있습니다.
클린턴 블랙 모어

안녕하세요, 위의 스크립트를 사용하고 있습니다. 새 사용자를 추가하지만 사용자가 자신의 캘린더에 연결하면 권한이 없다고 표시됩니다! 도와 줄 수 있습니까?

@ jimmy : serverfault에 대한 새로운 질문을하고 의견에 질문을하는 것이 아니라이 답변에 링크하는 것이 좋습니다. 권한이 옳을 것으로 기대합니다. 'chown'과 'chmod'를 사용하면 올바른 권한이없는 파일을 식별 할 수 있으면 도움이 될 수 있지만 어떤 파일인지는 잘 모르겠습니다.
클린턴 블랙 모어

dscl -list256 개 결과로 제한되므로 256 명 이상의 사용자가있는 경우이 기술은 고유 한 UID를 보장하지 못합니다.
smokris

4

나는 시작 약간의 래퍼 에 대해 dscl그 소요 useradd가 완료되지이다 (도 내가 몇 가지의 OS X에 불가능으로는 될 수 있다고 생각 할),하지만 일부 사용자 생성을 수행하는 데 사용되는 -의 매개 변수를.

프레임 워크에는 모든 매개 변수가 있으므로 GitHub의 멋진 소셜 기능을 활용하려면 쉽게 수행 할 수 있습니다.


# gem install osx-useradd.gemspecOS X 10.5에서 실행 ERROR: While executing gem ... (Gem::RemoteSourceException)하면 두 번째 줄은 HTTP Response 301 fetching http://gems.rubyforge.org/yaml입니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.