commit 86ab2b59e05a3f9c234d5564c9e41f2d46d5953d
parent c13c797ba4f26cdbff560020a815fea564d8c60b
Author: Christoph Lohmann <20h@r-36.net>
Date: Sun, 10 Apr 2011 16:53:38 +0200
Adding SUDO_ASKPASS support to thinglaunch.
Diffstat:
3 files changed, 32 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile
@@ -29,10 +29,12 @@ ${NAME}: ${OBJ}
@echo CC -o $@
@${CC} -o $@ ${OBJ} ${LDFLAGS}
@ln -s ${NAME} thingaskpass 2>/dev/null; true
+ @ln -s ${NAME} thingsudoaskpass 2>/dev/null; true
clean:
@echo cleaning
- @rm -f ${NAME} *.o thingaskpass ${OBJ} ${NAME}-${VERSION}.tar.gz
+ @rm -f ${NAME} *.o thingaskpass thingsudoaskpass ${OBJ} \
+ ${NAME}-${VERSION}.tar.gz
dist: clean
@echo creating dist tarball
@@ -51,12 +53,13 @@ etc:
install: all
@echo installing executable file to ${DESTDIR}${PREFIX}/bin
@mkdir -p ${DESTDIR}${PREFIX}/bin
- @cp -f ${NAME} thingaskpass ${DESTDIR}${PREFIX}/bin
+ @cp -f ${NAME} thingaskpass thingsudoaskpass ${DESTDIR}${PREFIX}/bin
@chmod 755 ${DESTDIR}${PREFIX}/bin/${NAME}
uninstall:
@echo removing executable file from ${DESTDIR}${PREFIX}/bin
@rm -f ${DESTDIR}${PREFIX}/bin/${NAME}
@rm -f ${DESTDIR}${PREFIX}/bin/thingaskpass
+ @rm -f ${DESTDIR}${PREFIX}/bin/thingsudoaskpass
.PHONY: all options clean dist install uninstall
diff --git a/README.md b/README.md
@@ -32,5 +32,22 @@ be used by ssh-agent to gather the password for private keys.
% ln -s thinglaunch thingaskpass
% ./thingaskpass
+ # This symlink predefined -s, -o and takes the prompt as first
+ # argument.
+ % ln -s thinglaunch thingsudoaskpass
+ % ./thingsudoaskpass
+
+## SSH_ASKPASS
+
+If you set SSH_ASKPASS to the PATH to thingaskpass (usually /usr/bin/
+thingaskpass), then ssh-agent will use this command for asking for pass-
+words.
+
+## SUDO_ASKPASS
+
+This is the same as SSH_ASKPASS, but here you need to set SUDO_ASKPASS
+to the PATH to thingsudoaskpass (usually /usr/bin/thingsudoaskpass).
+
+
Have fun!
diff --git a/thinglaunch.c b/thinglaunch.c
@@ -72,6 +72,16 @@ main(int argc, char *argv[])
tostdout = 1;
prompt = "secret> ";
}
+ if (strstr(argv[0], "thingsudoaskpass")) {
+ issecret = 1;
+ tostdout = 1;
+ if (argc > 1)
+ prompt = argv[1];
+ else
+ prompt = "secret sudo> ";
+ argc = 0;
+ }
+
if (argc > 1) {
for (i = 1; argv[i]; i++) {
if (argv[i][0] == '-') {