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 _______________________________________________ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"