Add session(5).
This commit is contained in:
parent
050ba71ca0
commit
875030f3f3
|
@ -26,6 +26,15 @@ exists.
|
||||||
The process remains running in the background and takes over again when the user
|
The process remains running in the background and takes over again when the user
|
||||||
session exits.
|
session exits.
|
||||||
.Pp
|
.Pp
|
||||||
|
The user's
|
||||||
|
.Xr session 5
|
||||||
|
is created upon login by running the user's
|
||||||
|
.Pa ~/.session
|
||||||
|
script if it exists and is executable, otherwise attempting
|
||||||
|
.Pa /etc/session ,
|
||||||
|
and ultimately falling back on the user's shell from
|
||||||
|
.Xr passwd 5 .
|
||||||
|
.Pp
|
||||||
Type a special username to perform special options:
|
Type a special username to perform special options:
|
||||||
.Pp
|
.Pp
|
||||||
.Bl -tag -width "poweroff" -compact -offset indent
|
.Bl -tag -width "poweroff" -compact -offset indent
|
||||||
|
@ -57,12 +66,18 @@ shell
|
||||||
username
|
username
|
||||||
.El
|
.El
|
||||||
.Sh FILES
|
.Sh FILES
|
||||||
.Bl -tag -width "/etc/passwd" -compact
|
.Bl -tag -width "/etc/login.conf.textual" -compact
|
||||||
|
.It Pa ~/.session
|
||||||
|
user session script run upon login (see
|
||||||
|
.Xr session 5 )
|
||||||
|
.It Pa /etc/login.conf.textual
|
||||||
|
textual interface is forced if this file exists
|
||||||
.It Pa /etc/passwd
|
.It Pa /etc/passwd
|
||||||
user database (see
|
user database (see
|
||||||
.Xr passwd 5 )
|
.Xr passwd 5 )
|
||||||
.It Pa /etc/login.conf.textual
|
.It Pa /etc/session
|
||||||
textual interface is forced if this file exists
|
fallback session script run upon login (see
|
||||||
|
.Xr session 5 )
|
||||||
.El
|
.El
|
||||||
.Sh EXIT STATUS
|
.Sh EXIT STATUS
|
||||||
.Nm login
|
.Nm login
|
||||||
|
@ -72,6 +87,7 @@ reboot, or exits 2 on fatal failure and the boot should halt.
|
||||||
.Xr passwd 1 ,
|
.Xr passwd 1 ,
|
||||||
.Xr crypt_checkpass 3 ,
|
.Xr crypt_checkpass 3 ,
|
||||||
.Xr passwd 5 ,
|
.Xr passwd 5 ,
|
||||||
|
.Xr session 5 ,
|
||||||
.Xr init 8 ,
|
.Xr init 8 ,
|
||||||
.Xr login 8
|
.Xr login 8
|
||||||
.Sh BUGS
|
.Sh BUGS
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2014, 2015, 2018 Jonas 'Sortie' Termansen.
|
* Copyright (c) 2014, 2015, 2018, 2022 Jonas 'Sortie' Termansen.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and distribute this software for any
|
* Permission to use, copy, modify, and distribute this software for any
|
||||||
* purpose with or without fee is hereby granted, provided that the above
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
|
@ -249,6 +249,10 @@ bool login(const char* username)
|
||||||
tcsetpgrp(0, getpgid(0)) ||
|
tcsetpgrp(0, getpgid(0)) ||
|
||||||
sigprocmask(SIG_SETMASK, &oldset, NULL) < 0 ||
|
sigprocmask(SIG_SETMASK, &oldset, NULL) < 0 ||
|
||||||
settermmode(0, TERMMODE_NORMAL) < 0 ||
|
settermmode(0, TERMMODE_NORMAL) < 0 ||
|
||||||
|
(execlp("./.session", "./.session", (const char*) NULL) < 0 &&
|
||||||
|
errno != ENOENT && errno != EACCES) ||
|
||||||
|
(execlp("/etc/session", "/etc/session", (const char*) NULL) < 0 &&
|
||||||
|
errno != ENOENT && errno != EACCES) ||
|
||||||
execlp(pwd->pw_shell, pwd->pw_shell, (const char*) NULL));
|
execlp(pwd->pw_shell, pwd->pw_shell, (const char*) NULL));
|
||||||
write(pipe_fds[1], &errno, sizeof(errno));
|
write(pipe_fds[1], &errno, sizeof(errno));
|
||||||
_exit(127);
|
_exit(127);
|
||||||
|
|
|
@ -0,0 +1,51 @@
|
||||||
|
.Dd September 18, 2022
|
||||||
|
.Dt SESSION 5
|
||||||
|
.Os
|
||||||
|
.Sh NAME
|
||||||
|
.Nm session
|
||||||
|
.Nd user login ession
|
||||||
|
.Sh SYNOPSIS
|
||||||
|
.Nm ~/.session
|
||||||
|
.Nm /etc/session
|
||||||
|
.Sh DESCRIPTION
|
||||||
|
.Xr login 8
|
||||||
|
creates the user's session by running the user's
|
||||||
|
.Nm
|
||||||
|
script, which normally
|
||||||
|
executes a command line or graphical user environment.
|
||||||
|
The session concludes once the session script exits and
|
||||||
|
.Xr login 8
|
||||||
|
reclaims control.
|
||||||
|
.Pp
|
||||||
|
The session script is found by searching for an executable script in the
|
||||||
|
following paths:
|
||||||
|
.Bl -bullet -compact
|
||||||
|
.It
|
||||||
|
.Pa ~/.session
|
||||||
|
.It
|
||||||
|
.Pa /etc/session
|
||||||
|
.El
|
||||||
|
.Pp
|
||||||
|
The user's shell from
|
||||||
|
.Xr passwd 5
|
||||||
|
is used as a fallback session.
|
||||||
|
.Sh EXAMPLES
|
||||||
|
The user's
|
||||||
|
.Pa ~/.session
|
||||||
|
file can be created in any text editor and then made executable:
|
||||||
|
.Bd -literal -offset indent
|
||||||
|
editor ~/.session
|
||||||
|
chmod +x ~/.session
|
||||||
|
.Ed
|
||||||
|
.Ss Trianglix
|
||||||
|
.Xr trianglix 1
|
||||||
|
can be selected as the user's triangle environment with this executable
|
||||||
|
.Pa ~/.session
|
||||||
|
script:
|
||||||
|
.Bd -literal -offset indent
|
||||||
|
#!/bin/sh
|
||||||
|
exec trianglix
|
||||||
|
.Ed
|
||||||
|
.Sh SEE ALSO
|
||||||
|
.Xr passwd 5 ,
|
||||||
|
.Xr login 8
|
Loading…
Reference in New Issue