aboutsummaryrefslogtreecommitdiffstats
path: root/mob2loc.sh
diff options
context:
space:
mode:
authorFilipp Lepalaan <filipp@mac.com>2010-04-16 10:29:14 +0300
committerFilipp Lepalaan <filipp@mac.com>2010-04-16 10:29:14 +0300
commitaa769552aca49384e3ccb0d155aa238a4ac3de34 (patch)
treedaaa8c9e1a12ecc76970ef774e9a5fc996062bad /mob2loc.sh
parent7e0e116d4fc2a3d57e125770266e402f67ee815f (diff)
downloadmtk-aa769552aca49384e3ccb0d155aa238a4ac3de34.tar.gz
mtk-aa769552aca49384e3ccb0d155aa238a4ac3de34.tar.bz2
mtk-aa769552aca49384e3ccb0d155aa238a4ac3de34.zip
Added new files
Diffstat (limited to 'mob2loc.sh')
-rwxr-xr-xmob2loc.sh56
1 files changed, 56 insertions, 0 deletions
diff --git a/mob2loc.sh b/mob2loc.sh
new file mode 100755
index 0000000..aa931fc
--- /dev/null
+++ b/mob2loc.sh
@@ -0,0 +1,56 @@
+#!/usr/bin/env bash
+# Convert Mobile account to Local
+
+if [[ $USER != "root" ]]; then
+ echo "This tool must be run as root" >&2
+ exit 1
+fi
+
+usage="$(basename $0) username password"
+
+if [[ $# -lt 2 ]]; then
+ echo $usage 2>&1
+ exit 1
+fi
+
+username=$1
+password=$2
+
+# First check that user exists
+homedir=$(dscl . read "/users/$username" NFSHomeDirectory | sed 's/.*: //')
+
+if [[ ! -d $homedir ]]; then
+ echo "Invalid user $username" >&2
+ exit 1
+fi
+
+nextid() {
+ max_id=$(dscl . -list $1 $2 | awk '{print $2}' | sort -n | tail -n 1)
+ (( max_id++ ))
+ echo $max_id
+}
+
+new_uid=$(nextid /users UniqueID)
+new_gid=$(nextid /groups PrimaryGroupID)
+
+newhome="/Users/$username"
+
+# Delete mobile account
+dscl . -delete /users/$username
+
+# Create local user
+dscl . -create /users/$username UniqueID $new_uid
+dscl . -create /users/$username RealName "$new_rn"
+dscl . -create /users/$username UserShell $new_shell
+dscl . -create /users/$username GeneratedUID $(uuidgen)
+dscl . -create /users/$username PrimaryGroupID $new_gid
+dscl . -create /users/$username NFSHomeDirectory $newhome
+
+# Give admin perms
+dscl . -append /groups/admin users $username
+
+# Set the password
+dscl . -passwd /users/$username "$password"
+
+# Set correct permissions
+chown -R $username:staff