NetBSD/etc/rc.d/perusertmp

51 lines
1.0 KiB
Bash
Executable File

#!/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"