2022 데이터 사이언스/Linux

11. 사용자와 그룹(2): 사용자 계정 생성

gool 2022. 5. 28. 18:57
사용자 생성은 사용자와 그룹 파트에서 가장 집중해야 할 부분이다.

 

 

 

사용자와 그룹 파트에서 가장 비중을 많이 차지하고 중요한 부분이 사용자 계정 생성이다.

사용자 계정을 생성하는 명령어는 아래와 같은 형식으로 사용한다.

 

 

useradd   [옵션]   []      [옵션]   []   사용자명

 

 

사용 가능한 옵션을 살펴보면 다음과 같다.

  • -u : UID 지정(따로 지정하지 않으면 UID, GID의 기본값은 현재 가장 큰 숫자 +1)
  • -g : GID 지정
  • -c : 별칭 지정
  • -s : shell 지정
  • -d : 홈 디렉토리 지정(경로와 이름을 절대경로로 작성)
  • -m : make directory

 

* -d 사용 시 /etc/login.defs의 CREATE_HOME 설정이 no이면 -m 옵션을 함께 사용해야 한다.

현재는 yes로 되어 있어 -m 옵션을 함께 사용하지 않아도 홈 디렉토리를 지정할 수 있다.

 

  • -k : skel을 /etc/skel이 아닌 다른 디렉토리로 지정(반드시 -m 옵션과 함께 사용)

 

* /etc/skel

skel은 사용자 홈 디렉토리의 뼈대가 되는 디렉토리이다.

사용자 생성 시 함께 생성되는 홈 디렉토리 내부에 복사해 넣을 파일과 디렉토리 저장되어 있다.

즉, 사용자 홈 디렉토리 내부에 특정 파일이나 디렉토리를 자동으로 생성할 수 있다.

 

* -k 옵션은 -m 옵션과 함께 사용하지 않으면 오류가 발생한다.

 

  • -D : 사용자 생성 시 적용되는 기본 정보 확인

 

* -D 옵션을 사용하면 useradd의 사용자 계정 생성 기능이 없어지고 정보만 출력된다.

-b 옵션(홈 디렉토리 생성 위치 변경) 등 추가 옵션을 함께 사용하여 기본 정보를 변경할 수 있다.

 

* /etc/default/useradd

useradd 파일은 사용자 생성 시 적용되는 기본 정보가 저장된 파일이다.

문서 편집기로 파일을 수정하면 useradd의 옵션을 쓰지 않아도 쉽게 기본 정보 변경이 가능하다.

 

 

 

사용자 생성 실습

 

아무런 옵션 없이 useradd 명령어로 사용자를 생성했을 때 적용되는 기본값은 다음과 같다.

 

사용자 계정 생성 기본값

 

UID, GID는 기존 itbank 사용자의 값에 +1을 한 1001이고 별칭은 따로 지정되지 않았다.

/home 디렉토리 아래 사용자명과 동일한 이름의 홈 디렉토리가 설정되었다.

 

 

이번에는 -c, -s 옵션을 사용하여 user2의 shell을 sh로 변경하고, testuser 별칭을 지정해준다.

 

-c, -s 옵션 사용

 

 

user3은 -d 옵션을 사용하여 홈 디렉토리를 /jong/ro로 설정해준다.

/home/사용자명 형태의 user1, user2 홈 디렉토리와 달리 /jong/ro로 지정된 것을 볼 수 있다.

내부에 홈 디렉토리가 생성될 상위 디렉토리 /jong은 mkdir로 미리 생성해주어야 한다.

 

-d 옵션 사용

 

 

 

skel 디렉토리 추가 및 변경

 

사용자 홈 디렉토리의 기본이 되는 /etc/skel 디렉토리 내부의 목록을 살펴보고,

/etc/skel 디렉토리가 아닌 다른 디렉토리를 skel 디렉토리로 설정해보려고 한다.

 

skel 디렉토리 내부의 파일과 디렉토리는 숨겨져 있기 때문에 -a 옵션을 사용하여 확인해야 한다.

 

/etc/skel 디렉토리 내부 목록

 

해당 파일, 디렉토리 목록이 새로 생성된 사용자의 홈 디렉토리에 들어있는 것을 확인할 수 있다.

 

user2, user3 사용자의 홈 디렉토리 내부 목록

 

/etc/skel 내부에 새로운 파일이나 디렉토리를 생성해주면,

이후 사용자 생성 시 해당 파일, 디렉토리가 사용자 홈 디렉토리에 추가되어 있는 것을 볼 수 있다.

 

/etc/skel 내부에 test1 파일 생성

 

 

사용자 홈 디렉토리 기본 구성 요소를 담는 디렉토리가 /etc/skel 하나 뿐이면 번거로울 수 있다.

예를 들어 기업에서 신입 사원을 채용한 후 계정 폴더에 필요한 자료가 자동 생성되도록 할 때,

부서 별로 필요한 자료가 다르다면 각 부서 별 skel 디렉토리를 생성해주는 것이 좋다.

 

위에서 /etc/skel 아래에 생성한 test1 파일을 지워주고, mkdir /etc/kgskel을 실행한다.

/etc/skel 내부의 모든 개체들을 숨겨진 항목까지 /etc/kgskel 내부로 복사해준다.

숨겨진 항목까지 모두 선택하려면 .* 기호를 활용해야 한다.

또, .* 기호와 -r 옵션은 동시에 사용할 수 없다.

따라서 다음과 같이 두 번에 걸쳐서 cp 명령어를 사용해야 한다.

cp /etc/skel /etc/kgskel로 디렉토리를 직접 복사할 수 있지만, 이렇게 파일 복사 훈련을 해본다.

 

 

/etc/skel 내부의 항목들이 모두 /etc/kgskel 내부로 복사된 것을 확인한 후,

touch /etc/kgskel/testfile로 kgskel 디렉토리 내부에 testfile을 생성해준다.

 

-m, -k 옵션을 사용하여 user5의 홈 디렉토리를 /etc/kgskel로 지정해준다.

kgskel 디렉토리에만 존재하는 testfile이 user5 디렉토리에 잘 들어가 있는 것을 확인할 수 있다.

 

 

 

사용자 생성 기본 정보

 

useradd -D 명령어로 사용자를 생성할 때 기본적으로 참조하는 정보들을 살펴볼 수 있다.

 

사용자 생성 기본 정보

 

필요에 따라 위 정보들을 바꿔줄 수 있다.

기본 홈 디렉토리는 /home 내부에 생성되도록, 기본 shell은 /bin/bash로 설정되어 있다.

-b 옵션을 사용하여 홈 디렉토리 생성 위치를 /jong으로 변경해준다.

user6의 홈 디렉토리가 /home 내부가 아닌 /jong 내부로 잘 들어가 있는 것을 볼 수 있다.

 

홈 디렉토리 생성 위치 변경

 

/jong 디렉토리 내부에 user6 홈 디렉토리 생성

 

사용자 생성 기본 정보는 /etc/default/useradd 파일에 저장되어 있다.

번거롭게 옵션을 사용하지 않고, 해당 파일에 직접 접근하여 vi 에디터로 내용을 수정해도 된다.

 

cat 명령어로 useradd 파일 내용 확인

 

 

 

실습 예제

 

 

 

(풀이)

 

user7 생성에 앞서 vi /etc/default/useradd 입력 모드로 조건에 맞게 문서를 수정하고,

아래처럼 필요한 디렉토리를 생성 또는 복사해주면 된다.

 

 

 

여기서 사용자 계정 생성 포스팅을 마무리한다.