diff options
author | Sami Kerola | 2016-05-08 00:44:17 +0200 |
---|---|---|
committer | Sami Kerola | 2016-07-04 00:35:09 +0200 |
commit | 50e417c8ad08e6a5d3c15adc39c16b6085b3cab6 (patch) | |
tree | f2630eeb3b1c64b80faf70fa799a393c23645204 /term-utils | |
parent | write: improve coding style (diff) | |
download | kernel-qcow2-util-linux-50e417c8ad08e6a5d3c15adc39c16b6085b3cab6.tar.gz kernel-qcow2-util-linux-50e417c8ad08e6a5d3c15adc39c16b6085b3cab6.tar.xz kernel-qcow2-util-linux-50e417c8ad08e6a5d3c15adc39c16b6085b3cab6.zip |
write: tell when effective gid and tty path group mismatch
Most commonly this error happens when write(1) executable does not have
correct group ownership and setgid bit. The earlier message was unclear
what exactly was wrong.
$ mesg
is y
$ write testuser
write: you have write permission turned off
Alternatively the 'getegid() == s.st_gid' could be considered unnecessary.
Afterall if to write to destination tty is denied that does not go unnoticed
at thet time when tty is opened.
Reviewed-by: Benno Schulenberg <bensberg@justemail.net>
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
Diffstat (limited to 'term-utils')
-rw-r--r-- | term-utils/write.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/term-utils/write.c b/term-utils/write.c index 8855c1e93..1b476473f 100644 --- a/term-utils/write.c +++ b/term-utils/write.c @@ -113,8 +113,13 @@ static int check_tty(char *tty, int *tty_writeable, time_t *tty_atime, int showe } if (getuid() == 0) /* root can always write */ *tty_writeable = 1; - else - *tty_writeable = (s.st_mode & S_IWGRP) && (getegid() == s.st_gid); + else { + if (getegid() != s.st_gid) { + warnx(_("effective gid does not match group of %s"), path); + return 1; + } + *tty_writeable = s.st_mode & S_IWGRP; + } if (tty_atime) *tty_atime = s.st_atime; return 0; |