aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2016-02-24 18:03:38 +0000
committerRob Austein <sra@hactrn.net>2016-02-24 18:03:38 +0000
commitb6407bd46afefb0dcde4b9de42e22377375f1355 (patch)
treea1661f9449d9389b3548d0b315876d3a013d5002
parent2ed40817177c93aa84e9f130b2c8c37519adcf73 (diff)
Rewrite rpkic wrapper to avoid running sudo unnecessarily.
svn path=/branches/tk705/; revision=6281
-rwxr-xr-xca/rpkic28
1 files 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))