Page MenuHomeFreeBSD

D20721.id59972.diff
No OneTemporary

D20721.id59972.diff

Index: head/libexec/rc/rc.d/motd
===================================================================
--- head/libexec/rc/rc.d/motd
+++ head/libexec/rc/rc.d/motd
@@ -4,48 +4,52 @@
#
# PROVIDE: motd
-# REQUIRE: mountcritremote
+# REQUIRE: mountcritremote FILESYSTEMS
# BEFORE: LOGIN
. /etc/rc.subr
name="motd"
-desc="Update /etc/motd"
+desc="Update /var/run/motd"
rcvar="update_motd"
start_cmd="motd_start"
stop_cmd=":"
+COMPAT_MOTD="/etc/motd"
+TARGET="/var/run/motd"
+TEMPLATE="/etc/motd.template"
PERMS="644"
motd_start()
{
- # Update kernel info in /etc/motd
+ # Update kernel info in /var/run/motd
# Must be done *before* interactive logins are possible
# to prevent possible race conditions.
#
check_startmsgs && echo -n 'Updating motd:'
- if [ ! -f /etc/motd ]; then
- install -c -o root -g wheel -m ${PERMS} /dev/null /etc/motd
+ if [ ! -f "${TEMPLATE}" ]; then
+ # Create missing template from existing regular motd file, if
+ # one exists.
+ if [ -f "${COMPAT_MOTD}" ]; then
+ sed '1{/^FreeBSD.*/{d;};};' "${COMPAT_MOTD}" > "${TEMPLATE}"
+ chmod $PERMS "${TEMPLATE}"
+ rm -f "${COMPAT_MOTD}"
+ else
+ # Otherwise, create an empty template file.
+ install -c -o root -g wheel -m ${PERMS} /dev/null "${TEMPLATE}"
+ fi
+ # Provide compatibility symlink:
+ if [ ! -h "${COMPAT_MOTD}" ]; then
+ ln -sF "${TARGET}" "${COMPAT_MOTD}"
+ fi
fi
- if [ ! -w /etc/motd ]; then
- echo ' /etc/motd is not writable, update failed.'
- return
- fi
-
T=`mktemp -t motd`
uname -v | sed -e 's,^\([^#]*\) #\(.* [1-2][0-9][0-9][0-9]\).*/\([^\]*\) $,\1 (\3) #\2,' > ${T}
- awk '{if (NR == 1) {if ($1 == "FreeBSD") {next} else {print "\n"$0}} else {print}}' < /etc/motd >> ${T}
+ cat "${TEMPLATE}" >> ${T}
- if ! cmp -s $T /etc/motd; then
- mv -f $T /etc/.motd.tmp
- fsync /etc/.motd.tmp
- mv -f /etc/.motd.tmp /etc/motd
- chmod ${PERMS} /etc/motd
- fsync /etc
- else
- rm -f $T
- fi
+ install -C -o root -g wheel -m "${PERMS}" "$T" "${TARGET}"
+ rm -f "$T"
check_startmsgs && echo '.'
}
Index: head/release/picobsd/tinyware/login/pathnames.h
===================================================================
--- head/release/picobsd/tinyware/login/pathnames.h
+++ head/release/picobsd/tinyware/login/pathnames.h
@@ -39,7 +39,7 @@
#include <paths.h>
#define _PATH_HUSHLOGIN ".hushlogin"
-#define _PATH_MOTDFILE "/etc/motd"
+#define _PATH_MOTDFILE "/var/run/motd"
#define _PATH_LOGACCESS "/etc/login.access"
#define _PATH_FBTAB "/etc/fbtab"
#define _PATH_LOGINDEVPERM "/etc/logindevperm"
Index: head/share/man/man5/motd.5
===================================================================
--- head/share/man/man5/motd.5
+++ head/share/man/man5/motd.5
@@ -3,7 +3,7 @@
.\" This file is in the public domain.
.\" $FreeBSD$
.\"
-.Dd February 13, 1997
+.Dd July 20, 2019
.Dt MOTD 5
.Os
.Sh NAME
@@ -11,13 +11,16 @@
.Nd file containing message(s) of the day
.Sh DESCRIPTION
The file
-.Pa /etc/motd
+.Pa /var/run/motd
is normally displayed by
.Xr login 1
after a user has logged in but before the shell is run.
It is generally used for important system-wide announcements.
During system startup, a line containing the kernel version string is
-prepended to this file.
+prepended to
+.Pa /etc/motd.template
+and the contents are written to
+.Pa /var/run/motd .
.Pp
Individual users may suppress the display of this file by
creating a file named
@@ -26,11 +29,13 @@
.Xr login.conf 5 .
.Sh FILES
.Bl -tag -width $HOME/.hushlogin -compact
-.It Pa /etc/motd
+.It Pa /etc/motd.template
+The template file that system administrators can edit.
+.It Pa /var/run/motd
The message of the day.
.It Pa $HOME/.hushlogin
Suppresses output of
-.Pa /etc/motd .
+.Pa /var/run/motd .
.El
.Sh EXAMPLES
.Bd -literal
@@ -41,3 +46,9 @@
.Sh SEE ALSO
.Xr login 1 ,
.Xr login.conf 5
+.Sh HISTORY
+Prior to
+.Fx 13.0 ,
+.Nm
+lived in
+.Pa /etc .
Index: head/usr.bin/login/Makefile
===================================================================
--- head/usr.bin/login/Makefile
+++ head/usr.bin/login/Makefile
@@ -3,7 +3,7 @@
.include <src.opts.mk>
-CONFS= fbtab login.conf motd login.access
+CONFS= fbtab login.conf motd.template login.access
PROG= login
SRCS= login.c login_fbtab.c
CFLAGS+=-DLOGALL
Index: head/usr.bin/login/login.1
===================================================================
--- head/usr.bin/login/login.1
+++ head/usr.bin/login/login.1
@@ -28,7 +28,7 @@
.\" @(#)login.1 8.2 (Berkeley) 5/5/94
.\" $FreeBSD$
.\"
-.Dd September 13, 2006
+.Dd July 20, 2019
.Dt LOGIN 1
.Os
.Sh NAME
@@ -131,7 +131,7 @@
changes device protections
.It Pa /etc/login.conf
login class capabilities database
-.It Pa /etc/motd
+.It Pa /var/run/motd
message-of-the-day
.It Pa /var/mail/user
system mailboxes
Index: head/usr.bin/login/login.conf
===================================================================
--- head/usr.bin/login/login.conf
+++ head/usr.bin/login/login.conf
@@ -25,7 +25,7 @@
default:\
:passwd_format=sha512:\
:copyright=/etc/COPYRIGHT:\
- :welcome=/etc/motd:\
+ :welcome=/var/run/motd:\
:setenv=MAIL=/var/mail/$,BLOCKSIZE=K:\
:path=/sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin ~/bin:\
:nologin=/var/run/nologin:\
@@ -120,7 +120,7 @@
##
#standard:\
# :copyright=/etc/COPYRIGHT:\
-# :welcome=/etc/motd:\
+# :welcome=/var/run/motd:\
# :setenv=MAIL=/var/mail/$,BLOCKSIZE=K:\
# :path=~/bin /bin /usr/bin /usr/local/bin:\
# :manpath=/usr/share/man /usr/local/man:\
Index: head/usr.bin/login/motd
===================================================================
--- head/usr.bin/login/motd
+++ head/usr.bin/login/motd
@@ -1,21 +0,0 @@
-FreeBSD ?.?.? (UNKNOWN)
-
-Welcome to FreeBSD!
-
-Release Notes, Errata: https://www.FreeBSD.org/releases/
-Security Advisories: https://www.FreeBSD.org/security/
-FreeBSD Handbook: https://www.FreeBSD.org/handbook/
-FreeBSD FAQ: https://www.FreeBSD.org/faq/
-Questions List: https://lists.FreeBSD.org/mailman/listinfo/freebsd-questions/
-FreeBSD Forums: https://forums.FreeBSD.org/
-
-Documents installed with the system are in the /usr/local/share/doc/freebsd/
-directory, or can be installed later with: pkg install en-freebsd-doc
-For other languages, replace "en" with a language code like de or fr.
-
-Show the version of FreeBSD installed: freebsd-version ; uname -a
-Please include that output and any error messages when posting questions.
-Introduction to manual pages: man man
-FreeBSD directory layout: man hier
-
-Edit /etc/motd to change this login announcement.
Index: head/usr.bin/login/motd.template
===================================================================
--- head/usr.bin/login/motd.template
+++ head/usr.bin/login/motd.template
@@ -0,0 +1,20 @@
+
+Welcome to FreeBSD!
+
+Release Notes, Errata: https://www.FreeBSD.org/releases/
+Security Advisories: https://www.FreeBSD.org/security/
+FreeBSD Handbook: https://www.FreeBSD.org/handbook/
+FreeBSD FAQ: https://www.FreeBSD.org/faq/
+Questions List: https://lists.FreeBSD.org/mailman/listinfo/freebsd-questions/
+FreeBSD Forums: https://forums.FreeBSD.org/
+
+Documents installed with the system are in the /usr/local/share/doc/freebsd/
+directory, or can be installed later with: pkg install en-freebsd-doc
+For other languages, replace "en" with a language code like de or fr.
+
+Show the version of FreeBSD installed: freebsd-version ; uname -a
+Please include that output and any error messages when posting questions.
+Introduction to manual pages: man man
+FreeBSD directory layout: man hier
+
+Edit /etc/motd.template to change this login announcement.
Index: head/usr.bin/login/pathnames.h
===================================================================
--- head/usr.bin/login/pathnames.h
+++ head/usr.bin/login/pathnames.h
@@ -35,6 +35,6 @@
#include <paths.h>
#define _PATH_HUSHLOGIN ".hushlogin"
-#define _PATH_MOTDFILE "/etc/motd"
+#define _PATH_MOTDFILE "/var/run/motd"
#define _PATH_FBTAB "/etc/fbtab"
#define _PATH_LOGINDEVPERM "/etc/logindevperm"

File Metadata

Mime Type
text/plain
Expires
Wed, Nov 19, 1:15 AM (5 h, 19 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
25573926
Default Alt Text
D20721.id59972.diff (7 KB)

Event Timeline