программный клон / etc / skel для новых пользователей

/etc/skel - это папка, которая будет клонирована для новых пользователей. Есть ли способ, которым мы можем определить правила для копирования из папки /etc/skel?

Например, я ищу способ, который, если пользователь создан и принадлежит группе с именем A, клон /etc/skel, кроме /etc/skel/not_for_a.txt. Возможно ли это?

11
задан 6 December 2017 в 08:54

4 ответа

Обратите внимание, что команда useradd позволяет указать пользовательский каталог SKEL с помощью опции -k. Вы можете создать каталог / etc / skel-for-group-A без not-for-a.txt, а затем добавить новых пользователей с их группой по умолчанию в качестве A и указать их каталог SKEL с помощью команды:

useradd username -g groupA -k /etc/skel-for-group-A -m

См. http://manpages.ubuntu.com/manpages/trusty/man8/useradd.8.html

11
ответ дан 18 July 2018 в 01:45

Команда adduser может запускать скрипт для конкретного сайта, чтобы выполнить любую настройку, например удаление файлов. Если это приемлемо, чтобы начать с полной копии, а затем удалить некоторые файлы после этого, то этот подход может сработать для вас.

Из справочной страницы adduser (8):

Если файл /usr/local/sbin/adduser.local существует, он будет выполнен после установки учетной записи пользователя, чтобы выполнить локальную настройку. Аргументы, переданные в adduser.local, следующие: username 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. [ ! d9]

3
ответ дан 18 July 2018 в 01:45

Обратите внимание, что команда useradd позволяет указать пользовательский каталог SKEL с помощью опции -k. Вы можете создать каталог / etc / skel-for-group-A без not-for-a.txt, а затем добавить новых пользователей с их группой по умолчанию в качестве A и указать их каталог SKEL с помощью команды:

useradd username -g groupA -k /etc/skel-for-group-A -m

См. http://manpages.ubuntu.com/manpages/trusty/man8/useradd.8.html

11
ответ дан 24 July 2018 в 17:27
  • 1
    useradd не рекомендуется для дебианских систем на странице руководства моей системы 16.04. Если причина этой осторожности изменилась, вы можете добавить ее к своему ответу. Также 16.04 useradd и adduser - разные программы с различными параметрами, возможно, вы можете отредактировать свой ответ для ясности. – J. Starnes 6 December 2017 в 10:10
  • 2
    @ J.Starnes Чтобы указать пользовательский каталог SKEL, невозможно в команде adduser, поэтому мы используем useradd. Это не совсем обескуражено: «useradd - это утилита низкого уровня для добавления пользователей. В Debian администраторы должны обычно использовать вместо adduser. & Quot; Это нормально использовать эту команду в таких необычных обстоятельствах. – Mukesh Sai Kumar 6 December 2017 в 10:31

Команда adduser может запускать скрипт для конкретного сайта, чтобы выполнить любую настройку, например удаление файлов. Если это приемлемо, чтобы начать с полной копии, а затем удалить некоторые файлы после этого, то этот подход может сработать для вас.

Из справочной страницы adduser (8):

Если файл /usr/local/sbin/adduser.local существует, он будет выполнен после установки учетной записи пользователя, чтобы выполнить локальную настройку. Аргументы, переданные в adduser.local, следующие: username 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. [ ! d9]

8
ответ дан 24 July 2018 в 17:27

Другие вопросы по тегам:

Похожие вопросы: