source code of /small-scripts/setuidwrap

Last modified
Lines 33

Parent directory Download CGIread sitemap Main page

Quick links: (none)

  1. #!/bin/sh
  2. if [ $# -ne 5 ]; then
  3.     echo "Usage: setuidwrap <wrapper> <wrappee> <user> <group> <mode>" \
  4.         > /dev/stderr
  5.     exit 1
  6. fi
  7. wrapper=$1
  8. wrappee=$2
  9. user=$3
  10. group=$4
  11. mode=$5
  12. gcc -o ${wrapper} -x c - << _EOF_
  13. #include <unistd.h>
  14. #include <stdio.h>
  15. int main(int argc, char *argv[])
  16. {
  17.     gid_t gid; uid_t uid;
  18.     gid = getegid();
  19.     uid = geteuid();
  20.     setresuid(uid, uid, uid); setfsuid(uid);
  21.     setresgid(gid, gid, gid); setfsgid(gid);
  22.     /* ¡You shall not pass, u 3117e f001! */
  23.     execv("${wrappee}", argv);
  24. }
  25. _EOF_
  26. sudo chown ${user}:${group} ${wrapper}
  27. sudo chmod ${mode} ${wrapper}