#!/bin/sh # # Short: Create required folders for any Mac OS X NetInfo SharePoints # Version: 2.03, 13-08-02 # Author: Mark J Swift, msw AT blackpool.ac.uk # Long: This script will create share folders and any required # subfolders for every SharePoint specified by netinfo. # The script also sets appropriate rights on these folders. # Folders created within the mount folder include: # "Temporary Items" (u=r/w,g=r/w,o=r/w) # "Network Trash Folder" (u=r/w,g=r/w,o=r/w) # "Users" (u=r/w,g=r/w,o=r) # "Users/Groups Folder" (u=r/w,g=r/w,o=r) # "Managed Preferences" (u=r/w,g=r/w,o=r) # "Managed Preferences/Initial Preferences" (u=r/w,g=r/w,o=r) # "Managed Preferences/Forced Preferences" (u=r/w,g=r/w,o=r) # "Managed Preferences/Preserved Preferences" (u=r/w,g=r/w,o=r) # (u=administrator,g=wheel) # # 1. Log in as root # # 2. Copy this script into roots home directory # (/private/var/root/Documents). # # 3. Start a new shell process and change directory to roots home. # # cd ~/Documents # # 4. Set the execute flag on the script, type: # # chmod u+x mksharefldrs.sh # # 5. Execute the "mksharefldrs.sh" script with the following command: # # ~/Documents/mksharefldrs.sh # # SET CONSTANTS fldrchar=`echo "ab" | tr "ab" "\306\222"` # -------------------------------- # get NETINFO group id for "admin" group # -------------------------------- ni_admin_group_name="admin" ni_admin_group_gid=`niutil -read . /groups/$ni_admin_group_name | grep -y "^gid: " | cut -d: -f2 | tr -d "\040"` # -------------------------------- # debug - print admin group details to screen # -------------------------------- # echo " ni_admin_group_name:$ni_admin_group_name" # echo " ni_admin_group_gid:$ni_admin_group_gid" # -------------------------------- # get NETINFO user id for "admin" user # -------------------------------- ni_admin_user_name=`niutil -read . /groups/$ni_admin_group_name | grep -y "^users: " | cut -d" " -f3` if test -z $ni_admin_user_name then ni_admin_user_name="root" fi ni_admin_user_uid=`niutil -read . /users/$ni_admin_user_name | grep -y "^uid: " | cut -d: -f2 | tr -d "\040"` # -------------------------------- # debug - print admin user details to screen # -------------------------------- # echo " ni_admin_user_name:$ni_admin_user_name" # echo " ni_admin_user_uid:$ni_admin_user_uid" for ni_dirid in `niutil -list . /config/SharePoints | cut -d ' ' -f1` do # ni_dirid=`nigrep "^$ni_share_name" . /config/SharePoints | cut -d ' ' -f1 | tail -n 1` ni_share_name=`niutil -read . $ni_dirid | grep -y "^name: " | cut -d" " -f2-` ni_share_directory_path=`niutil -read . $ni_dirid | grep -y "^directory_path: " | cut -d" " -f2-` # -------------------------------- # debug - print share details to screen # -------------------------------- # echo " ni_share_name: $ni_share_name" # echo " ni_dirid: $ni_dirid" # echo " ni_share_directory_path: $ni_share_directory_path" if test -z "$ni_share_directory_path" then echo " ERROR : cannot create/modify folder for SharePoint $ni_share_name. SharePoint is missing directory_path property." else # does the sharepoint folder exist if test -d "$ni_share_directory_path" then # yes, folder is there! echo " : updating directory $ni_share_directory_path" else echo " : making directory $ni_share_directory_path" mkdir "$ni_share_directory_path" fi chown $ni_admin_user_uid "$ni_share_directory_path" chgrp 0 "$ni_share_directory_path" chmod 775 "$ni_share_directory_path" # does share Temporary Items folder exist? if test -d "$ni_share_directory_path/Temporary Items" then # yes, folder is there! echo " : updating directory $ni_share_directory_path/Temporary Items" else echo " : making directory $ni_share_directory_path/Temporary Items" mkdir "$ni_share_directory_path/Temporary Items" fi chown $ni_admin_user_uid "$ni_share_directory_path/Temporary Items" chgrp 0 "$ni_share_directory_path/Temporary Items" chmod 777 "$ni_share_directory_path/Temporary Items" # does share Network Trash Folder folder exist? if test -d "$ni_share_directory_path/Network Trash Folder" then # yes, folder is there! echo " : updating directory $ni_share_directory_path/Network Trash Folder" else echo " : making directory $ni_share_directory_path/Network Trash Folder" mkdir "$ni_share_directory_path/Network Trash Folder" fi chown $ni_admin_user_uid "$ni_share_directory_path/Network Trash Folder" chgrp 0 "$ni_share_directory_path/Network Trash Folder" chmod 777 "$ni_share_directory_path/Network Trash Folder" # does (macintosh manager) Users Folder folder exist? if test -d "$ni_share_directory_path/Users" then # yes, folder is there! echo " : updating directory $ni_share_directory_path/Users" else echo " : making directory $ni_share_directory_path/Users" mkdir "$ni_share_directory_path/Users" fi chown $ni_admin_user_uid "$ni_share_directory_path/Users" chgrp 0 "$ni_share_directory_path/Users" chmod 775 "$ni_share_directory_path/Users" # does (macintosh manager) "Users/Groups Folder" Folder folder exist? if test -d "$ni_share_directory_path/Users/Groups Folder" then # yes, folder is there! echo " : updating directory $ni_share_directory_path/Users/Groups Folder" else echo " : making directory $ni_share_directory_path/Users/Groups Folder" mkdir "$ni_share_directory_path/Users/Groups Folder" fi chown $ni_admin_user_uid "$ni_share_directory_path/Users/Groups Folder" chgrp 0 "$ni_share_directory_path/Users/Groups Folder" chmod 775 "$ni_share_directory_path/Users/Groups Folder" # does (macintosh manager) "Managed Preferences" Folder folder exist? if test -d "$ni_share_directory_path/Managed Preferences" then # yes, folder is there! echo " : updating directory $ni_share_directory_path/Managed Preferences" else echo " : making directory $ni_share_directory_path/Managed Preferences" mkdir "$ni_share_directory_path/Managed Preferences" fi chown $ni_admin_user_uid "$ni_share_directory_path/Managed Preferences" chgrp 0 "$ni_share_directory_path/Managed Preferences" chmod 775 "$ni_share_directory_path/Managed Preferences" # does (macintosh manager) "Managed Preferences/Initial Preferences" Folder folder exist? if test -d "$ni_share_directory_path/Managed Preferences/Initial Preferences" then # yes, folder is there! echo " : updating directory $ni_share_directory_path/Managed Preferences/Initial Preferences" else echo " : making directory $ni_share_directory_path/Managed Preferences/Initial Preferences" mkdir "$ni_share_directory_path/Managed Preferences/Initial Preferences" fi chown -R $ni_admin_user_uid "$ni_share_directory_path/Managed Preferences/Initial Preferences" chgrp -R 0 "$ni_share_directory_path/Managed Preferences/Initial Preferences" chmod -R 775 "$ni_share_directory_path/Managed Preferences/Initial Preferences" # does (macintosh manager) "Managed Preferences/Forced Preferences" Folder folder exist? if test -d "$ni_share_directory_path/Managed Preferences/Forced Preferences" then # yes, folder is there! echo " : updating directory $ni_share_directory_path/Managed Preferences/Forced Preferences" else echo " : making directory $ni_share_directory_path/Managed Preferences/Forced Preferences" mkdir "$ni_share_directory_path/Managed Preferences/Forced Preferences" fi chown -R $ni_admin_user_uid "$ni_share_directory_path/Managed Preferences/Forced Preferences" chgrp -R 0 "$ni_share_directory_path/Managed Preferences/Forced Preferences" chmod -R 775 "$ni_share_directory_path/Managed Preferences/Forced Preferences" # does (macintosh manager) "Managed Preferences/Preserved Preferences" Folder folder exist? if test -d "$ni_share_directory_path/Managed Preferences/Preserved Preferences" then # yes, folder is there! echo " : updating directory $ni_share_directory_path/Managed Preferences/Preserved Preferences" else echo " : making directory $ni_share_directory_path/Managed Preferences/Preserved Preferences" mkdir "$ni_share_directory_path/Managed Preferences/Preserved Preferences" fi chown -R $ni_admin_user_uid "$ni_share_directory_path/Managed Preferences/Preserved Preferences" chgrp -R 0 "$ni_share_directory_path/Managed Preferences/Preserved Preferences" chmod -R 775 "$ni_share_directory_path/Managed Preferences/Preserved Preferences" fi done