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>
}
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;