diff options
author | Rob Austein <sra@hactrn.net> | 2016-02-24 18:03:38 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2016-02-24 18:03:38 +0000 |
commit | b6407bd46afefb0dcde4b9de42e22377375f1355 (patch) | |
tree | a1661f9449d9389b3548d0b315876d3a013d5002 | |
parent | 2ed40817177c93aa84e9f130b2c8c37519adcf73 (diff) |
Rewrite rpkic wrapper to avoid running sudo unnecessarily.
svn path=/branches/tk705/; revision=6281
-rwxr-xr-x | ca/rpkic | 28 |
1 files changed, 19 insertions, 9 deletions
@@ -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)) |