ntpsec-ntpdate
# generally used in my scripts, so necessary
calc
+# generally useful for debugging, so necessary
+vim
+ack
#
+++ /dev/null
-. lib/constants_user # USERNAME
-
-chown_to_user() {
- if [ ! -z "$@" ]; then
- for _PATH in $@; do
- chown -R "${USERNAME}:${USERNAME}" "${_PATH}"
- done
- fi
-}
. lib/expect_n_args
+. lib/mkdir_p_for_user
copy_dirtree() {
- expect_n_args 3 99 'SOURCE_ROOT TARGET_ROOT TAG...' $@
- _SOURCE_ROOT="$1"
- _TARGET_ROOT="$2"
- shift 2
+ expect_n_args 4 99 'OWNER_TO_ENFORCE (to ignore, pass empty string) SOURCE_ROOT TARGET_ROOT TAG...' $@
+ _OWNER="$1"
+ _SOURCE_ROOT="$2"
+ _TARGET_ROOT="$3"
+ shift 3
_TAGS="$@"
for _TAG in ${_TAGS}; do
_PATH_TAG="${_SOURCE_ROOT}/${_TAG}"
_PATH_TARGET="${_TARGET_ROOT}"$(echo "${_PATH_REL}" | cut -c2-)
_PATH_SOURCE=$(realpath "${_PATH_REL}")
_DIRECTORY=$(dirname "${_PATH_TARGET}")
- mkdir -p "${_DIRECTORY}"
+ if [ ! -z "${_OWNER}" ]; then
+ mkdir_p_for_user "${_OWNER}" "${_DIRECTORY}"
+ fi
cp -av "${_PATH_SOURCE}" "${_PATH_TARGET}"
+ if [ ! -z "${_OWNER}" ]; then
+ chown "${_OWNER}:${_OWNER}" "${_PATH_TARGET}"
+ fi
done
cd - > /dev/null
done
. lib/copy_dirtree
-. lib/constants_etc # PATH_ETC, PATH_REL_ETC
+. lib/constants_etc # PATH_ETC, PATH_REL_ETC
. lib/constants_repopaths # PATH_CONF
ensure_etc_of_tags() {
_PATH_CONF_ETC="${PATH_CONF}/${PATH_REL_ETC}"
- copy_dirtree "${_PATH_CONF_ETC}" "${PATH_ETC}" $@
+ copy_dirtree '' "${_PATH_CONF_ETC}" "${PATH_ETC}" $@
}
-. lib/chown_to_user
-. lib/constants_user # PATH_USER_HOME
+. lib/constants_user # PATH_USER_HOME, USERNAME
. lib/constants_repopaths # PATH_CONF_HOME
ensure_homefiles_of_tags() {
- _TO_CHOWN=$(copy_dirtree "${PATH_CONF_HOME}" "${PATH_USER_HOME}" $@ | sed "s/.*' -> '//g" | sed -E "s/'$//g")
- echo ${_TO_CHOWN} | while read _LINE; do
- chown_to_user "${_LINE}"
- done
+ copy_dirtree "${USERNAME}" "${PATH_CONF_HOME}" "${PATH_USER_HOME}" $@
}
--- /dev/null
+mkdir_p_for_user() {
+ _USER="$1"
+ _TO_SHORTEN=$(mkdir -pv "$1" | sed "s/mkdir: created directory '//g" | head -1)
+ if [ -z "${_TO_SHORTEN}" ]; then
+ _LENGTH=$(echo -n "${_TO_SHORTEN}" | wc -c)
+ _TARGET_LENGTH=$(calc "${_LENGTH} - 1" | cut -f2)
+ _TARGET_DIR=$(echo "${_TO_SHORTEN}" | cut -c "-${_TARGET_LENGTH}")
+ chown -R "${_USER}:${_USER}" "${_TARGET_DIR}"
+ fi
+}
+++ /dev/null
-mkdir_p_print_top() {
- _TO_SHORTEN=$(mkdir -pv "$1" | sed "s/mkdir: created directory '//g" | head -1)
- if [ -z "${_TO_SHORTEN}" ]; then
- echo ''
- else
- _LENGTH=$(echo -n "${_TO_SHORTEN}" | wc -c)
- _TARGET_LENGTH=$(calc "${_LENGTH} - 1" | cut -f2)
- echo "${_TO_SHORTEN}" | cut -c "-${_TARGET_LENGTH}"
- fi
-}
-. lib/chown_to_user
. lib/copy_dirtree
. lib/constants_repopaths # PATH_CONF_HOME
. lib/constants_user # PATH_USER_HOME, USERNAME
. lib/ensure_homefiles_of_tags
-. lib/mkdir_p_print_top
+. lib/mkdir_p_for_user
setup_users() {
_MIN_TAGS="$1"
_PATH_USER_BIN="${PATH_USER_HOME}/.local/bin"
echo "\nSetting up root user's home directory."
- copy_dirtree "${PATH_CONF_HOME}" '/root' ${_MIN_TAGS} root
+ copy_dirtree 'root' "${PATH_CONF_HOME}" '/root' ${_MIN_TAGS} root
echo "\nSetting up user ${USERNAME}."
adduser --disabled-password --gecos "" "${USERNAME}"
usermod -a -G sudo "${USERNAME}"
ensure_homefiles_of_tags ${_MIN_TAGS} ${_TAGS_USER}
- copy_dirtree "${PATH_CONF_HOME}" "${PATH_USER_HOME}" ${_MIN_TAGS} ${_TAGS_USER}
- _TO_CHOWN=$(mkdir_p_print_top "${_PATH_USER_BIN}")
+ mkdir_p_for_user "${USERNAME}" "${_PATH_USER_BIN}"
cd "${_PATH_USER_BIN}"
ln -s ../../.plomlib lib
- chown_to_user "${_TO_CHOWN}"
+ chown "${USERNAME}:${USERNAME}" lib
cd - > /dev/null
}
set -e
cd $(dirname "$0")
. lib/check_finished_marker
-. lib/chown_to_user
. lib/constants_catgirl # PATH_USER_SHARE_CATGIRL
-. lib/constants_user # PATH_USER_HOME
+. lib/constants_user # PATH_USER_HOME, USERNAME
. lib/ensure_etc_of_tags
. lib/ensure_homefiles_of_tags
. lib/ensure_packages_of_tags
. lib/expect_n_args
-. lib/mkdir_p_print_top
+. lib/mkdir_p_for_user
check_finished_marker 'setup_server'
expect_n_args 1 1 'IRC_PASSWORD' $@
ensure_homefiles_of_tags catgirl
echo "\nSetting up ${PATH_USER_SHARE_CATGIRL} so logs can go there."
-TO_CHOWN=$(mkdir_p_print_top "${PATH_USER_SHARE_CATGIRL}")
-chown_to_user "${TO_CHOWN}"
+mkdir_p_for_user "${USERNAME}" "${PATH_USER_SHARE_CATGIRL}"
echo "\nWriting provided password into ${PATH_USER_CONF_CATGIRL}."
sed -i "s/REPLACE_WITH_IRC_PASSWORD/${IRC_PASSWORD}/g" "${PATH_USER_CONF_CATGIRL}"
-chown_to_user "${PATH_USER_SHARE_CATGIRL}"
-chown -R plom:plom "${PATH_USER_SHARE_CATGIRL}"
+chown -R "${USERNAME}:${USERNAME}" "${PATH_USER_SHARE_CATGIRL}"
echo "\nActivating catgirl tmux session service."
systemctl enable --now catgirl
echo '\nMoving SSH data from root to user.'
mkdir -p "${PATH_USER_SSH}"
mv "/root/${PATH_REL_SSH}/authorized_keys" "${PATH_USER_SSH}/"
-chown_to_user "${PATH_USER_SSH}"
+chown -R "${USERNAME}:${USERNAME}" "${PATH_USER_SSH}"
echo '\nSetting up minimal borg user.'
adduser --system --home "${PATH_BORG_HOME}" --shell /bin/sh borg
+++ /dev/null
-../../../bookworm/scripts/lib/chown_to_user
\ No newline at end of file
--- /dev/null
+../../../bookworm/scripts/lib/mkdir_p_for_user
\ No newline at end of file
+++ /dev/null
-../../../bookworm/scripts/lib/mkdir_p_print_top
\ No newline at end of file
cd $(dirname "$0")
. lib/abort_if_not_user
. lib/check_finished_marker
-. lib/chown_to_user
. lib/constants_repopaths # PATH_CONF, PATH_SCRIPTS
. lib/constants_user # USERNAME
. lib/path_tmp_timestamped
echo "Setting up config repo copy for user at ${PATH_TMP_REPO} …"
cp -a "${PATH_REPO}" "${PATH_TMP_REPO}"
-chown_to_user "${PATH_TMP_REPO}"
+chown -R "${USERNAME}:${USERNAME}" "${PATH_TMP_REPO}"
su -l "${USERNAME}" -c "/bin/sh ${PATH_TMP_REPO}/${PATH_REL_SETUP_SECRETS_USER} $1"
rm -rf "${PATH_TMP_REPO}"