Команда adduser
может запустить специфичный для сайта сценарий, чтобы выполнить любую настройку, например удаление файлов. Если допустимо начинать с полной копии, а затем удалять некоторые файлы, тогда этот подход может работать для вас.
Со страницы руководства adduser (8) :
Если файл /usr/local/sbin/adduser.local
существует, он будет выполнен после того, как учетная запись пользователя была настроена для выполнения любой локальной настройки. Переданные аргументы
adduser.local
:
имя пользователя uid gid home-directory
Поэтому все, что вам нужно сделать, это написать скрипт, который принимает четыре параметра и использовать его для удаления любых файлов, которые вам нужны. Сохраните его как /usr/local/sbin/adduser.local
и убедитесь, что он помечен как исполняемый ( chmod a+x
).
Вот кое-что, чтобы вы начали:
#!/bin/bash
## Site-specific setup for newly-created users.
## adduser(8) will call this script after setting up a new user.
set -euo pipefail
if [[ "$#" != 4 ]]; then
echo "usage: $0 username uid gid home" > /dev/stderr
fi
NEW_USERNAME="${1:?}"
NEW_UID="${2:?}"
NEW_GID="${3:?}"
NEW_HOME="${4:?}"
# The groups command outputs a space-separated list of group names
IFS=' '
for group in $(groups "${NEW_USERNAME}"); do
case "${group}" in
a)
[[ "${VERBOSE}" > 0 ]] && echo Removing file for a
rm "${NEW_HOME}/not_for_a.txt"
;;
b)
[[ "${VERBOSE}" > 0 ]] && echo Removing dir for b
rm -r "${NEW_HOME}/not_for_b/"
;;
*)
[[ "${VERBOSE}" > 1 ]] && echo No special setup required for $group
;;
esac
done
Интересная часть, которую вы хотите отредактировать, это строки, которые выглядят так:
a)
[[ "${VERBOSE}" > 0 ]] && echo Removing file for a
rm "${NEW_HOME}/not_for_a.txt"
;;
Вы можете ввести фактическое имя группы и поведение, которое вы хотели бы видеть вместо a)
и rm not_for_a.txt
.
useradd
не рекомендуется для систем на основе Debian на странице руководства в моей системе 16.04. Если причина этого предостережения изменилась, добавьте его в свой ответ. Также на 16.04useradd
иadduser
находятся разные программы с разными опциями, возможно, вы могли бы отредактировать свой ответ для ясности.