This is a work in progress page for a workable Parental Controls feature as discussed at UDS Lucid: https://blueprints.edge.launchpad.net/ubuntu/+spec/desktop-zeitgeist-parental-control-lucid
There are a lot of projects for stuff like content filtering and limiting web usage and so on, however there isn't one for restricting login time. This is a much simpler problem to solve, and also happens to be the same "parental controls" feature that Windows 7 has.
System->Administration->Parental Controls will pop up a new dialog. This will show the user a list of system users. For administrators, it will tell them that Parental Controls can only be applied to non-admin users. For other users, there will be a dialog for changing what times the user is allowed to log in. If we want to expand parental controls to include web content filtering, it can be made accessible here.
- The dialog should explain what it's for briefly, eg "Parental Controls allow you to limit when users can use the computer."
- For controlled users, a user-space daemon will run that detects when they're about to be kicked off, and will give them notifications (of increasing urgency) at appropriate times.
- A cron job will run hourly to detect if any users need to be controlled. For controlled users still logged in, their screen will be locked. Controlled users should be prohibited from logging in by local TTY (ctrl+alt+F1). Locking the screen allows another user to login at that time, or for the original user to get back to their work after the lockout period.
- Does hibernate work from a locked screen?
- Kees suggested locking them out of local TTY access at all times rather than just during the controlled time. One reason for this is that they probably have no legitimate use logging in that way if they're controlled, the other is that there is no good way to "lock screen" a TTY.
- PAM_TIME will be used to prevent login during the prohibited periods.
- Teach GDM how to understand PAM_TIME-denied logouts. The user should see something along "You are not permitted to login at this time" or, even better, "You are not permitted to login until 10:00"
- Draft the standard for storing all this behavior somewhere
- Design the dialog
- Make the dialog
- Code the dialog (Quickly)