Take the 2-minute tour ×
Ask Different is a question and answer site for power users of Apple hardware and software. It's 100% free, no registration required.

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.

share|improve this question
1  
If your running a cyber cafe or something like that you might wanna check out cafe.steampowered.com –  ing0 Mar 28 '11 at 23:31
add comment

2 Answers

up vote 3 down vote accepted

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/< 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/< 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/< 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.

share|improve this answer
2  
Thank you for your comprehensive answer. –  Thomas L Holaday Mar 28 '11 at 22:46
    
I think that running only a single instance of Steam at once is more of a DRM concern than it is a matter of lazy devs. Once again, stunningly extensive answer! :-) –  Nathan Greenstein Mar 28 '11 at 23:56
    
@Nathan G: In Windows, when you switch from one user to another, Steam does exactly what I described: the first instance of Steam in the original user account quits, and a new instance of Steam starts in the second user account. Hence, no DRM issue. All I meant by my statement was that with about 10 lines of code, you could achieve the same type of behavior in OS X. –  NSGod Mar 29 '11 at 1:12
    
I see, so the Win stuff quits itself. Makes sense. Yeah, it would be great to see them take full advantage of Cocoa.. –  Nathan Greenstein Mar 29 '11 at 1:28
add comment

One of the features of the Guest account, is that all of the data is deleted once the user logs off. Steam stores the games and config information in the User's Application Support directory.

What you could do instead, is create an account, call it whatever you want and don't set a password. Then, login as this account, download Steam, store your password and setup the games for that account.

Please note that there are security considerations involved with making an open login like this. In addition, there are likely concerns with the terms of service for using Steam in such a manner. I shall leave those thought exercises for you, though.

share|improve this answer
    
The delete-all-data when the user logs off is a virtue I wish to preserve for this use case. –  Thomas L Holaday Mar 28 '11 at 18:07
    
@Thomas L Holaday The main issue is that Steam stores the games in that same location, so it will get deleted and then the next time a Guest wants to login, you'd have to re-login with your Steam info for them and then begin the download(s) of the game(s) again. Perhaps the Steam forums have information on how you can move the game location so it's not stored in the user's home directory. –  sorens Mar 28 '11 at 18:56
    
@sorens A symlink works fine to redirect Steam's SteamApps folder elsewhere. Then you just need to arrange to get that symlink created. Perhaps there's some on-login hook that can be configured? –  Kevin Reid Dec 4 '11 at 0:38
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.