mirror of
https://git.hardenedbsd.org/hardenedbsd/HardenedBSD.git
synced 2024-11-23 02:32:16 +01:00
adduser: create dataset only if home is directly within dataset
Currently, if the prefix of the new home directory is a subdirectory of a ZFS dataset, adduser will create a new dataset up one or more levels from the intended destination. "pw useradd" will then create a normal directory in the desired location, leaving an unused dataset. Check for this situation when determining whether to create a dataset, and let pw create the directory. Reviewed by: des Differential Revision: https://reviews.freebsd.org/D45229 MFC after: 3 days
This commit is contained in:
parent
b780b6508b
commit
0b39b2e2dd
@ -474,7 +474,7 @@ get_homeperm() {
|
||||
# so, enable ZFS home dataset creation.
|
||||
#
|
||||
get_zfs_home() {
|
||||
local _prefix=
|
||||
local _prefix= _tmp=
|
||||
|
||||
# check if zfs kernel module is loaded before attempting to run zfs to
|
||||
# prevent loading the kernel module on systems that don't use ZFS
|
||||
@ -487,6 +487,13 @@ get_zfs_home() {
|
||||
Zcreate="no"
|
||||
return
|
||||
fi
|
||||
# Make sure that _prefix is not a subdirectory within a dataset. If it
|
||||
# is, the containing dataset will be the same for it and its parent.
|
||||
_tmp=$(${ZFSCMD} list -Ho name "$(dirname "${homeprefix}")" 2>/dev/null)
|
||||
if [ "${_tmp}" = "${_prefix}" ]; then
|
||||
Zcreate="no"
|
||||
return
|
||||
fi
|
||||
zhome="${_prefix}/${username}"
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user