libmalcontent implements parental controls support which can be used by applications to filter or limit the access of child accounts to inappropriate content.
Go to file
Philip Withnall 6df7596b23 Merge branch 'top-level-header' into 'master'
libmalcontent: Add a top-level header file

See merge request pwithnall/malcontent!11
2019-04-25 15:58:26 +00:00
accounts-service accounts-service: Add polkit .rules file to stop prompting admins 2019-01-07 15:33:18 +00:00
libmalcontent libmalcontent: Add a top-level header file 2019-04-25 16:56:02 +01:00
malcontent-client malcontent-client: Add a ‘monitor’ mode to monitor app filter changes 2019-04-24 13:45:59 +01:00
po Rename project from eos-parental-controls to malcontent 2019-02-26 17:45:14 +00:00
subprojects build: Force libglib-testing to link statically 2018-12-20 17:44:45 +00:00
tools accounts-service: Add accounts service vendor extension for app filter 2018-09-28 10:12:53 +02:00
.gitlab-ci.yml ci: Add CI configuration 2019-02-27 10:14:52 +00:00
.gitmodules tests: Add comprehensive tests for libeos-parental-controls 2018-12-20 13:01:01 +00:00
COPYING Initial commit of README and COPYING 2018-09-24 15:35:58 +01:00
NEWS docs: Fix NEWS entry 2019-03-14 15:19:53 +00:00
README.md docs: Expand README to be more informative 2019-04-02 17:49:00 +01:00
malcontent.doap docs: Port README to Markdown and update a few references 2019-02-26 17:48:03 +00:00
meson.build build: Post-release version bump 2019-03-19 18:11:29 +00:00
meson_options.txt libeos-parental-controls: Add placeholder unit tests 2018-10-06 00:48:36 +01:00
template.test.in libeos-parental-controls: Add placeholder unit tests 2018-10-06 00:48:36 +01:00

README.md

malcontent

malcontent implements support for restricting the abilities of non-administrator accounts on a Linux system. Typically, when this is used, a non-administrator account will be for a child using the system; and the administrator accounts will be for the parents.

It provides an accounts-service vendor extension for storing an app filter to restrict the childs access to certain applications; and a simple library for accessing and applying the app filter. This results in the policy being stored in /var/lib/AccountsService/users/${user}, which is a key file readable and writable only by the accounts-service daemon. Access to the data is mediated through accounts-services D-Bus interface, which libmalcontent is a client library for

All the library APIs are currently unstable and are likely to change wildly.

Two kinds of policy are currently supported:

  • A filter specifying whether installed applications are allowed to be run; this is typically set up to restrict access to a limited set of already-installed applications — but it can be set up to only allow access to a fixed list of applications and deny access to all others. Applications which are not currently installed are not subject to this filter.
  • A set of mappings from OARS categories to the maximum ratings for those categories which are permissible for a user to install apps with. For example, a mapping of violence-realistic=mild would prevent any applications containing more than mild violence from being installed. Applications which are already installed are not subject to this filter.

Additional policies may be added in future.

Example usage

malcontent ships a malcontent-client application which can be used to get and set parental controls policies for users.

$ # This sets the parental controls policy for user philip to allow no \\
    installation of apps with anything more than none for realistic violence, \\
    and to blacklist running the org.freedesktop.Bustle flatpak:
$ malcontent-client set philip \\
    violence-realistic=none \\
    app/org.freedesktop.Bustle/x86_64/stable
App filter for user 1000 set

With that policy in place, other applications which are aware of malcontent will apply the policy:

$ flatpak run org.freedesktop.Bustle
error: Running app/org.freedesktop.Bustle/x86_64/stable is not allowed by the policy set by your administrator

Dependencies

  • accounts-service
  • dbus-daemon
  • gio-2.0 ≥ 2.54
  • glib-2.0 ≥ 2.54
  • gobject-2.0 ≥ 2.54

Licensing

All code in this project is licensed under LGPL-2.1+. See COPYING for more details.

Bugs

Bug reports and patches should be filed in GitLab.