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. Signed-off-by: Sami Kerola <kerolasa@xxxxxx> --- term-utils/write.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/term-utils/write.c b/term-utils/write.c index e3e749e..58d3839 100644 --- a/term-utils/write.c +++ b/term-utils/write.c @@ -113,8 +113,13 @@ static int check_tty(char *tty, int *mesg_allowed, time_t *tty_atime, int shower } if (getuid() == 0) /* root can always write */ *mesg_allowed = 1; - else - *mesg_allowed = (s.st_mode & S_IWGRP) && (getegid() == s.st_gid); + else { + if (getegid() != s.st_gid) { + warnx(_("effective gid and %s group does not match"), path); + return 1; + } + *mesg_allowed = s.st_mode & S_IWGRP; + } if (tty_atime) *tty_atime = s.st_atime; return 0; -- 2.8.2 -- To unsubscribe from this list: send the line "unsubscribe util-linux" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html