mirror of
https://github.com/troglobit/finit.git
synced 2026-11-07 16:01:08 +00:00
Dont hard-code nologin file
It's configurable in /etc/login.defs as NOLOGINS_FILE, avoid to hard coding it here, introduce a macro FINIT_NOLOGIN_PATH instead which is configurable from compiler flags, it's not defined, then back to _PATH_NOLOGIN from /usr/include/paths.h. Signed-off-by: Ming Liu <liu.ming50@gmail.com>
This commit is contained in:
1 parent
a7c0b42965
commit
6728b77aca
1 file changed
+9
-4
@@ -23,6 +23,7 @@
|
|||||||
|
|
||||||
#include "config.h" /* Generated by configure script */
|
#include "config.h" /* Generated by configure script */
|
||||||
|
|
||||||
|
#include <paths.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
|
||||||
#include "finit.h"
|
#include "finit.h"
|
||||||
@@ -38,6 +39,10 @@
|
|||||||
|
|
||||||
sm_t sm;
|
sm_t sm;
|
||||||
|
|
||||||
|
#ifndef FINIT_NOLOGIN_PATH
|
||||||
|
#define FINIT_NOLOGIN_PATH _PATH_NOLOGIN /* Stop user logging in. */
|
||||||
|
#endif
|
||||||
|
|
||||||
void sm_init(sm_t *sm)
|
void sm_init(sm_t *sm)
|
||||||
{
|
{
|
||||||
sm->state = SM_BOOTSTRAP_STATE;
|
sm->state = SM_BOOTSTRAP_STATE;
|
||||||
@@ -76,16 +81,16 @@ static char *sm_status(sm_state_t state)
|
|||||||
* Disable login in single user mode and shutdown/reboot
|
* Disable login in single user mode and shutdown/reboot
|
||||||
*
|
*
|
||||||
* Re-enable only when going from these runlevels, this way a user can
|
* Re-enable only when going from these runlevels, this way a user can
|
||||||
* manage /etc/nologin manually within the other runlevels without us
|
* manage FINIT_NOLOGIN_PATH manually within the other runlevels without
|
||||||
* pulling the rug from under their feet.
|
* us pulling the rug from under their feet.
|
||||||
*/
|
*/
|
||||||
static void nologin(void)
|
static void nologin(void)
|
||||||
{
|
{
|
||||||
if (runlevel == 1 || runlevel == 0 || runlevel == 6)
|
if (runlevel == 1 || runlevel == 0 || runlevel == 6)
|
||||||
touch("/etc/nologin");
|
touch(FINIT_NOLOGIN_PATH);
|
||||||
|
|
||||||
if (prevlevel == 1 || prevlevel == 0 || prevlevel == 6)
|
if (prevlevel == 1 || prevlevel == 0 || prevlevel == 6)
|
||||||
erase("/etc/nologin");
|
erase(FINIT_NOLOGIN_PATH);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sm_set_runlevel(sm_t *sm, int newlevel)
|
void sm_set_runlevel(sm_t *sm, int newlevel)
|
||||||
|
|||||||
Reference in new issue
Block a user