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-all
mailing list