blob: 0d1f1f10715c49cfe2823f84dff50d27cb08684a [file] [log] [blame]
#!/bin/bash
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# /var/db/dslocal/nodes/Default/users/jdoe.plist
# dscl . list /Users
# dscl . -read /Users/jdoe
# dscl . list /Groups GroupMembership
# dscl . search /Users name jdoe
# dscl . read /Groups
# Tiger created groupname = loginname
# Leopard creates groupname = 'staff', e.g. '20'
# useradd 899112222 password
USERNAME="$1"
PASSWORD="$2"
if [[ $UID -ne 0 ]]; then
echo " sorry, must be root to run this script"
exit 1
fi
RESULT=$(dscl . list /Users | grep "^$USERNAME\$")
if [ -n "$RESULT" ]; then
echo " user account: \"$USERNAME\" already exists"
exit 1
fi
MAXID=$(dscl . -list /Users UniqueID | awk '{print $2}' | sort -ug | tail -1)
USERID=$((MAXID+1))
# gleaned from Workgroup Manager
MCXSETTINGS=$(cat<<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>mcx_application_data</key>
<dict>
<key>com.apple.finder</key>
<dict>
<key>Forced</key>
<array>
<dict>
<key>mcx_preference_settings</key>
<dict>
<key>ProhibitBurn</key>
<false/>
<key>ProhibitConnectTo</key>
<false/>
<key>ProhibitEject</key>
<false/>
<key>ProhibitGoToFolder</key>
<false/>
<key>ProhibitGoToiDisk</key>
<false/>
</dict>
</dict>
</array>
</dict>
<key>com.apple.loginwindow</key>
<dict>
<key>Forced</key>
<array>
<dict>
<key>mcx_preference_settings</key>
<dict>
<key>RestartDisabledWhileLoggedIn</key>
<true/>
<key>ShutDownDisabledWhileLoggedIn</key>
<true/>
</dict>
</dict>
</array>
</dict>
</dict>
</dict>
</plist>
EOF)
DESKTOP=$(cat<<EOF
{
Background = {
default = {
BackgroundColor = (
"0.2549019753932953",
"0.4117647111415863",
"0.6666666865348816"
);
Change = Never;
ChangePath = "/Library/Desktop Pictures/Solid Colors";
ChangeTime = 1800;
ChooseFolderPath = "/Library/Desktop Pictures/";
CollectionString = "Apple Background Images";
DrawBackgroundColor = 1;
ImageFilePath = "/Library/Desktop Pictures/Solid Colors/Solid Aqua Blue.png";
NewChangePath = "/Library/Desktop Pictures/Solid Colors";
NewChooseFolderPath = "/Library/Desktop Pictures/";
NewImageFilePath = "/Library/Desktop Pictures/Solid Colors/Solid Aqua Blue.png";
Placement = Crop;
PlacementKeyTag = 1;
Random = 0;
TimerPopUpTag = 6;
};
};
}
EOF)
# Create 'standard' user account
dscl . -create /Users/$USERNAME
dscl . -create /Users/$USERNAME UserShell /bin/bash
dscl . -create /Users/$USERNAME RealName "$USERNAME"
dscl . -create /Users/$USERNAME UniqueID "$USERID"
dscl . -create /Users/$USERNAME MCXSettings "$MCXSETTINGS"
dscl . -create /Users/$USERNAME PrimaryGroupID 20
dscl . -create /Users/$USERNAME NFSHomeDirectory /Users/$USERNAME
dscl . -create /Users/$USERNAME comment "user account \"$USERNAME\" created: $(/bin/date)"
dscl . -passwd /Users/$USERNAME "$PASSWORD"
# the following should work, but doesn't
# /usr/sbin/createhomedir -l -u "$USERNAME" > /dev/null
cd /Users
/usr/sbin/createhomedir -l -c > /dev/null
/usr/bin/defaults write /Users/$USERNAME/Library/Preferences/com.apple.desktop "$DESKTOP"
/usr/sbin/chown $USERNAME:20 /Users/$USERNAME/Library/Preferences/com.apple.desktop.plist
# show new account
dscl . read /Users/$USERNAME | grep "user account"