su now and then for tasks that require superuser privileges such as for fetching distfiles. You can set a few make(1) variables and divert the ports system to use your own directories for distfiles and for example saved port options. It won't work completely fine because there are some ports that do require root privileges to build.BUILD_AS_NON_ROOT=yes