--- /dev/null
+#!/bin/sh
+# Hard link files to those in argument-selected subdirectories of
+# linkable_etc_files//, e.g. link /etc/foo/bar to
+# linkable_etc_files/$1/etc/foo/bar and so on. Create directories as
+# necessary. We do the hard linking so files that should be readable to
+# non-root in /etc/ remain so despite having a path below /root/, as
+# symbolic links point into /root/ without making the targets readable
+# to non-root.
+# CAUTION: This removes original files at the affected paths.
+set -e
+
+config_tree_prefix="${HOME}/config/all_new_2018/linkable_etc_files/"
+
+for target in "$@"; do
+ cd "${config_tree_prefix}${target}"
+ for path in $(find . -type f); do
+ linking=$(echo "${path}" | cut -c2-)
+ linked=$(realpath "${path}")
+ dir=$(dirname "${linking}")
+ mkdir -p "${dir}"
+ ln -f "${linked}" "${linking}"
+ done
+done
set -e
# Provide maximum input for set_hostname_and_fqdn.sh.
-if "$#" -ne 2 ]; then
+if [ "$#" -ne 2 ]; then
echo "Need exactly two arguments (hostname, FQDN)."
false
fi
# Adapt /etc/ to our needs by symlinking into ./linkable_etc_files. This
# will set basic configurations affecting following steps, such as setup
# of APT and the locale selection, so needs to be right at the beginning.
-./symlink_etc.sh all server
+./hardlink_etc.sh all server
# Set hostname and FQDN.
./set_hostname_and_fqdn.sh "${hostname}" "${fqdn}"
+++ /dev/null
-#!/bin/sh
-# Symbolically link files to those in argument-selected subdirectories
-# of linkable_etc_files//, e.g. link /etc/foo/bar to
-# linkable_etc_files/$1/etc/foo/bar and so on. Create directories as
-# necessary.
-# CAUTION: This removes original files at the affected paths.
-set -e
-
-config_tree_prefix="${HOME}/config/all_new_2018/linkable_etc_files/"
-
-for target in "$@"; do
- cd "${config_tree_prefix}${target}"
- for path in $(find . -type f); do
- linking=$(echo "${path}" | cut -c2-)
- linked=$(realpath "${path}")
- dir=$(dirname "${linking}")
- mkdir -p "${dir}"
- ln -fs "${linked}" "${linking}"
- done
-done