If started as init, login and sulogin need to start a new session.
This commit is contained in:
parent
f5461ff01e
commit
b44a6c316d
@ -1,3 +1,8 @@
|
|||||||
|
2007-12-26 Nicolas François <nicolas.francois@centraliens.net>
|
||||||
|
|
||||||
|
Merge Debian's patch 496_login_init_session
|
||||||
|
* src/login.c, src/sulogin.c: If started as init, start a new session.
|
||||||
|
|
||||||
2007-12-26 Nicolas François <nicolas.francois@centraliens.net>
|
2007-12-26 Nicolas François <nicolas.francois@centraliens.net>
|
||||||
|
|
||||||
Merge Debian's patch 408_passwd_check_arguments
|
Merge Debian's patch 408_passwd_check_arguments
|
||||||
|
4
NEWS
4
NEWS
@ -18,6 +18,10 @@ shadow-4.1.0 -> shadow-4.1.1 UNRELEASED
|
|||||||
user-, user1-user2).
|
user-, user1-user2).
|
||||||
- passwd
|
- passwd
|
||||||
* Make sure that no more than one username argument was provided.
|
* Make sure that no more than one username argument was provided.
|
||||||
|
- su
|
||||||
|
* If started as init, start a new session.
|
||||||
|
- sulogin
|
||||||
|
* If started as init, start a new session.
|
||||||
|
|
||||||
shadow-4.0.18.2 -> shadow-4.1.0 09-12-2008
|
shadow-4.0.18.2 -> shadow-4.1.0 09-12-2008
|
||||||
|
|
||||||
|
@ -41,6 +41,7 @@
|
|||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
#include <sys/ioctl.h>
|
||||||
#include "defines.h"
|
#include "defines.h"
|
||||||
#include "faillog.h"
|
#include "faillog.h"
|
||||||
#include "failure.h"
|
#include "failure.h"
|
||||||
@ -1039,6 +1040,12 @@ int main (int argc, char **argv)
|
|||||||
}
|
}
|
||||||
/* child */
|
/* child */
|
||||||
#endif
|
#endif
|
||||||
|
/* If we were init, we need to start a new session */
|
||||||
|
if (getppid() == 1) {
|
||||||
|
setsid();
|
||||||
|
if (ioctl(0, TIOCSCTTY, 1))
|
||||||
|
fprintf(stderr,_("TIOCSCTTY failed on %s"),tty);
|
||||||
|
}
|
||||||
|
|
||||||
/* We call set_groups() above because this clobbers pam_groups.so */
|
/* We call set_groups() above because this clobbers pam_groups.so */
|
||||||
#ifndef USE_PAM
|
#ifndef USE_PAM
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
#include <pwd.h>
|
#include <pwd.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <sys/ioctl.h>
|
||||||
#include "defines.h"
|
#include "defines.h"
|
||||||
#include "getdef.h"
|
#include "getdef.h"
|
||||||
#include "prototypes.h"
|
#include "prototypes.h"
|
||||||
@ -142,6 +143,12 @@ static RETSIGTYPE catch_signals (int sig)
|
|||||||
#endif
|
#endif
|
||||||
exit (1); /* must be a terminal */
|
exit (1); /* must be a terminal */
|
||||||
}
|
}
|
||||||
|
/* If we were init, we need to start a new session */
|
||||||
|
if (getppid() == 1) {
|
||||||
|
setsid();
|
||||||
|
if (ioctl(0, TIOCSCTTY, 1))
|
||||||
|
fprintf(stderr,_("TIOCSCTTY failed"));
|
||||||
|
}
|
||||||
while (*envp) /* add inherited environment, */
|
while (*envp) /* add inherited environment, */
|
||||||
addenv (*envp++, NULL); /* some variables change later */
|
addenv (*envp++, NULL); /* some variables change later */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user