diff options
Diffstat (limited to 'meta/recipes-core/volatile-binds/files/mount-copybind')
-rwxr-xr-x | meta/recipes-core/volatile-binds/files/mount-copybind | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/meta/recipes-core/volatile-binds/files/mount-copybind b/meta/recipes-core/volatile-binds/files/mount-copybind index fddf520053..aad022c6e4 100755 --- a/meta/recipes-core/volatile-binds/files/mount-copybind +++ b/meta/recipes-core/volatile-binds/files/mount-copybind @@ -31,6 +31,13 @@ if [ -d "$mountpoint" ]; then else specdir_existed=no mkdir "$spec" + # If the $spec directory is created we need to take care that + # the selinux context is correct + if command -v selinuxenabled > /dev/null 2>&1; then + if selinuxenabled; then + restorecon "$spec" + fi + fi fi # Fast version of calculating `dirname ${spec}`/.`basename ${spec}`-work @@ -39,18 +46,35 @@ if [ -d "$mountpoint" ]; then # Try to mount using overlay, which is must faster than copying files. # If that fails, fall back to slower copy. - if ! mount -t overlay overlay -olowerdir="$mountpoint",upperdir="$spec",workdir="$overlay_workdir" "$mountpoint" > /dev/null 2>&1; then + if command -v selinuxenabled > /dev/null 2>&1; then + if selinuxenabled; then + mountcontext=",rootcontext=$(matchpathcon -n $mountpoint)" + fi + fi + if ! mount -t overlay overlay -olowerdir="$mountpoint",upperdir="$spec",workdir="$overlay_workdir""$mountcontext" "$mountpoint" > /dev/null 2>&1; then if [ "$specdir_existed" != "yes" ]; then - cp -pPR "$mountpoint"/. "$spec/" + cp -aPR "$mountpoint"/. "$spec/" fi mount -o "bind$options" "$spec" "$mountpoint" + # restore the selinux context. + if command -v selinuxenabled > /dev/null 2>&1; then + if selinuxenabled; then + restorecon -R "$mountpoint" + fi + fi fi elif [ -f "$mountpoint" ]; then if [ ! -f "$spec" ]; then - cp -pP "$mountpoint" "$spec" + cp -aP "$mountpoint" "$spec" fi mount -o "bind$options" "$spec" "$mountpoint" + # restore the selinux context. + if command -v selinuxenabled > /dev/null 2>&1; then + if selinuxenabled; then + restorecon -R "$mountpoint" + fi + fi fi |