diff options
author | Karel Zak | 2011-10-05 23:07:45 +0200 |
---|---|---|
committer | Karel Zak | 2011-10-26 23:17:17 +0200 |
commit | 45d0a30ea385fc8e32caba256c93d44c3f2b535c (patch) | |
tree | c5d370363d0eb1630991ec948a4db9730035938d /login-utils/login.c | |
parent | login: use TTYPERM from login.defs (diff) | |
download | kernel-qcow2-util-linux-45d0a30ea385fc8e32caba256c93d44c3f2b535c.tar.gz kernel-qcow2-util-linux-45d0a30ea385fc8e32caba256c93d44c3f2b535c.tar.xz kernel-qcow2-util-linux-45d0a30ea385fc8e32caba256c93d44c3f2b535c.zip |
login: use TTYGROUP from login.defs
Note that Suse login(1) does not use any default for TTYGROUP, it
means that TTYGROUP has to be explicitly defined otherwise user\'s
primary group is used.
The util-linux login(1) uses 'tty' group name as a default value.
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'login-utils/login.c')
-rw-r--r-- | login-utils/login.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/login-utils/login.c b/login-utils/login.c index 4ad962ae8..17a313710 100644 --- a/login-utils/login.c +++ b/login-utils/login.c @@ -264,13 +264,20 @@ static void open_tty(const char *tty) static void chown_tty(struct login_context *cxt) { - struct group *gr; + const char *grname; uid_t uid = cxt->pwd->pw_uid; gid_t gid = cxt->pwd->pw_gid; - gr = getgrnam(TTYGRPNAME); - if (gr) - gid = gr->gr_gid; + grname = getlogindefs_str("TTYGROUP", TTYGRPNAME); + if (grname && *grname) { + if (*grname >= 0 && *grname <= 9) /* group by ID */ + gid = getlogindefs_num("TTYGROUP", gid); + else { /* group by name */ + struct group *gr = getgrnam(grname); + if (gr) + gid = gr->gr_gid; + } + } if (fchown(0, uid, gid)) /* tty */ chown_err(cxt->tty_name, uid, gid); |