Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 20 Jul 2019 20:56:32 +0000 (UTC)
From:      Conrad Meyer <cem@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r350184 - in head: libexec/rc/rc.d release/picobsd/tinyware/login share/man/man5 usr.bin/login
Message-ID:  <201907202056.x6KKuWsF011171@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: cem
Date: Sat Jul 20 20:56:31 2019
New Revision: 350184
URL: https://svnweb.freebsd.org/changeset/base/350184

Log:
  motd: Generate from template to /var/run
  
  Update login(1), its manual pages, similar utilities, and motd.5 to refer to
  the new location.
  
  Suggested by:	delphij@ (re: r349256)
  Reviewed by:	bcr (manpages), delphij
  Differential Revision:	https://reviews.freebsd.org/D20721

Added:
  head/usr.bin/login/motd.template
     - copied, changed from r350183, head/usr.bin/login/motd
Deleted:
  head/usr.bin/login/motd
Modified:
  head/libexec/rc/rc.d/motd
  head/release/picobsd/tinyware/login/pathnames.h
  head/share/man/man5/motd.5
  head/usr.bin/login/Makefile
  head/usr.bin/login/login.1
  head/usr.bin/login/login.conf
  head/usr.bin/login/pathnames.h

Modified: head/libexec/rc/rc.d/motd
==============================================================================
--- head/libexec/rc/rc.d/motd	Sat Jul 20 20:47:07 2019	(r350183)
+++ head/libexec/rc/rc.d/motd	Sat Jul 20 20:56:31 2019	(r350184)
@@ -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 '.'
 }

Modified: head/release/picobsd/tinyware/login/pathnames.h
==============================================================================
--- head/release/picobsd/tinyware/login/pathnames.h	Sat Jul 20 20:47:07 2019	(r350183)
+++ head/release/picobsd/tinyware/login/pathnames.h	Sat Jul 20 20:56:31 2019	(r350184)
@@ -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"

Modified: head/share/man/man5/motd.5
==============================================================================
--- head/share/man/man5/motd.5	Sat Jul 20 20:47:07 2019	(r350183)
+++ head/share/man/man5/motd.5	Sat Jul 20 20:56:31 2019	(r350184)
@@ -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 @@ in their home directories or through
 .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 @@ FreeBSD 2.1.6.1-RELEASE (GENERIC) #0: Sun Dec 29 03:08
 .Sh SEE ALSO
 .Xr login 1 ,
 .Xr login.conf 5
+.Sh HISTORY
+Prior to
+.Fx 13.0 ,
+.Nm
+lived in
+.Pa /etc .

Modified: head/usr.bin/login/Makefile
==============================================================================
--- head/usr.bin/login/Makefile	Sat Jul 20 20:47:07 2019	(r350183)
+++ head/usr.bin/login/Makefile	Sat Jul 20 20:56:31 2019	(r350184)
@@ -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

Modified: head/usr.bin/login/login.1
==============================================================================
--- head/usr.bin/login/login.1	Sat Jul 20 20:47:07 2019	(r350183)
+++ head/usr.bin/login/login.1	Sat Jul 20 20:56:31 2019	(r350184)
@@ -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 @@ result in an error exit from
 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

Modified: head/usr.bin/login/login.conf
==============================================================================
--- head/usr.bin/login/login.conf	Sat Jul 20 20:47:07 2019	(r350183)
+++ head/usr.bin/login/login.conf	Sat Jul 20 20:56:31 2019	(r350184)
@@ -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 @@ russian|Russian Users Accounts:\
 ##
 #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:\

Copied and modified: head/usr.bin/login/motd.template (from r350183, head/usr.bin/login/motd)
==============================================================================
--- head/usr.bin/login/motd	Sat Jul 20 20:47:07 2019	(r350183, copy source)
+++ head/usr.bin/login/motd.template	Sat Jul 20 20:56:31 2019	(r350184)
@@ -1,4 +1,3 @@
-FreeBSD ?.?.?  (UNKNOWN)
 
 Welcome to FreeBSD!
 
@@ -18,4 +17,4 @@ Please include that output and any error messages when
 Introduction to manual pages:  man man
 FreeBSD directory layout:      man hier
 
-Edit /etc/motd to change this login announcement.
+Edit /etc/motd.template to change this login announcement.

Modified: head/usr.bin/login/pathnames.h
==============================================================================
--- head/usr.bin/login/pathnames.h	Sat Jul 20 20:47:07 2019	(r350183)
+++ head/usr.bin/login/pathnames.h	Sat Jul 20 20:56:31 2019	(r350184)
@@ -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"



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201907202056.x6KKuWsF011171>