This file is indexed.

/etc/network/if-up.d/mountnfs is in initscripts 2.88dsf-59.

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

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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
#! /bin/sh
# Description:       Now that TCP/IP is configured, mount the NFS file
#                    systems in /etc/fstab if needed. If possible,
#                    start the portmapper before mounting (this is needed for
#                    Linux 2.1.x and up).
#
#                    Also mounts SMB filesystems now, so the name of
#                    this script is getting increasingly inaccurate.

# Skip the mountnfs hook when being triggered by the networking SysV init
# script and instead use the systemd built-in mechanisms to mount remote
# file systems.
# This avoids a deadlock caused by the rpcbind SysV init script depending
# on $network and the $network LSB facility being provided by the networking
# SysV init script.
if [ -d /run/systemd/system ]; then
	systemctl list-jobs | grep -q network.target && exit 0
fi

PATH=/sbin:/bin
. /lib/init/vars.sh

. /lib/lsb/init-functions
. /lib/init/mount-functions.sh

set_env() {
	# Read through fstab line by line. If it is NFS, set the flag
	# for mounting NFS file systems. If any NFS partition is found
	# and it not mounted with the nolock option, we start the
	# portmapper.
	#
	# If any sec={krb5,krb5i,krb5p} option is given, or any of the
	# file systems are nfs4, we'll need to start rpc.gssd and/or
	# rpc.idmapd too; we'll leave that to nfs-common.

	start_nfs=no
	NETFS=""
	NETDEV=""
	for file in "$(eval ls $(fstab_files))"; do
		if [ -f "$file" ]; then
			while read DEV MTPT FSTYPE OPTS REST; do
				case "$DEV" in
				  ""|\#*)
					continue
					;;
				esac
				case "$OPTS" in
				  noauto|*,noauto|noauto,*|*,noauto,*)
					continue
					;;
				  _netdev|*,_netdev|_netdev,*|*,_netdev,*)
					NETDEV=yes
					;;
				esac
				case "$FSTYPE" in
				  nfs)
					# NFS filsystems normally
					# require statd and
					# portmap. However, if nolock
					# is set, portmap and statd
					# are not required for this
					# file system.
					case "$OPTS" in
					  nolock|*,nolock|nolock,*|*,nolock,*)
						# no action
						;;
					  *)
						start_nfs=yes
						;;
					esac

					# However, Kerberos requires
					# gssd, so start nfs-common
					# anyway.
					case "$OPTS" in
					  sec=krb5|*,sec=krb5|sec=krb5,*|*,sec=krb5,*|sec=krb5i|*,sec=krb5i|sec=krb5i,*|*,sec=krb5i,*|sec=krb5p|*,sec=krb5p|sec=krb5p,*|*,sec=krb5p,*)
						start_nfs=yes
						;;
						esac
					;;
				  nfs4)
					# NFSv4 requires idmapd, so
					# start nfs-common no matter
					# what the options are.
					start_nfs=yes
					;;
				  smbfs|cifs|coda|ncp|ncpfs|ocfs2|gfs|ceph)
					;;
				  *)
					FSTYPE=
					;;
				esac
				if [ "$FSTYPE" ]; then
					case "$NETFS" in
					  $FSTYPE|*,$FSTYPE|$FSTYPE,*|*,$FSTYPE,*)
						;;
					  *)
						NETFS="$NETFS${NETFS:+,}$FSTYPE"
						;;
					esac
				fi
			done < "$file"
		fi
	done
}

do_start() {
	#
	# Initialize nfs-common (which starts rpc.statd, rpc.gssd
	# and/or rpc.idmapd, and loads the right kernel modules if
	# applicable) if we use Kerberos and/or NFSv4 mounts.
	#
	if [ "$start_nfs" = yes ] && [ -x /etc/init.d/nfs-common ]
	then
		[ -x /etc/init.d/portmap ] && /etc/init.d/portmap start
		[ -x /etc/init.d/rpcbind ] && /etc/init.d/rpcbind start
		/etc/init.d/nfs-common start
	fi

	pre_mountall
	if [ "$NETFS" ]
	then
		mount -a -t$NETFS
	fi
	if [ "$NETDEV" ]; then
		mount -a -O _netdev
	fi
	post_mountall
}

exit_unless_last_interface() {
    ifaces="$(ifquery --list)"
    for i in $ifaces ; do
	if [ "$i" = "lo" ]; then
	    continue
	fi
	if ! ifquery --state $i >/dev/null ; then
	    msg="if-up.d/mountnfs[$IFACE]: waiting for interface $i before doing NFS mounts"
	    log_warning_msg "$msg"
	    exit 0
	fi
    done
}

# Using 'no !=' instead of 'yes =' to make sure async nfs mounting is
# the default even without a value in /etc/default/rcS
set_env
# Exit imediately and do not claim to wait for the last interface if
# no network file systems are listed in /etc/fstab.
if [ "$start_nfs" = "no" ] && [ ! "$NETFS" ] && [ ! "$NETDEV" ]; then
  exit 0
fi

if [ no != "$ASYNCMOUNTNFS" ]; then
    # Not for loopback!
    [ "$IFACE" != "lo" ] || exit 0

    [ "$ADDRFAM" = "inet" ] || [ "$ADDRFAM" = "inet6" ] || exit 0

    # Lock around this otherwise insanity may occur
    mkdir /var/run/network          2>/dev/null || true

    # Wait until all auto interfaces are up before attemting to mount
    # network file systems.
    exit_unless_last_interface

    if mkdir /var/run/network/mountnfs 2>/dev/null ; then
	:
    else
	msg="if-up.d/mountnfs[$IFACE]: lock /var/run/network/mountnfs exist, not mounting"
	log_failure_msg "$msg"
	# Log if /usr/ is mounted
	[ -x /usr/bin/logger ] && /usr/bin/logger -t "if-up.d/mountnfs[$IFACE]" "$msg"
	exit 0
    fi

    on_exit() {
        # Clean up lock when script exits, even if it is interrupted
	rmdir /var/run/network/mountnfs 2>/dev/null || exit 0
    }
    trap on_exit EXIT # Enable emergency handler
    do_start
elif [ yes = "$FROMINITD" ] ; then
    do_start
fi