Pass any username by env variable

main
Clément FRÉVILLE 2 years ago
parent 48c1ebb8de
commit b92134ed11

@ -1,3 +1,5 @@
#!/bin/bash
USER="$1"
shift
LD_PRELOAD=$(dirname "$(readlink -f "$0")")/fakeid.so "$@"

@ -1,20 +1,19 @@
#define _GNU_SOURCE
#include <stdlib.h>
#include <dlfcn.h>
#include <string.h>
#include <sys/types.h>
#include <pwd.h>
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;
}

Loading…
Cancel
Save