summaryrefslogtreecommitdiffstats
path: root/login-utils/login.c
diff options
context:
space:
mode:
authorKarel Zak2011-10-05 23:07:45 +0200
committerKarel Zak2011-10-26 23:17:17 +0200
commit45d0a30ea385fc8e32caba256c93d44c3f2b535c (patch)
treec5d370363d0eb1630991ec948a4db9730035938d /login-utils/login.c
parentlogin: use TTYPERM from login.defs (diff)
downloadkernel-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.c15
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);