From b6407bd46afefb0dcde4b9de42e22377375f1355 Mon Sep 17 00:00:00 2001 From: Rob Austein Date: Wed, 24 Feb 2016 18:03:38 +0000 Subject: Rewrite rpkic wrapper to avoid running sudo unnecessarily. svn path=/branches/tk705/; revision=6281 --- ca/rpkic | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/ca/rpkic b/ca/rpkic index 5858014c..9be2e761 100755 --- a/ca/rpkic +++ b/ca/rpkic @@ -10,16 +10,26 @@ if __name__ == "__main__": + import os + import pwd + import sys + import rpki.autoconf + try: - import os - import sys - import rpki.autoconf + uid = pwd.getpwnam(rpki.autoconf.RPKI_USER).pw_uid + except: + uid = None - argv = [rpki.autoconf.SUDO, "-u", rpki.autoconf.RPKI_USER, - sys.executable, "-c", "import rpki.rpkic; rpki.rpkic.main()"] + if uid is None or uid == os.geteuid(): + import rpki.rpkic + rpki.rpkic.main() - os.execv(rpki.autoconf.SUDO, argv + sys.argv[1:]) - sys.exit("rpkic startup failure, no exception so don't know why, sorry") + else: + try: + argv = [rpki.autoconf.SUDO, "-u", rpki.autoconf.RPKI_USER, + os.path.abspath(sys.argv[0])] + sys.argv[1:] + os.execv(argv[0], argv) + sys.exit("rpkic startup failure, no exception so don't know why, sorry") - except Exception as e: - sys.exit("Couldn't exec sudo python rpkic: {!s}".format(e)) + except Exception as e: + sys.exit("Couldn't exec sudo python rpkic: {!s}".format(e)) -- cgit v1.2.3