diff options
author | Tails developers <amnesia@boum.org> | 2012-03-24 19:29:36 +0100 |
---|---|---|
committer | Daniel Baumann <daniel@debian.org> | 2012-04-05 07:51:13 +0200 |
commit | 6d0cc254c6b9c37c674db96017752e5f2b3b9005 (patch) | |
tree | cf6d2d11f04e0f320c6f788b380d73703ae8cb18 /scripts | |
parent | 395a2b5f13edc3c3d39a414c403ed317711e9d1b (diff) | |
download | live-boot-6d0cc254c6b9c37c674db96017752e5f2b3b9005.tar.gz live-boot-6d0cc254c6b9c37c674db96017752e5f2b3b9005.zip |
Adding functions equivalent to chmod/chown --reference.
This option is apparently not present in busybox.
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/live-helpers | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/scripts/live-helpers b/scripts/live-helpers index ce28742..860e6ff 100644 --- a/scripts/live-helpers +++ b/scripts/live-helpers @@ -530,6 +530,24 @@ what_is_mounted_on () grep -m1 "^[^ ]\+ ${dir} " /proc/mounts | cut -d' ' -f1 } +chown_ref () +{ + local reference="${1}" + shift + local targets=${@} + local owner=$(stat -c %u:%g "${reference}") + chown -h ${owner} ${targets} +} + +chmod_ref () +{ + local reference="${1}" + shift + local targets=${@} + local rights=$(stat -c %a "${reference}") + chmod ${rights} ${targets} +} + lastline () { while read lines @@ -1164,8 +1182,8 @@ link_files () then mkdir -p "${dest}" prev="$(dirname "${dest}")" - chown --reference "${prev}" "${dest}" - chmod --reference "${prev}" "${dest}" + chown_ref "${prev}" "${dest}" + chmod_ref "${prev}" "${dest}" fi link_files "${src}" "${dest}" "${src_mask}" else @@ -1433,8 +1451,8 @@ activate_custom_mounts () # unions and don't need to be bootstrapped # linkfiles dirs can't be bootstrapped in a sensible way mkdir -p "${source}" - chown --reference "${dest}" "${source}" - chmod --reference "${dest}" "${source}" + chown_ref "${dest}" "${source}" + chmod_ref "${dest}" "${source}" else # ensure that $dest is not copied *into* $source mkdir -p "$(dirname ${source})" @@ -1494,8 +1512,8 @@ activate_custom_mounts () rm -rf "${cow_dir}" fi mkdir -p ${cow_dir} - chown --reference "${source}" "${cow_dir}" - chmod --reference "${source}" "${cow_dir}" + chown_ref "${source}" "${cow_dir}" + chmod_ref "${source}" "${cow_dir}" do_union ${dest} ${cow_dir} ${source} ${rofs_dest_backing} fi |