Title: Using the OpenBSD ports tree with dedicated users
       Author: Solène
       Date: 11 January 2020
       Tags: openbsd
       Description: 
       
       If you want to contribute to OpenBSD ports collection you will want to
       enable
       the`PORTS_PRIVSEP` feature. When this variable is set, ports system
       will use
       dedicated users for tasks.
       
       Source tarballs will be downloaded by the user
       _pfetch and all compilation and packaging
       will be done by the user _pbuild.
       
       Those users are created at system install and pf have a default rule to
       prevent _pbuild user doing network access. This will prevent ports
       from doing network stuff, and this is what you want.
       
       This adds a big security to the porting process and any malicious code
       run by ports being compiled will be harmless.
       
       In order to enable this feature, a few changes must be made.
       
       The file /etc/mk.conf must contains
       
           PORTS_PRIVSEP=yes
           SUDO=doas
       
       Then, /etc/doas.conf must allows your user to become \_pfetch and
       \_pbuild
       
           permit keepenv nopass solene as _pbuild
           permit keepenv nopass solene as _pfetch
           permit keepenv solene as root
       
       If you don't want to use the last line, there is an explanation in the
       bsd.port.mk(5) man page.
       
       Finally, within the ports tree, some permissions must be changed.
       
           # chown -R _pfetch:_pfetch /usr/ports/distfiles
           # chown -R _pbuild:_pbuild /usr/ports/{packages,plist,pobj,bulk}
       
       If directories doesn't exist yet on your system (this is the case on a
       fresh
       ports checkout / untar), you can create them with the commands:
       
           # install -d -o _pfetch -g _pfetch /usr/ports/distfiles
           # install -d -o _pbuild -g _pbuild
       /usr/ports/{packages,plist,pobj,bulk}
       
       Now, when you run a command in the ports tree, privileges should be
       dropped to
       according users.