#!/bin/sh # # $NetBSD: perusertmp,v 1.8 2015/07/03 18:36:54 dholland Exp $ # # PROVIDE: perusertmp # REQUIRE: mountall # BEFORE: cleartmp $_rc_subr_loaded . /etc/rc.subr name="perusertmp" rcvar="per_user_tmp" start_cmd="perusertmp_start" stop_cmd=":" perusertmp_start() { echo "Preparing per-user /tmp." # If /tmp is a mount point, we can't do anything. if [ -d "/tmp" ]; then local mount_point mount_point=$(cd /tmp && /bin/df . | /usr/bin/tail -1 | /usr/bin/awk '{print $6}') if [ "${mount_point}" = "/tmp" ]; then echo "WARNING: /tmp is mounted." exit 1 fi fi # Enable magic symlinks. /sbin/sysctl -qw vfs.generic.magiclinks=1 # Fixup real temporary directory. if [ ! -d ${per_user_tmp_dir} ]; then /bin/mkdir -p ${per_user_tmp_dir} fi /sbin/chown root:wheel ${per_user_tmp_dir} /bin/chmod 0555 ${per_user_tmp_dir} # Create magic link for /tmp. if [ "$(/usr/bin/readlink /tmp)" != ${per_user_tmp_dir}/@ruid ]; then /bin/rm -rf /tmp /bin/ln -s ${per_user_tmp_dir}/@ruid /tmp fi } load_rc_config $name run_rc_command "$1"