This file is indexed.

/lib/init/tmpfs.sh is in initscripts 2.88dsf-41+deb7u1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#
# Set tmpfs vars
#


# Get size of physical RAM in kiB
ram_size ()
{
    [ -r /proc/meminfo ] && \
	grep MemTotal /proc/meminfo | \
	sed -e 's;.*[[:space:]]\([0-9][0-9]*\)[[:space:]]kB.*;\1;' || :
}

# Get size of swap space in kiB
swap_size ()
{
    [ -r /proc/meminfo ] && \
	grep SwapTotal /proc/meminfo | \
	sed -e 's;.*[[:space:]]\([0-9][0-9]*\)[[:space:]]kB.*;\1;' || :
}

#
# Get total VM size in kiB.  Prints nothing if no RAM and/or swap was
# detectable.
#
vm_size ()
{
    RAM=$(ram_size)
    SWAP=$(swap_size)

    RAM="${RAM:=0}"
    SWAP="${SWAP:=0}"

    echo $((RAM + SWAP))
    return 0;
}

#
# Get size of tmpfs.  If the size is absolute or a percentage, return
# that unchanged.  If suffixed with "%VM", return the absolute size as
# a percentage of RAM and swap combined.  If no swap was available,
# return as a percentage (tmpfs will use a percentage of RAM only).
#
tmpfs_size_vm ()
{
# Handle the no-swap case here, i.e. core memory only.  Also handle no
# memory either (no proc) by just returning the original value.
    RET="$1"
    VMTOTAL="$(vm_size)"
    VMPCT="${RET%\%VM}"
    if [ "$VMPCT" != "$RET" ]; then
	if [ -n "$VMTOTAL" ]; then
	    RET=$(((VMTOTAL / 100) * VMPCT))
	    RET="${RET}k"
	else
	    RET="${VMPCT}%"
	fi
    fi
    echo "$RET"
}

# Free space on /tmp in kiB.
tmp_free_space ()
{
    LC_ALL=C df -kP /tmp | grep -v Filesystem | sed -e 's;^[^[:space:]][^[:space:]]*[[:space:]][[:space:]]*[0-9][0-9]*[[:space:]][[:space:]]*[0-9][0-9]*[[:space:]][[:space:]]*\([0-9][0-9]*\)[[:space:]][[:space:]]*.*$;\1;'
}

# Check if an emergency tmpfs is needed
need_overflow_tmp ()
{
    [ "$VERBOSE" != no ] && log_action_begin_msg "Checking minimum space in /tmp"

    ROOT_FREE_SPACE=$(tmp_free_space)
    [ "$VERBOSE" != no ] && log_action_end_msg 0
    if [ -n "$ROOT_FREE_SPACE" ] && [ -n "$TMP_OVERFLOW_LIMIT" ] \
	&& [ $((ROOT_FREE_SPACE < TMP_OVERFLOW_LIMIT)) = "1" ]; then
	return 0
    fi
    return 1
}

# Set defaults for /etc/default/tmpfs, in case any options are
# commented out which are needed for booting.  So that an empty or
# outdated file missing newer options works correctly, set the default
# values here.

RAMLOCK=yes
# These might be overridden by /etc/default/rcS
if [ -z "$RAMSHM" ]; then RAMSHM=yes; fi
if [ -z "$RAMTMP" ]; then RAMTMP=no; fi

TMPFS_SIZE=20%VM
TMPFS_MODE=755

RUN_SIZE=10%
RUN_MODE=755

LOCK_SIZE=5242880 # 5MiB
LOCK_MODE=1777

SHM_SIZE=
SHM_MODE=1777

TMP_SIZE=
TMP_MODE=1777
TMP_OVERFLOW_LIMIT=1024

# Source conffile
if [ -f /etc/default/tmpfs ]; then
    . /etc/default/tmpfs
fi

TMPFS_SIZE="$(tmpfs_size_vm "$TMPFS_SIZE")"
RUN_SIZE="$(tmpfs_size_vm "$RUN_SIZE")"
LOCK_SIZE="$(tmpfs_size_vm "$LOCK_SIZE")"
SHM_SIZE="$(tmpfs_size_vm "$SHM_SIZE")"
TMP_SIZE="$(tmpfs_size_vm "$TMP_SIZE")"

RUN_OPT=
[ "${RUN_SIZE:=$TMPFS_SIZE}" ] && RUN_OPT=",size=$RUN_SIZE"
[ "${RUN_MODE:=$TMPFS_MODE}" ] && RUN_OPT="$RUN_OPT,mode=$RUN_MODE"

LOCK_OPT=
[ "${LOCK_SIZE:=$TMPFS_SIZE}" ] && LOCK_OPT=",size=$LOCK_SIZE"
[ "${LOCK_MODE:=$TMPFS_MODE}" ] && LOCK_OPT="$LOCK_OPT,mode=$LOCK_MODE"

SHM_OPT=
[ "${SHM_SIZE:=$TMPFS_SIZE}" ] && SHM_OPT=",size=$SHM_SIZE"
[ "${SHM_MODE:=$TMPFS_MODE}" ] && SHM_OPT="$SHM_OPT,mode=$SHM_MODE"

TMP_OPT=
[ "${TMP_SIZE:=$TMPFS_SIZE}" ] && TMP_OPT=",size=$TMP_SIZE"
[ "${TMP_MODE:=$TMPFS_MODE}" ] && TMP_OPT="$TMP_OPT,mode=$TMP_MODE"