perusertmp revision 1.1
1#!/bin/sh
2#
3# $NetBSD: perusertmp,v 1.1 2007/02/04 08:19:26 elad 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 [ X"${mount_point}" = X"/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 ${per_user_tmp_dir}
38	fi
39	/usr/sbin/chown root:wheel ${per_user_tmp_dir}
40	/bin/chmod 0111 ${per_user_tmp_dir}
41
42	# Create magic link for /tmp.
43	/bin/rm -rf /tmp
44	/bin/ln -s ${per_user_tmp_dir}/@uid /tmp
45}
46
47load_rc_config $name
48run_rc_command "$1"
49