//po4a: entry man manual
////
Copyright (c) 1987, 1990, 1993
	The Regents of the University of California.  All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
   notice, this list of conditions and the following disclaimer in the
   documentation and/or other materials provided with the distribution.
3. All advertising materials mentioning features or use of this software
   must display the following acknowledgement:
	This product includes software developed by the University of
	California, Berkeley and its contributors.
4. Neither the name of the University nor the names of its contributors
   may be used to endorse or promote products derived from this software
   without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.

	@(#)mesg.1	8.1 (Berkeley) 6/6/93
////
ifdef::neverdefined[---]

= mesg(1)
:doctype: manpage
:man manual: User Commands
:man source: util-linux {release-version}
:page-layout: base
:command: mesg

== NAME

mesg - display (or do not display) messages from other users

== SYNOPSIS

*mesg* [_option_] [*n*|*y*]

== DESCRIPTION

The *mesg* utility is invoked by a user to control write access others have to the terminal device associated with standard error output. If write access is allowed, then programs such as *talk*(1) and *write*(1) may display messages on the terminal.

Traditionally, write access is allowed by default. However, as users become
more conscious of various security risks, there is a trend to remove write
access by default, at least for the primary login shell.

The initial permissions for the terminal are set by *login*(1) according to TTYPERM
and TTYGROUP from _/etc/login.defs_. The default is mode _0620_ if a tty group is used,
and _0600_ without the group. The default tty group name is "tty".

To ensure that your ttys are set in a portable and independent manner from system
settings, *mesg* should be executed in your login scripts.

*mesg* modifies the write permissions for a group on the current terminal
device. Since version 2.41, *mesg* can no longer be compiled to make the
terminal writable for _others_ and strictly modifies only _group_ permissions.
The usual setup is to use a "tty" group and add relevant users to this group.
Alternatively, a less secure solution is to set utilities like *write*(1) or
*wall*(1) to setgid for the "tty" group.

The *mesg* utility silently exits with error status 2 if not executed on a terminal. In this case executing *mesg* is pointless. The command line option *--verbose* forces *mesg* to print a warning in this situation. This behaviour has been introduced in version 2.33.

== ARGUMENTS

*n*::
Disallow messages.

*y*::
Allow messages to be displayed.

If no arguments are given, *mesg* shows the current message status on standard error output.


== OPTIONS

*-v*, *--verbose*::
Explain what is being done.

include::man-common/help-version.adoc[]

== EXIT STATUS

The *mesg* utility exits with one of the following values:

*0*::
Messages are allowed.
*1*::
Messages are not allowed.
*>1*::
An error has occurred.

== FILES

_/dev/[pt]ty*_, _/dev/pts/[0-9]*_

== HISTORY

*mesg* (I) appears in the UNIX Programmer's Manual.
It used to invert the current state with no argument before Version 7 AT&T UNIX.

== SEE ALSO

*login*(1),
*talk*(1),
*write*(1),
*wall*(1),
*xterm*(1)

include::man-common/bugreports.adoc[]

include::man-common/footer.adoc[]

ifdef::translation[]
include::man-common/translation.adoc[]
endif::[]
