svn commit: r350184 - in head: libexec/rc/rc.d release/picobsd/tinyware/login share/man/man5 usr.bin/login

Ian Lepore ian at freebsd.org
Sun Jul 21 16:59:01 UTC 2019


On Sat, 2019-07-20 at 20:56 +0000, Conrad Meyer wrote:
> 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	(r350
> 183)
> +++ head/share/man/man5/motd.5	Sat Jul 20 20:56:31 2019	(r350
> 184)
> @@ -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	(r350
> 183)
> +++ head/usr.bin/login/Makefile	Sat Jul 20 20:56:31 2019	(r350
> 184)
> @@ -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	(r350
> 183)
> +++ head/usr.bin/login/login.1	Sat Jul 20 20:56:31 2019	(r350
> 184)
> @@ -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	(r350
> 183)
> +++ head/usr.bin/login/login.conf	Sat Jul 20 20:56:31 2019	(r350
> 184)
> @@ -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	(r350
> 184)
> @@ -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	(r350
> 183)
> +++ head/usr.bin/login/pathnames.h	Sat Jul 20 20:56:31 2019	(r350
> 184)
> @@ -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"
> 

This change doesn't appear to provide any mechanism for maintaining
historic behavior of having an immutable /etc/motd file that gets
presented to the user.  If you set motd_enable=false there will be
nothing in /var/run/motd so nothing will be presented to the user at
login.  Otherwise you end up with the user seeing a modified copy of
the motd file.

We have products that are mandated by the customer (and I believe by
law in some cases) to provide specific exact text at login, and now I
think there is no straighforward way to achieve that.

-- Ian



More information about the svn-src-head mailing list