MacInitial.sh 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. #!/bin/bash
  2. if [ -f "/usr/bin/sudo" ]; then
  3. [ "$(sudo whoami)" == "root" ] || return
  4. # System setting
  5. echo -e "\n# System setting ..."
  6. sudo defaults write com.apple.loginwindow TALLogoutSavesState -bool FALSE
  7. sudo defaults write com.apple.loginwindow SHOWOTHERUSERS_MANAGED -bool FALSE
  8. fi
  9. # Check SIP
  10. [ -f "/usr/bin/sudo" ] && [ "$(csrutil status |cut -d':' -f2 |grep -io 'enable\|disable')" != "disable" ] && echo "Please disable SIP. (csrutil disable)" && exit 1
  11. # Mount
  12. if [ -f "/usr/bin/sudo" ]; then
  13. sudo mount -uw /
  14. else
  15. mount -uw /
  16. fi
  17. [ $? -ne 0 ] && echo "Mount root fail." && exit 1
  18. DISABLE(){
  19. [ -n "$1" ] && [ -n "$2" ] && [ -d "$1" ] || return
  20. for item in `find "$1" -type f -maxdepth 1 -name "${2}*"`
  21. do
  22. [ -n "$item" ] || continue
  23. echo "$item" |grep -q "\.plist$"
  24. [ $? -eq 0 ] || continue
  25. echo "Disable: ${item}"
  26. if [ -f "/usr/bin/sudo" ]; then
  27. sudo mv "${item}" "${item}.bak"
  28. else
  29. mv "${item}" "${item}.bak"
  30. fi
  31. done
  32. }
  33. ENABLEALL(){
  34. [ -n "$1" ] && [ -d "$1" ] || return
  35. for item in `find "$1" -type f -maxdepth 1 -name "*.bak"`
  36. do
  37. [ -n "$item" ] || continue
  38. echo "$item" |grep -q "\.bak$"
  39. [ $? -eq 0 ] || continue
  40. newItem=`echo "${item}" |sed "s/.\bak$//"`
  41. echo "Enable: ${newItem}"
  42. if [ -f "/usr/bin/sudo" ]; then
  43. sudo mv "${item}" "${newItem}"
  44. else
  45. mv "${item}" "${newItem}"
  46. fi
  47. done
  48. }
  49. RENAMEBIN(){
  50. [ -f "/usr/bin/sudo" ] && [ -n "$1" ] && [ -f "$1" ] || return
  51. if [ ! -f "${1}.bak" ]; then
  52. echo "${1} --> ${1}.bak"
  53. sudo mv "${1}" "${1}.bak"
  54. fi
  55. if [ -f "${1}.bak" ]; then
  56. sudo ln -sf /usr/bin/true "$1"
  57. fi
  58. }
  59. RMAPP(){
  60. [ -n "$1" ] && [ -n "$2" ] && [ -d "$1" ] && [ -d "$2" ] || return
  61. for item in `find "$1" -type d -maxdepth 1 -name "${2}"`
  62. do
  63. [ -n "$item" ] || continue
  64. echo "RM APP'$2'"
  65. if [ -f "/usr/bin/sudo" ]; then
  66. rm -rf "${item}"
  67. else
  68. rm -rf "${item}"
  69. fi
  70. done
  71. }
  72. DEAMONS=()
  73. # Disable Analytic
  74. DEAMONS+=("com.apple.analyticsd.plist")
  75. # Disable AirPlay
  76. DEAMONS+=("com.apple.AirPlayXPCHelper.plist")
  77. # Disable Updates
  78. DEAMONS+=("com.apple.softwareupdate.plist")
  79. # Disable DVD
  80. DEAMONS+=("com.apple.dvdplayback.setregion.plist")
  81. # Disable Feedback
  82. DEAMONS+=("com.apple.SubmitDiagInfo.plist" \
  83. "com.apple.CrashReporterSupportHelper.plist" \
  84. "com.apple.ReportCrash.Root.plist"\
  85. "com.apple.GameController.gamecontrollerd.plist")
  86. # Disable FTP
  87. DEAMONS+=("com.apple.ftp-proxy.plist")
  88. # Disable APSD
  89. # DEAMONS+=("com.apple.apsd")
  90. # Disable spindump
  91. DEAMONS+=("com.apple.spindump.plist")
  92. # Disable systemstats
  93. DEAMONS+=("com.apple.systemstats.daily.plist" \
  94. "com.apple.systemstats.analysis.plist" \
  95. "com.apple.systemstats.microstackshot_periodic.plist")
  96. AGENTS=()
  97. # Disable iCloud
  98. AGENTS+=("com.apple.cloud" \
  99. "com.apple.icloud.fmfd.plist" \
  100. "com.apple.iCloudUserNotifications.plist")
  101. # Disable AddressBook
  102. AGENTS+=("com.apple.AddressBook")
  103. # Disable Safari
  104. AGENTS+=("com.apple.safaridavclient.plist" \
  105. "com.apple.SafariNotificationAgent.plist" \
  106. "com.apple.SafariCloudHistoryPushAgent.plist")
  107. # Disable Facetime
  108. AGENTS+=("com.apple.imagent.plist" \
  109. "com.apple.IMLoggingAgent.plist")
  110. # Quicklook
  111. AGENTS+=("com.apple.quicklook.ui.helper.plist" \
  112. "com.apple.quicklook.ThumbnailsAgent.plist" \
  113. "com.apple.quicklook.plist")
  114. # Disable Game Center / Apple TV / Homekit
  115. AGENTS+=("com.apple.gamed.plist" \
  116. "com.apple.videosubscriptionsd.plist" \
  117. "com.apple.homed.plist"
  118. "com.apple.AMPArtworkAgent.plist")
  119. # Disable Siri
  120. AGENTS+=("com.apple.siriknowledged.plist" \
  121. "com.apple.assistant_service.plist" \
  122. "com.apple.assistantd.plist" \
  123. "com.apple.Siri.agent.plist")
  124. # Disable Sidecar
  125. AGENTS+=("com.apple.sidecar-hid-relay.plist" \
  126. "com.apple.sidecar-relay.plist")
  127. # Disable Ad
  128. AGENTS+=("com.apple.ap.adprivacyd.plist" \
  129. "com.apple.ap.adservicesd.plist")
  130. # Disable Debug
  131. AGENTS+=("com.apple.spindump_agent.plist" \
  132. "com.apple.ReportCrash.plist" \
  133. "com.apple.ReportGPURestart.plist" \
  134. "com.apple.ReportPanic.plist")
  135. # Disable Others
  136. AGENTS+=("com.apple.AirPlayUIAgent.plist" \
  137. "com.apple.AirPortBaseStationAgent.plist" \
  138. "com.apple.photoanalysisd.plist" \
  139. "com.apple.familycircled.plist" \
  140. "com.apple.familycontrols.useragent.plist" \
  141. "com.apple.familynotificationd.plist" \
  142. "com.apple.parentalcontrols.check.plist" \
  143. "com.apple.podcasts.PodcastContentService.plist" \
  144. "com.apple.macos.studentd.plist" \
  145. "com.apple.suggestd.plist" \
  146. "com.apple.facebook.xpc.plist" \
  147. "com.apple.linkedin.xpc.plist" \
  148. "com.apple.twitter.xpc.plist" \
  149. "com.apple.soagent.plist" \
  150. "com.apple.SocialPushAgent.plist" \
  151. "com.apple.Maps.pushdaemon.plist" \
  152. "com.apple.DictationIM.plist" \
  153. "com.apple.java.updateSharing.plist" \
  154. "com.apple.softwareupdate_notify_agent.plist")
  155. APPS=()
  156. APPS+=("TV.app" \
  157. "News.app" \
  158. "Home.app" \
  159. "Books.app" \
  160. "Chess.app" \
  161. "Podcasts.app" \
  162. "Stocks.app" \
  163. "Music.app")
  164. # Volume
  165. cd "/Volumes/$(ls -1 /Volumes|head -n1)"
  166. # Enable /System/Library/LaunchDaemons
  167. ENABLEALL "./System/Library/LaunchDaemons"
  168. # Enable /System/Library/LaunchAgents
  169. ENABLEALL "./System/Library/LaunchAgents"
  170. # Enable and Exit
  171. # exit 0
  172. # Disable /System/Library/LaunchDaemons
  173. echo -e "\n# Disable Daemons ..."
  174. for deamon in "${DEAMONS[@]}"; do DISABLE "./System/Library/LaunchDaemons" "$deamon"; done
  175. # Disable /System/Library/LaunchAgents
  176. echo -e "\n# Disable Agents ..."
  177. for agent in "${AGENTS[@]}"; do DISABLE "./System/Library/LaunchAgents" "$agent"; done
  178. # Remove System APP
  179. echo -e "\n# Remove System APP ..."
  180. for app in "${APPS[@]}"; do RMAPP "./System/Applications" "$app"; done
  181. # Replace spindump
  182. echo -e "\n# Replace spindump ..."
  183. RENAMEBIN "/usr/sbin/spindump"
  184. # Finish
  185. echo -e "\n# Finish! \n"