net-irc/unrealircd: Precreate tune/logfile for bug #560790.
authorNathan Phillip Brink <binki@gentoo.org>
Sat, 20 Aug 2016 21:26:06 +0000 (21:26 +0000)
committerNathan Phillip Brink <binki@gentoo.org>
Sat, 20 Aug 2016 21:26:06 +0000 (21:26 +0000)
If you run a program as root and it creates files those will be
owned by root instead of the intended user. Since unrealircd was
not intended to be run directly as root but it is easy to do so
by accident, this change precreates some files so that it is easier
to switch back to running unrealircd as an unprivileged user.

Package-Manager: portage-2.2.28

net-irc/unrealircd/unrealircd-4.0.5.ebuild

index ef8330531ec3f81e552c103196417f8c4e03ce66..b05a9840475b1ebd12111daad3793054c2fc9a78 100644 (file)
@@ -63,7 +63,7 @@ src_configure() {
                --with-tmpdir="${EPREFIX}"/var/lib/${PN}/tmp \
                --with-nick-history=2000 \
                --with-sendq=3000000 \
-               --with-permissions=0600 \
+               --with-permissions=0640 \
                --with-fd-setsize=1024 \
                --with-system-cares \
                --with-system-pcre2 \
@@ -213,10 +213,29 @@ s/"and another one";/"'"${keys[2]}"'";/
                eend $?
        fi
 
+       # Precreate ircd.tune and ircd.log with the correct ownership to
+       # protect people from themselves when they run unrealircd as root
+       # before trying the initscripts. #560790
+       local f
+       for f in "${EROOT}"var/{lib/${PN}/ircd.tune,log/${PN}/ircd.log}; do
+               [[ -e ${f} ]] && continue
+               ebegin "Precreating ${f} to set ownership"
+               (
+                       umask 0037
+                       # ircd.tune must be seeded with content instead of being empty.
+                       if [[ ${f} == *ircd.tune ]]; then
+                               echo 0 > "${f}"
+                               echo 0 >> "${f}"
+                       fi
+                       touch "${f}"
+               )
+               chown unrealircd "${f}"
+               eend $?
+       done
+
        elog "UnrealIRCd will not run until you've set up /etc/unrealircd/unrealircd.conf"
        elog
        elog "You can also configure ${PN} start at boot with rc-update(1)."
-       elog "Note that it is recommended to run unrealircd as an"
-       elog "unprivileged user (the provided init.d script does this"
-       elog "for you). Running as root will break file permissions."
+       elog "It is recommended to run unrealircd as an unprivileged user."
+       elog "The provided init.d script does this for you."
 }