Can Steam games be available to the Guest account? Is it possible to make Steam games playable on the Guest account? It would be nice to be able to let visitors entertain themselves with e.g. Portal in a sandboxed setting.

Edit:

There may be terms-of-service issues involved.  I will contact Steam.
It's highly doubtful that it would work with a guest account, since everything is deleted upon logout.

If you created a "friends" user account with no password and gave them "standard" user access, it might be possible (though it certainly won't be pretty).

First, because Valve apparently has no idea how easy it is to use NSDistributedNotificationCenter to broadcast messages between user accounts, they've set the Steam app up to prohibit multiple instances from running. In other words, for a guest to be able to launch Steam.app in the friends user account, it cannot be running in any other user account. If it is, you'd have to go into that user account first to quit it, then go back to the friends user account. (It honestly takes about 10 lines of code to have Steam broadcast a message to all other user accounts that the Steam that you're launching now is in control, and all other instances could quit themselves, but Valve is fairly challenged with such things).

So, provided it isn't running in another user account, it would work. However, given the ridiculous amount of files and data Steam wants to be able to write to inside its own application bundle (inside the Steam.app bundle), you might be better off creating a separate copy of the application altogether, specifically for that user. Reason being, the Steam application will take on the ownership of whoever first installed it, and when another user tries to use it, they won't have write permissions to the application bundle. You could also try modifying the bundle to give it less restrictive permissions. (This whole thing could be handled by using a simple, privileged helper tool).

So, provided you have a copy of Steam which the friends' user account has write access to, then we move on to the real fun, which is the several GB worth of .gcf files that make up the content of the game. By default, the game files are stored in:

/Users/&lt; username >/Library/Application Support/Steam/SteamApps/

Since one user doesn't have access to another user's files (for obvious reasons), you would need to re-download all of the needed files, or copy them over from the other user account. You could also try re-locating the SteamApps folder to a common location that all users have access to, such as the /Applications/ folder. (I've written an application that helps with creating the symbolic link after the relocation process: http://www.markdouma.com/sourcefinagler/). You'll then run into the same issues with permissions as with the app itself, so you'd need to change them to make sure they're writable to the users in question.

For a guest account, it might work if you had everything in a central location, and then had a global login item or a launchd job in the /Library/LaunchAgents/ folder that would perform a couple of operations in the guest user account upon login. It would need to copy the files inside the /Users/&lt; username >/Library/Application Support/Steam/ that are responsible for saving the Steam user account and password to the guest user's Application Support folder, so that the user would be able to login automatically without having to enter your Steam ID and password each time. It would also need to make sure there was a "SteamApps" symbolic link inside the /Users/&lt; guest >/Library/Application Support/Steam/ to point to the location of the game content files.

In short, what you would like to do, i.e. be able to play Steam games from another user account on the same Mac, is a perfectly reasonable desire. As far as I know, it's something that is already possible in the Windows version of Steam, without having to jump through 100 hoops first. It's also something that's entirely possible for them to have done in the Mac OS X version by using a central data location along with a privileged helper tool (I've been using such an approach in my own application for the last 7 years and it works well). In its current implementation, however, it's not possible to do this in the Mac version without some pretty ugly workarounds.