답변:
이 useradd
명령을 사용하면 -k
옵션을 사용하여 사용자 정의 SKEL 디렉토리를 지정할 수 있습니다 . 을 사용하지 않고 / 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
adduser
명령 에서 사용자 정의 SKEL 디렉토리를 지정하는 것은 불가능하므로을 사용 useradd
합니다. " useradd
사용자를 추가하기위한 낮은 수준의 유틸리티입니다. 데비안에서는 일반적으로 관리자가 adduser
대신 사용해야 합니다." 이와 같은 비정상적인 상황에서이 명령을 사용하는 것이 좋습니다.
추가 skel
디렉토리를 작성하십시오 .
sudo mkdir /etc/skel{A,B}
의 내용을 /etc/skel
에 복사하십시오 /etc/skelA
.
sudo cp /etc/skel/* /etc/skelA/
대체 스켈 디렉토리 컨텐츠를 사용자 정의하십시오.
adduser
homedir이 없지만 일반 설정이 있습니다. 줄임표를 적절한 설정으로 바꾸십시오.
sudo adduser --no-create-home ... bob
mkhomedir_helper
대체 skel dir을 기반으로 사용자 homedir을 작성합니다.
sudo mkhomedir_helper bob /etc/skelA
#!/bin/bash
### a bare bones dumb script to create a user with a homedir based on an alternitive skeldir
adduseropt="--no-create-home --ingroup"
# assumes $1 will be user TODO add sanity check
# Assumes $2 will be alternitive skeldir TODO add sanity check
# assumes $3 will be a group TODO add sanity check
sudo adduser --no-create-home $adduseropt $3 $1
sudo mkhomedir_helper $1 $2
adduser
뼈대 디렉토리에서 파일을 제외하는 제한된 방법을 지원합니다. 보낸 사람 man adduser.conf
:
SKEL_IGNORE_REGEX
Files in /etc/skel/ are checked against this regex, and not
copied to the newly created home directory if they match. This
is by default set to the regular expression matching files left
over from unmerged config files (dpkg-(old|new|dist)).
명령 행에서이 정규식을 설정할 수 없지만 --conf
옵션을 사용하여 사용되는 구성 파일을 설정할 수 있습니다 . 당신의 추가 사본 생성 할 수 있습니다 그래서 /etc/adduser.conf
그 단지에 차이가 SKEL_IGNORE_REGEX
, 그 사용
(grep -v '^SKEL_IGNORE_REGEX' /etc/adduser.conf; printf "%s\n" 'SKEL_IGNORE_REGEX="not_for_a.txt"') > /etc/adduser_A.txt
sudo adduser --conf /etc/adduser_A.txt ...
이 adduser
명령은 사이트 별 스크립트를 실행하여 파일 제거와 같은 설정을 수행 할 수 있습니다. 전체 사본으로 시작한 후 나중에 일부 파일을 삭제하는 것이 허용되는 한,이 방법이 도움이 될 수 있습니다.
로부터 adduser 명령 (8) 맨 페이지 :
파일
/usr/local/sbin/adduser.local
이 존재하면 로컬 설정을 수행하기 위해 사용자 계정을 설정 한 후에 파일 이 실행됩니다. 전달 된 인수는 다음과adduser.local
같습니다.username uid gid 홈 디렉토리
따라서 네 가지 매개 변수를 사용하고 필요한 파일을 제거하는 스크립트를 작성하기 만하면됩니다. 파일을 다른 이름으로 저장하고 /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
16.04 시스템의 맨 페이지에서 데비안 기반 시스템은 사용하지 않는 것이 좋습니다. 이주의 사유가 변경된 경우 답변에 추가 할 수 있습니다. 또한 16.04에useradd
있으며adduser
다른 옵션을 가진 다른 프로그램이므로 명확성을 위해 답변을 편집 할 수 있습니다.