diff options
author | Rafael G. Martins <rafael@rafaelmartins.eng.br> | 2010-07-15 22:12:46 -0300 |
---|---|---|
committer | Rafael G. Martins <rafael@rafaelmartins.eng.br> | 2010-07-15 22:12:46 -0300 |
commit | ba26789c5bea9659c31ba304c21fc45a50584b5c (patch) | |
tree | 84acc648cc98694a708743929fa7fcf0f288c12b | |
parent | removed a poor debug from the main script (diff) | |
download | g-octave-ba26789c5bea9659c31ba304c21fc45a50584b5c.tar.gz g-octave-ba26789c5bea9659c31ba304c21fc45a50584b5c.tar.bz2 g-octave-ba26789c5bea9659c31ba304c21fc45a50584b5c.zip |
added a security test, to check if the current user belongs to the user
group allowed to build packages of the current package manager.
-rw-r--r-- | g_octave/package_manager.py | 1 | ||||
-rwxr-xr-x | scripts/g-octave | 16 |
2 files changed, 16 insertions, 1 deletions
diff --git a/g_octave/package_manager.py b/g_octave/package_manager.py index c7b600d..60f7472 100644 --- a/g_octave/package_manager.py +++ b/g_octave/package_manager.py @@ -111,6 +111,7 @@ class Portage(Base): class Pkgcore(Base): _client = 'pmerge' + _group = 'portage' post_uninstall = [ 'You may want to remove the dependencies too, using:', diff --git a/scripts/g-octave b/scripts/g-octave index 0eb8033..458d3db 100755 --- a/scripts/g-octave +++ b/scripts/g-octave @@ -36,6 +36,7 @@ except KeyboardInterrupt: sys.exit(1) +import getpass import os import optparse import portage @@ -192,6 +193,19 @@ def main(): out.eerror('Invalid package manager: %s' % conf_prefetch.package_manager) return os.EX_CONFIG + # checking if the current user is allowed to run g-octave + current_user = getpass.getuser() + if current_user not in pkg_manager.allowed_users(): + log.error( + 'The current user (%s) can\'t run the current selected ' + 'package manager (%s)' % (current_user, conf_prefetch.package_manager) + ) + out.eerror( + 'The current user (%s) can\'t run the current selected ' + 'package manager (%s)' % (current_user, conf_prefetch.package_manager) + ) + return os.EX_NOPERM + # checking if our overlay is correctly added to PORTDIR_OVERLAY if not pkg_manager.check_overlay(conf_prefetch.overlay, out): log.error('Overlay not properly configured.') @@ -370,7 +384,7 @@ if __name__ == '__main__': out.eerror('Unknown error - %s' % error) return_code = os.EX_SOFTWARE - if return_code not in [os.EX_OK, os.EX_CONFIG, os.EX_USAGE, os.EX_DATAERR]: + if return_code not in [os.EX_OK, os.EX_CONFIG, os.EX_USAGE, os.EX_DATAERR, os.EX_NOPERM]: out.einfo('If you fell that this is a bug, please report to us.') out.einfo(__issue_tracker) |