commit:     1a1a5528ea8d7264df4f7bb2e1b5d3e55501736d
Author:     Nathan Phillip Brink <binki <AT> gentoo <DOT> org>
AuthorDate: Sat Aug 20 21:26:06 2016 +0000
Commit:     Nathan Phillip Brink <binki <AT> gentoo <DOT> org>
CommitDate: Sat Aug 20 21:26:06 2016 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1a1a5528

net-irc/unrealircd: Precreate tune/logfile for bug #560790.

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 | 27 +++++++++++++++++++++++----
 1 file changed, 23 insertions(+), 4 deletions(-)

diff --git a/net-irc/unrealircd/unrealircd-4.0.5.ebuild 
b/net-irc/unrealircd/unrealircd-4.0.5.ebuild
index ef83305..b05a984 100644
--- a/net-irc/unrealircd/unrealircd-4.0.5.ebuild
+++ b/net-irc/unrealircd/unrealircd-4.0.5.ebuild
@@ -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."
 }

Reply via email to