diff --git a/fakeid b/fakeid index cad8a7d..dd4f3ca 100755 --- a/fakeid +++ b/fakeid @@ -1,3 +1,5 @@ #!/bin/bash +USER="$1" +shift LD_PRELOAD=$(dirname "$(readlink -f "$0")")/fakeid.so "$@" diff --git a/fakeid.c b/fakeid.c index 6bbd064..7bd61a0 100644 --- a/fakeid.c +++ b/fakeid.c @@ -1,20 +1,19 @@ #define _GNU_SOURCE +#include #include #include #include #include -char *username = "alice"; - int getlogin_r(char *buf, size_t bufsize) { - strncpy(buf, username, bufsize); + strncpy(buf, getenv("USER"), bufsize); return 0; } struct passwd *getpwuid(uid_t uid) { struct passwd *(*getpwuid)(uid_t) = dlsym(RTLD_NEXT, "getpwuid"); struct passwd *pass = getpwuid(uid); - pass->pw_name = username; + pass->pw_name = getenv("USER"); return pass; }