initramfs/debian: use panic() instead of directly calling /bin/sh
Debian has a panic() function which makes it possible to disable shell access in initramfs by setting the panic kernel parameter. Use it. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Kash Pande <kash@tripleback.net> Signed-off-by: Michael Niewöhner <foss@mniewoehner.de> Closes #8448
This commit is contained in:
parent
d6838ae649
commit
46164122c0
|
@ -16,6 +16,20 @@ ZPOOL="@sbindir@/zpool"
|
||||||
ZPOOL_CACHE="@sysconfdir@/zfs/zpool.cache"
|
ZPOOL_CACHE="@sysconfdir@/zfs/zpool.cache"
|
||||||
export ZFS ZPOOL ZPOOL_CACHE
|
export ZFS ZPOOL ZPOOL_CACHE
|
||||||
|
|
||||||
|
|
||||||
|
# Start interactive shell.
|
||||||
|
# Use debian's panic() if defined, because it allows to prevent shell access
|
||||||
|
# by setting panic in cmdline (e.g. panic=0 or panic=15).
|
||||||
|
# See "4.5 Disable root prompt on the initramfs" of Securing Debian Manual:
|
||||||
|
# https://www.debian.org/doc/manuals/securing-debian-howto/ch4.en.html
|
||||||
|
shell() {
|
||||||
|
if type panic > /dev/null 2>&1; then
|
||||||
|
panic $@
|
||||||
|
else
|
||||||
|
/bin/sh
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# This runs any scripts that should run before we start importing
|
# This runs any scripts that should run before we start importing
|
||||||
# pools and mounting any filesystems.
|
# pools and mounting any filesystems.
|
||||||
pre_mountroot()
|
pre_mountroot()
|
||||||
|
@ -256,7 +270,7 @@ import_pool()
|
||||||
echo ""
|
echo ""
|
||||||
echo "Failed to import pool '$pool'."
|
echo "Failed to import pool '$pool'."
|
||||||
echo "Manually import the pool and exit."
|
echo "Manually import the pool and exit."
|
||||||
/bin/sh
|
shell
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -379,7 +393,7 @@ mount_fs()
|
||||||
echo ""
|
echo ""
|
||||||
echo "Failed to mount ${fs} on ${rootmnt}/${mountpoint}."
|
echo "Failed to mount ${fs} on ${rootmnt}/${mountpoint}."
|
||||||
echo "Manually mount the filesystem and exit."
|
echo "Manually mount the filesystem and exit."
|
||||||
/bin/sh
|
shell
|
||||||
else
|
else
|
||||||
[ "$quiet" != "y" ] && zfs_log_end_msg
|
[ "$quiet" != "y" ] && zfs_log_end_msg
|
||||||
fi
|
fi
|
||||||
|
@ -451,7 +465,7 @@ destroy_fs()
|
||||||
echo "Failed to destroy '$fs'. Please make sure that '$fs' is not available."
|
echo "Failed to destroy '$fs'. Please make sure that '$fs' is not available."
|
||||||
echo "Hint: Try: zfs destroy -Rfn $fs"
|
echo "Hint: Try: zfs destroy -Rfn $fs"
|
||||||
echo "If this dryrun looks good, then remove the 'n' from '-Rfn' and try again."
|
echo "If this dryrun looks good, then remove the 'n' from '-Rfn' and try again."
|
||||||
/bin/sh
|
shell
|
||||||
else
|
else
|
||||||
[ "$quiet" != "y" ] && zfs_log_end_msg
|
[ "$quiet" != "y" ] && zfs_log_end_msg
|
||||||
fi
|
fi
|
||||||
|
@ -494,7 +508,7 @@ clone_snap()
|
||||||
echo "Failed to clone snapshot."
|
echo "Failed to clone snapshot."
|
||||||
echo "Make sure that the any problems are corrected and then make sure"
|
echo "Make sure that the any problems are corrected and then make sure"
|
||||||
echo "that the dataset '$destfs' exists and is bootable."
|
echo "that the dataset '$destfs' exists and is bootable."
|
||||||
/bin/sh
|
shell
|
||||||
else
|
else
|
||||||
[ "$quiet" != "y" ] && zfs_log_end_msg
|
[ "$quiet" != "y" ] && zfs_log_end_msg
|
||||||
fi
|
fi
|
||||||
|
@ -523,7 +537,7 @@ rollback_snap()
|
||||||
echo "Error: $ZFS_ERROR"
|
echo "Error: $ZFS_ERROR"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Failed to rollback snapshot."
|
echo "Failed to rollback snapshot."
|
||||||
/bin/sh
|
shell
|
||||||
else
|
else
|
||||||
[ "$quiet" != "y" ] && zfs_log_end_msg
|
[ "$quiet" != "y" ] && zfs_log_end_msg
|
||||||
fi
|
fi
|
||||||
|
@ -684,7 +698,7 @@ mountroot()
|
||||||
echo ""
|
echo ""
|
||||||
echo "Failed to load ZFS modules."
|
echo "Failed to load ZFS modules."
|
||||||
echo "Manually load the modules and exit."
|
echo "Manually load the modules and exit."
|
||||||
/bin/sh
|
shell
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ------------
|
# ------------
|
||||||
|
@ -857,7 +871,7 @@ mountroot()
|
||||||
echo "No pool imported. Manually import the root pool"
|
echo "No pool imported. Manually import the root pool"
|
||||||
echo "at the command prompt and then exit."
|
echo "at the command prompt and then exit."
|
||||||
echo "Hint: Try: zpool import -R ${rootmnt} -N ${ZFS_RPOOL}"
|
echo "Hint: Try: zpool import -R ${rootmnt} -N ${ZFS_RPOOL}"
|
||||||
/bin/sh
|
shell
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# In case the pool was specified as guid, resolve guid to name
|
# In case the pool was specified as guid, resolve guid to name
|
||||||
|
@ -908,7 +922,7 @@ mountroot()
|
||||||
echo ""
|
echo ""
|
||||||
echo "Manually mount the root filesystem on $rootmnt and then exit."
|
echo "Manually mount the root filesystem on $rootmnt and then exit."
|
||||||
echo "Hint: Try: mount -o zfsutil -t zfs ${ZFS_RPOOL-rpool}/ROOT/system $rootmnt"
|
echo "Hint: Try: mount -o zfsutil -t zfs ${ZFS_RPOOL-rpool}/ROOT/system $rootmnt"
|
||||||
/bin/sh
|
shell
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ----------------------------------------------------------------
|
# ----------------------------------------------------------------
|
||||||
|
|
Loading…
Reference in New Issue