Skip to main content

Wrapper to use keyctl command in Python

Project description

Travis PyPI Package version PyPI Python version License


Basic management of keys in the Linux kernel keyring in Python. Also comes with a small gui.


This is a small library to make use of some functions of the kernel keyring in Python. You can read, add and delete keys.

It simply uses the keyctl command (invoking it via subprocess), so this util must be installed.

Available functions:

  • list (list all keys in keyring)
  • describe (retrieve key name/description)
  • read/pipe/print (retrieve key content)
  • update (modify key content)
  • add (add key)
  • revoke/unlink (delete key)
  • search/request (search for a key by name)
  • clear (remove all keys from keyring)

There are many more functions with keys in the kernel keyring (e.g. permissions) that is needed for proper keymanagement. But for my usecase I just needed the given simple functionality.


Python 2.7

$ sudo apt-get install python2.7
$ python --version
Python 2.7.3


$ sudo apt-get install python-pip
$ pip --version
pip 9.0.1 from .... (python 2.7)

The ‘keyctl’ command

$ sudo apt-get install keyutils
$ dpkg -s keyutils | grep Version
Version: 1.5.2-2

For the GUI you also need:


$ sudo apt-get install qt4-qmake libqt4-core libqt4-dev
$ qmake-qt4 --version
QMake version 2.01a
Using Qt version 4.8.1 in /usr/lib/x86_64-linux-gnu


$ sudo apt-get install python-qt4 python-pyside
$ python -c "import PySide; print PySide.__version__"
Version: 1.1.0
If you want to use this module in a virtualenv you either have to (venv)$ pip install pyside (which takes up to 40min to compile) or you can link your pyside distro package into your virtualenv like this:
$ cd myprojectfolder
$ ln -s /usr/lib/python2.7/dist-packages/PySide/ venv/lib/python2.7/site-packages/

try it:

$ cd myprojectfolder
$ source venv/bin/activate
(venv)$ python -c "import PySide; import os; print PySide.__version__, os.path.realpath(PySide.__path__[0])"
1.1.0 /usr/lib/python2.7/dist-packages/PySide


$ pip install keyctl

Ready to use.



Get all keys:

from keyctl import Key
keylist = Key.list()
for mykey in keylist:

Read existing key:

from keyctl import Key
mykey = Key(123)
print mykey.data_hex

Find key by name:

from keyctl import Key
mykey ='test key')

Add key:

from keyctl import Key
mykey = Key.add('test key', 'test content')

Delete key:

from keyctl import Key
mykey = Key(123)

Update key:

from keyctl import Key
mykey = Key(123)
mykey.update('new content')


To open the GUI, run the installed command.

$ keyctlgui



If you run the integrated tests, your user keyring will be cleared. Don’t do this when you have active keys e.g. for encryption.

Similar projects

Similar projects you might want to checkout:


see LICENSE file

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for keyctl, version 0.4
Filename, size File type Python version Upload date Hashes
Filename, size keyctl-0.4-py2-none-any.whl (11.6 kB) File type Wheel Python version py2 Upload date Hashes View
Filename, size keyctl-0.4.tar.gz (7.1 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page