I want to have the computer log me in so all my login items can get started, but I need it to be secure, aka it still needs to ask me for my password before I can actually use the computer.
I outlined how to do this at http://www.tuaw.com/2011/03/07/terminally-geeky-use-automatic-login-more-securely/ but I will summarize it for you:
- set your account to autologin
- create a login item (using launchd) which calls:
/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend
NOTE: that command should be ONE LONG LINE not two lines with a line break/line feed.
A more thorough explanation is available at TUAW, so I won't repeat it all here, because those are the relevant details.
What it does:
The idea is very simple, your account is set to auto-login, so all of your login items will run, however, one of those login items (the CGSession command listed above) will tell the loginwindow to appear. If you have used Fast User Switching before, you will be familiar with how it works.
"But what if someone holds down the shift key to stop autolaunching?"
In my testing, that will also prevent the user from being automatically logged in.
Is this 100% as safe as not using auto-login?
Probably not, but I'd consider it close to 99.999% as safe.
That said, use at your own risk, etc.
In System preferences set the screen saver so that it is on and required a password to start
I left the Disable automatic login ticked really as a mistake as to answer the user exactly this should be unticked.
However I would strongly suggest that it is ticked otherwise any could reboot the computer and get into a logged in session as the user.
Such behavior is not possible to be set in the System Preferences. Login Items are user specific. They aren't loaded unless you select a user and enter the password.
You would need to e.g. write a script that locks the screen as soon as you are logged in and set this script to be excecuted as the first thing after login.
Since not everybody is familiar with creating a launchd / launchctl script, here's how you do it
This explains step two of @TJ Luomas answer:
Set your account to auto login
Open TextEdit and create a new file containing the following
#!/bin/bash /System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend
Name the file
suspend.shand save it to your User folder (
Open TextEdit and create a new file with the following content
<?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>Label</key> <string>com.fl034.suspendAfterLogin</string> <key>Program</key> <string>/Users/fl034/suspend.sh</string> <key>RunAtLoad</key> <true/> </dict> </plist>
Save the file to
Restart your Mac to see if it works