From Sam Rushing's Medusa, via SF patch #100858: add & document
os.seteuid(), os.setegid(), os.setreuid(), os.setregid().
This commit is contained in:
parent
4d5d5bf5ae
commit
8d2f2b2db2
|
@ -181,6 +181,16 @@ calls to \function{putenv()} don't update \code{os.environ}, so it is
|
||||||
actually preferable to assign to items of \code{os.environ}.
|
actually preferable to assign to items of \code{os.environ}.
|
||||||
\end{funcdesc}
|
\end{funcdesc}
|
||||||
|
|
||||||
|
\begin{funcdesc}{setegid}{egid}
|
||||||
|
Set the current process's effective group id.
|
||||||
|
Availability: \UNIX{}.
|
||||||
|
\end{funcdesc}
|
||||||
|
|
||||||
|
\begin{funcdesc}{seteuid}{euid}
|
||||||
|
Set the current process's effective user id.
|
||||||
|
Availability: \UNIX{}.
|
||||||
|
\end{funcdesc}
|
||||||
|
|
||||||
\begin{funcdesc}{setgid}{gid}
|
\begin{funcdesc}{setgid}{gid}
|
||||||
Set the current process' group id.
|
Set the current process' group id.
|
||||||
Availability: \UNIX{}.
|
Availability: \UNIX{}.
|
||||||
|
@ -199,6 +209,16 @@ for the semantics.
|
||||||
Availability: \UNIX{}.
|
Availability: \UNIX{}.
|
||||||
\end{funcdesc}
|
\end{funcdesc}
|
||||||
|
|
||||||
|
\begin{funcdesc}{setreuid}{ruid, euid}
|
||||||
|
Set the current process's real and effective user ids.
|
||||||
|
Availability: \UNIX{}.
|
||||||
|
\end{funcdesc}
|
||||||
|
|
||||||
|
\begin{funcdesc}{setregid}{rgid, egid}
|
||||||
|
Set the current process's real and effective group ids.
|
||||||
|
Availability: \UNIX{}.
|
||||||
|
\end{funcdesc}
|
||||||
|
|
||||||
\begin{funcdesc}{setsid}{}
|
\begin{funcdesc}{setsid}{}
|
||||||
Calls the system call \cfunction{setsid()}. See the \UNIX{} manual
|
Calls the system call \cfunction{setsid()}. See the \UNIX{} manual
|
||||||
for the semantics.
|
for the semantics.
|
||||||
|
|
|
@ -2618,6 +2618,82 @@ posix_setuid(PyObject *self, PyObject *args)
|
||||||
#endif /* HAVE_SETUID */
|
#endif /* HAVE_SETUID */
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef HAVE_SETEUID
|
||||||
|
static char posix_seteuid__doc__[] =
|
||||||
|
"seteuid(uid) -> None\n\
|
||||||
|
Set the current process's effective user id.";
|
||||||
|
static PyObject *
|
||||||
|
posix_seteuid (PyObject *self, PyObject *args)
|
||||||
|
{
|
||||||
|
int euid;
|
||||||
|
if (!PyArg_ParseTuple(args, "i", &euid)) {
|
||||||
|
return NULL;
|
||||||
|
} else if (seteuid(euid) < 0) {
|
||||||
|
return posix_error();
|
||||||
|
} else {
|
||||||
|
Py_INCREF(Py_None);
|
||||||
|
return Py_None;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* HAVE_SETEUID */
|
||||||
|
|
||||||
|
#ifdef HAVE_SETEGID
|
||||||
|
static char posix_setegid__doc__[] =
|
||||||
|
"setegid(gid) -> None\n\
|
||||||
|
Set the current process's effective group id.";
|
||||||
|
static PyObject *
|
||||||
|
posix_setegid (PyObject *self, PyObject *args)
|
||||||
|
{
|
||||||
|
int egid;
|
||||||
|
if (!PyArg_ParseTuple(args, "i", &egid)) {
|
||||||
|
return NULL;
|
||||||
|
} else if (setegid(egid) < 0) {
|
||||||
|
return posix_error();
|
||||||
|
} else {
|
||||||
|
Py_INCREF(Py_None);
|
||||||
|
return Py_None;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* HAVE_SETEGID */
|
||||||
|
|
||||||
|
#ifdef HAVE_SETREUID
|
||||||
|
static char posix_setreuid__doc__[] =
|
||||||
|
"seteuid(ruid, euid) -> None\n\
|
||||||
|
Set the current process's real and effective user ids.";
|
||||||
|
static PyObject *
|
||||||
|
posix_setreuid (PyObject *self, PyObject *args)
|
||||||
|
{
|
||||||
|
int ruid, euid;
|
||||||
|
if (!PyArg_ParseTuple(args, "ii", &ruid, &euid)) {
|
||||||
|
return NULL;
|
||||||
|
} else if (setreuid(ruid, euid) < 0) {
|
||||||
|
return posix_error();
|
||||||
|
} else {
|
||||||
|
Py_INCREF(Py_None);
|
||||||
|
return Py_None;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* HAVE_SETREUID */
|
||||||
|
|
||||||
|
#ifdef HAVE_SETREGID
|
||||||
|
static char posix_setregid__doc__[] =
|
||||||
|
"setegid(rgid, egid) -> None\n\
|
||||||
|
Set the current process's real and effective group ids.";
|
||||||
|
static PyObject *
|
||||||
|
posix_setregid (PyObject *self, PyObject *args)
|
||||||
|
{
|
||||||
|
int rgid, egid;
|
||||||
|
if (!PyArg_ParseTuple(args, "ii", &rgid, &egid)) {
|
||||||
|
return NULL;
|
||||||
|
} else if (setregid(rgid, egid) < 0) {
|
||||||
|
return posix_error();
|
||||||
|
} else {
|
||||||
|
Py_INCREF(Py_None);
|
||||||
|
return Py_None;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif /* HAVE_SETREGID */
|
||||||
|
|
||||||
#ifdef HAVE_SETGID
|
#ifdef HAVE_SETGID
|
||||||
static char posix_setgid__doc__[] =
|
static char posix_setgid__doc__[] =
|
||||||
"setgid(gid) -> None\n\
|
"setgid(gid) -> None\n\
|
||||||
|
@ -4898,6 +4974,18 @@ static PyMethodDef posix_methods[] = {
|
||||||
#ifdef HAVE_SETUID
|
#ifdef HAVE_SETUID
|
||||||
{"setuid", posix_setuid, METH_VARARGS, posix_setuid__doc__},
|
{"setuid", posix_setuid, METH_VARARGS, posix_setuid__doc__},
|
||||||
#endif /* HAVE_SETUID */
|
#endif /* HAVE_SETUID */
|
||||||
|
#ifdef HAVE_SETEUID
|
||||||
|
{"seteuid", posix_seteuid, METH_VARARGS, posix_seteuid__doc__},
|
||||||
|
#endif /* HAVE_SETEUID */
|
||||||
|
#ifdef HAVE_SETEGID
|
||||||
|
{"setegid", posix_setegid, METH_VARARGS, posix_setegid__doc__},
|
||||||
|
#endif /* HAVE_SETEGID */
|
||||||
|
#ifdef HAVE_SETREUID
|
||||||
|
{"setreuid", posix_setreuid, METH_VARARGS, posix_setreuid__doc__},
|
||||||
|
#endif /* HAVE_SETREUID */
|
||||||
|
#ifdef HAVE_SETREGID
|
||||||
|
{"setregid", posix_setregid, METH_VARARGS, posix_setregid__doc__},
|
||||||
|
#endif /* HAVE_SETREGID */
|
||||||
#ifdef HAVE_SETGID
|
#ifdef HAVE_SETGID
|
||||||
{"setgid", posix_setgid, METH_VARARGS, posix_setgid__doc__},
|
{"setgid", posix_setgid, METH_VARARGS, posix_setgid__doc__},
|
||||||
#endif /* HAVE_SETGID */
|
#endif /* HAVE_SETGID */
|
||||||
|
|
12
config.h.in
12
config.h.in
|
@ -407,6 +407,12 @@
|
||||||
/* Define if you have the select function. */
|
/* Define if you have the select function. */
|
||||||
#undef HAVE_SELECT
|
#undef HAVE_SELECT
|
||||||
|
|
||||||
|
/* Define if you have the setegid function. */
|
||||||
|
#undef HAVE_SETEGID
|
||||||
|
|
||||||
|
/* Define if you have the seteuid function. */
|
||||||
|
#undef HAVE_SETEUID
|
||||||
|
|
||||||
/* Define if you have the setgid function. */
|
/* Define if you have the setgid function. */
|
||||||
#undef HAVE_SETGID
|
#undef HAVE_SETGID
|
||||||
|
|
||||||
|
@ -419,6 +425,12 @@
|
||||||
/* Define if you have the setpgrp function. */
|
/* Define if you have the setpgrp function. */
|
||||||
#undef HAVE_SETPGRP
|
#undef HAVE_SETPGRP
|
||||||
|
|
||||||
|
/* Define if you have the setregid function. */
|
||||||
|
#undef HAVE_SETREGID
|
||||||
|
|
||||||
|
/* Define if you have the setreuid function. */
|
||||||
|
#undef HAVE_SETREUID
|
||||||
|
|
||||||
/* Define if you have the setsid function. */
|
/* Define if you have the setsid function. */
|
||||||
#undef HAVE_SETSID
|
#undef HAVE_SETSID
|
||||||
|
|
||||||
|
|
|
@ -822,7 +822,8 @@ AC_CHECK_FUNCS(alarm chown clock confstr ctermid ctermid_r dlopen execv \
|
||||||
kill link lstat mkfifo mktime mremap \
|
kill link lstat mkfifo mktime mremap \
|
||||||
nice pathconf pause plock pthread_init \
|
nice pathconf pause plock pthread_init \
|
||||||
putenv readlink \
|
putenv readlink \
|
||||||
select setgid setlocale setuid setsid setpgid setpgrp setvbuf \
|
select setegid seteuid setgid \
|
||||||
|
setlocale setregid setreuid setsid setpgid setpgrp setuid setvbuf \
|
||||||
sigaction siginterrupt sigrelse strftime strptime symlink sysconf \
|
sigaction siginterrupt sigrelse strftime strptime symlink sysconf \
|
||||||
tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
|
tcgetpgrp tcsetpgrp tempnam timegm times tmpfile tmpnam tmpnam_r \
|
||||||
truncate uname waitpid)
|
truncate uname waitpid)
|
||||||
|
|
Loading…
Reference in New Issue