1#!/bin/sh 2# 3# $NetBSD: perusertmp,v 1.7 2007/12/04 22:09:01 mjf Exp $ 4# 5 6# PROVIDE: perusertmp 7# REQUIRE: mountall 8# BEFORE: cleartmp 9 10$_rc_subr_loaded . /etc/rc.subr 11 12name="perusertmp" 13rcvar="per_user_tmp" 14start_cmd="perusertmp_start" 15stop_cmd=":" 16 17perusertmp_start() 18{ 19 echo "Preparing per-user /tmp." 20 21 # If /tmp is a mount point, we can't do anything. 22 if [ -d "/tmp" ]; then 23 local mount_point 24 25 mount_point=$(cd /tmp && /bin/df . | /usr/bin/tail -1 | /usr/bin/awk '{print $6}') 26 if [ "${mount_point}" = "/tmp" ]; then 27 echo "WARNING: /tmp is mounted." 28 exit 1 29 fi 30 fi 31 32 # Enable magic symlinks. 33 /sbin/sysctl -qw vfs.generic.magiclinks=1 34 35 # Fixup real temporary directory. 36 if [ ! -d ${per_user_tmp_dir} ]; then 37 /bin/mkdir -p ${per_user_tmp_dir} 38 fi 39 /usr/sbin/chown root:wheel ${per_user_tmp_dir} 40 /bin/chmod 0555 ${per_user_tmp_dir} 41 42 # Create magic link for /tmp. 43 if [ "$(/usr/bin/readlink /tmp)" != ${per_user_tmp_dir}/@ruid ]; then 44 /bin/rm -rf /tmp 45 /bin/ln -s ${per_user_tmp_dir}/@ruid /tmp 46 fi 47} 48 49load_rc_config $name 50run_rc_command "$1" 51