git://git.onelab.eu
/
util-vserver-pl.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
62ddada
)
This patch puts users in their home directories when they log into a slice.
author
Sapan Bhatia
<sapanb@cs.princeton.edu>
Mon, 10 May 2010 20:23:45 +0000
(20:23 +0000)
committer
Sapan Bhatia
<sapanb@cs.princeton.edu>
Mon, 10 May 2010 20:23:45 +0000
(20:23 +0000)
src/vsh.c
patch
|
blob
|
history
diff --git
a/src/vsh.c
b/src/vsh.c
index
0bbdadf
..
a16d217
100644
(file)
--- a/
src/vsh.c
+++ b/
src/vsh.c
@@
-45,17
+45,15
@@
char **extend_argv(int argc, char **argv, int num_extra_args) {
return argv2;
}
return argv2;
}
-#define NUM_VSERVER_
SU
EXEC_ARGS 5
+#define NUM_VSERVER_EXEC_ARGS 5
-int main(int argc, char **argv)
+int main(int argc, char **argv
, char **envp
)
{
char *slice_name;
char **argv2;
int argc2;
char slice_id_str[256];
unsigned int slice_xid;
{
char *slice_name;
char **argv2;
int argc2;
char slice_id_str[256];
unsigned int slice_xid;
- char *envp[] = { NULL, NULL };
- char home_env_str[256];
slice_xid = getuid();
slice_name = get_current_username(slice_xid);
slice_xid = getuid();
slice_name = get_current_username(slice_xid);
@@
-64,7
+62,7
@@
int main(int argc, char **argv)
goto out_exception;
}
goto out_exception;
}
- argv2 = extend_argv(argc, argv, NUM_VSERVER_
SU
EXEC_ARGS);
+ argv2 = extend_argv(argc, argv, NUM_VSERVER_EXEC_ARGS);
if (!argv2) goto out_exception;
if (!argv2) goto out_exception;
@@
-72,16
+70,23
@@
int main(int argc, char **argv)
snprintf(slice_id_str, 255, "%u", slice_xid);
argv2[0] = strdup(VSERVER_PATH);
argv2[1] = strdup(slice_name);
snprintf(slice_id_str, 255, "%u", slice_xid);
argv2[0] = strdup(VSERVER_PATH);
argv2[1] = strdup(slice_name);
- argv2[2] = strdup("suexec");
- argv2[3] = strdup(slice_id_str);
- argv2[4] = strdup("/bin/bash");
- argv2[5] = strdup("-login");
-
- snprintf(home_env_str, 255, "HOME=/home/%s", slice_name);
- envp[0] = home_env_str;
+ argv2[2] = strdup("exec");
+ argv2[3] = strdup("/bin/su");
+ argv2[4] = strdup("-");
+ argv2[5] = strdup(slice_name);
if (setuid(geteuid())) goto out_exception;
if (setuid(geteuid())) goto out_exception;
+ /*
+ char **env_n;
+ FILE *log_file;
+ log_file = fopen("/tmp/arglogs","w");
+ for (env_n = envp;*env_n;env_n++) {
+ fprintf(log_file,"Env: %s\n",*env_n);
+ }
+ fclose(log_file);
+ */
+
execve(VSERVER_PATH, argv2, envp);
out_exception:
execve(VSERVER_PATH, argv2, envp);
out_exception: