useradd

사용자추가 - useradd

일반적인 리눅스 배포판들은 useradd와 adduser가 심볼릭 링크로 그 사용법이 같다.
useradd paul
[옵션]
  • -c : 간단한 사용자설명 코멘트를 등록한다. 주로 이름이나 사무실명등을 입력
  • -d : 생성하는 계정사용자의 홈디렉토리위치지정 (ex. -d /home/paul)
  • -e : 생성하는 계정의 사용종료일자 지정 (ex. -e 2013-12-31)
  • -f : 생성하는 계정의 패스워드 유효일자 지정 (ex. -f -30 , 앞으로 30일동안 유효한 계정)
  • -g : 생성하는 계정의 로그인 그룹, 지정하지 않을경우 자동으로 사용자명과 같은 그룹생성
  • -G : 생성하는 걔정의 추가등록 계정의 그룹명, 여러개일경우 , 로 구분. 지정하여도 사용자명과 같은 그룹은 자동으로 생성
  • -p : 생성하는 계정의 패스워드 지정
  • -s : 생성하는 계정의 로그인쉘 (기본값 /bin/bash)
  • -u : 생성하는 계정의 UID 지정 (ex. -u 1000)
Debian / ubuntu 계열에서의 특이점
데비안과 우분투 시스템에서는 useradd와 adduser의 쓰임새가 다르다. adduser 명령어는 비밀번호, 홈 디렉토리, 계정정보등을 입력을 받아 생성하는 대화식(Dialog) 명령이다. useradd 명령어로 계정을 생성하면 홈 디렉토리도 생성되지 않고 쉘도 sh를 사용한다.

useradd -D

useradd로 생성되는 것들의 기본값들을 설정하는 명령어이다. /etc/default/useradd에 이 설정값들이 저장되어 있으며 이를 직접 수정해도 된다. useradd -D 는 이 파일의 설정값을 변경한다.
useradd -D

  GROUP=100
  HOME=/home
  INACTIVE=-1
  EXPIRE=
  SHELL=/bin/bash
  SKEL=/etc/skel
  CREATE_MAIL_SPOOL=yes
홈디렉토리를 /usr 로 변경
useradd -D -b /usr 
기본쉘을 /bin/sh(본쉘)로 변경
useradd -D -s /bin/sh
계정이 생성되면 기본적으로 GID가 100인 users라는 그룹에 소속되는데 이를 변경
useradd -D -g 510
EXPIRE, 계정만료일을 지정
useradd -D -e 2013-12-31

생성한 계정 확인

/etc/passwd - paul 의 계정정보
grep paul /etc/passwd

  paul:x:500:500::/home/paul:/bin/bash
/etc/shadow - paul의 패스워드와 aging(계정 만료일,패스워드 유효일) 정보제목
grep paul /etc/shadow

  paul:$6$ot93LKo6$/XWvlUujWoIIRgal4o4qY13M3GEyf41e8NXalh2xES80jy.:15857:0:99999:7:::
/etc/group - paul 의 그룹정보
grep paul /etc/group

  paul:x:500:
/home/paul 확인 - 홈디렉토리
ls -la

  합계 20
  drwx------  2 paul paul 4096 2013-06-02 07:30 .
  drwxr-xr-x. 5 root root 4096 2013-06-02 07:30 ..
  -rw-r--r--  1 paul paul   18 2013-02-22 06:09 .bash_logout
  -rw-r--r--  1 paul paul  176 2013-02-22 06:09 .bash_profile
  -rw-r--r--  1 paul paul  124 2013-02-22 06:09 .bashrc
/var/spool/mail - 메일박스로 사용될 파일, 즉 paul 에게 도착한 메일을 보관할 장소
ls -la

  합계 8
  drwxrwxr-x. 2 root mail 4096 2013-06-02 07:30 .
  drwxr-xr-x. 8 root root 4096 2013-05-28 01:54 ..
  -rw-rw----  1 paul mail    0 2013-06-02 07:30 paul

패스워드 설정 - passwd

root 는 일반계정사용자의 패스워드를 마음대로 변경가능 하고 일반사용자는 자기자신의 패스워드만 변경할 수 있다.
paul 계정사용자의 패스워드 설정
passwd paul
자기자신의 패스워드 설정
passwd 
패스워드 상태정보 확인
passwd -S paul 

사용자 passwd 락(lock)과 해제

특정사용자의 패스워드에 락(lock)을 걸어서 잠궈버리고 시스템 접속을 차단하는 방법이 있다. 즉, 시스템 root 사용자는 passwd 명령어의 -l 옵션을 사용하여 일반계정사용자의 암호에 lock 을 걸어서 접속을 제한할 수 있다. 호스팅서버에서 일시적으로 계정접속을 제한할 경우에 유용하게 사용할 수 있다.
passwd -l paul

  paul 사용자의 비밀 번호 잠금
  passwd: 성공
잠금 확인을 해보자
grep paul /etc/shadow

  paul:!!$6$ot93LKo6$/XWvlUujWoIIRgal4o4qY13M3GEyf41e8NXalh2xES80jy.:15857:0:99999:7:::
패스워드에 락이 걸리게 되면 /etc/shadow 파일의 paul 패스워드정보 맨앞에 !! 문자가 들어가게 된다. 패스워드자리에 !! 이 설정되어 있다면 어떤 패스워드도 인정되지 않는다.
패스워드 락 해제
passwd -u paul

특정사용자 패스워드 삭제 및 재설정

특정사용자에 대한 패스워드를 아예 삭제해버리면 로그인 자체가 불가능해진다. 어떤 패스워드를 입력하더라도 인정하지 않게 된다. 물론 이 명령어는 root 만이 가능하다.
패스워드 삭제
passwd -d paul 
삭제한 패스워드는 재설정하면 된다.
passwd paul
passwd를 이용해서 특정 계정사용자의 패스워드 aging 정보를 설정할 수 있다. root 만이 가능하다.

특정사용자에 대한 패스워드 aging 정보 설정

-n mindays : 패스워드 최소 수명일 수. 암호를 바꿀수 있는 최소 날짜 수, 0이면 즉시 변경가능. 따로 설정하지 않으면 /etc/login.defs 의 PASS_MIN_DAYS 의 값을 따른다.
passwd -n 10 paul
확인
grep paul /etc/shadow

  paul:$6$ot93LKo6$/XWvlUujWoIIRgal4o4qY13M3GEyf41e8NXalh2xES80jy.:10:99999:7:::
-x maxdays : 패스워드의 최대 수명일 수. 암호를 바꿔야하는 최대 날짜수. 패스워드를 변경하지 않고 현재 패스워드를 지속적으로 사용할 수 있는 최대 날짜 수. 따로 설정하지 않으면 /etc/login.defs 의 PASS_MAX_DAYS 의 값을 따른다.
passwd -x 1000 paul
확인
grep paul /etc/shadow

  paul:$6$ot93LKo6$/XWvlUujWoIIRgal4o4qY13M3GEyf41e8NXalh2xES80jy.:15858:10:1000:7:::
-w warndays : 패스워드 종료일 이전 몇일전부터 종료된다는 warning 메시지를 받을 것인가를 결정함. 따로 설정하지 않으면 /etc/login.defs 의 PASS_WARN_DAYS 의 값을 따른다.
passwd -w 3 paul
확인
grep paul /etc/shadow

  paul:$6$ot93LKo6$/XWvlUujWoIIRgal4o4qY13M3GEyf41e8NXalh2xES80jy.:15858:10:1000:3:::

사용자 수정 - usermod

이름 정보 추가
usermod -c 폴 paul
확인
grep paul /etc/passwd

  paul:x:500:500:폴:/home/paul:/bin/bash

사용자 삭제 - userdel

paul 이라는 사용자 삭제
userdel paul
  • /etc/passwd 파일 내의 계정정보행이 삭제된다.
  • /etc/shadow 파일 내의 패스워드정보행이 삭제된다.
  • /etc/group 파일 내의 그룹정보행이 삭제된다.
userdel -r paul 
  • /etc/passwd 파일 내의 계정정보행이 삭제된다.
  • /etc/shadow 파일 내의 패스워드정보행이 삭제된다.
  • /etc/group 파일 내의 그룹정보행이 삭제된다.
  • /var/spool/mail 내의 메일파일이 삭제된다.
  • 홈디렉토리의 내용이 모두 삭제된다.

사용자 제거시 체크 리스트

  • 사용자 데이터베이스나 전화번호 목록에서 사용자를 제거한다.
  • aliases 파일이나 추가된 전송 주소에서 사용자를 제거한다.
  • 사용자 crontab 파일과 대기 중인 작업을 제거한다.
  • 여전히 실행 중인 모든 사용자 프로세스를 중지시킨다.
  • passwd, shadow, group, gshadow 파일에서 사용자를 제거한다.
  • 사용자 홈 디렉토리를 제거한다.
  • 사용자 메일 스풀을 제거한다.
사용자를 제거하면 사용자 UID가 시스템에서 더 이상 어떤 파일도 소유하지 않게 되므로 고아가 돼버린 파일 경로를 찾으려면 -nouser 매겨변수로 find 명령을 사용한다.
userdel -f paul
삭제대상 사용자가 현재 로그인 중이라 하더라도 삭제된다. 또한 사용자의 홈디렉토리와 메일파일도 함께 삭제된다. 만약 다른 사용자가 삭제대상 사용자와 동일한 홈디렉토리를 사용하고 있다 하더라도 삭제되며, 삭제 대상 사용자의 소유가 아닌 메일파일 또한 삭제된다.
참고로 /etc/login.defs 파일에 "USERGROUPS_ENAB" 설정 값이 yes 로 설정되어있고 삭제 대상 사용자의 그룹이 존재한다면 그 그룹도 함께 삭제될 것이다.

사용자 aging 추가 - chage

chage 명령어는 특정 계정들의 패스워드 종료정책에 대한 정보를 확인 및 수정 할 수 있다. aging 정보는 /etc/shadow 파일에 설정되는 파일이다.
againg 정보 확인
chage -l nestgoer

  # -d 옵션으로 변경
  Last password change                                      : Jun 02, 2013 

  # -M 옵션
  Password expires                                          : never   

  # -I 옵션
  Password inactive                                         : never    

  # -E 옵션
  Account expires                                           : never    

  # -m 옵션
  Minimum number of days between password change            : 0    

  # -M 옵션
  Maximum number of days between password change            : 99999    

  # -W 옵션
  Number of days of warning before password expires         : 7    
aging 정보 수정
chage -E 2013-12-31 -m 5 -W 10 -M 30 nestgoer
[옵션]
  • -d : 1970년 1월 1일부터 패스워드를 마지막으로 변경한 일자
  • -E : 계정사용 종료일자 ( YYYY-MM-DD 포맷으로 설정함 )
  • -I(대문자 i) : 패스워드가 유효기간 종료 이후에 계정 비활성화될 일 수
  • -m : 패스워드를 변경할 수 있는 최소일 수 ( 0 이면 아무때나 변경가능 )
  • -M : 마지막 변경 이후의 패스워드 유효 일 수
  • -W : 패스워드 만료기간 몇 일 전에 안내메시지를 보낼 것인가
aging 정보를 대화형으로 하나씩 설정
chage nestgoer 

useradd 환경 설정 구성 파일들

  • /etc/default/useradd
  • /etc/login.defs
  • /etc/skel/

/etc/default/useradd

useradd의 기본파일로서, useradd로 계정 생성시에 어떤 환경과 어떤 파일들을 참조하여 새로운 계정을 생성할 것인가에 대하여 정의되어 있다.
cat /etc/default/useradd

  # 기본 소속 그룹 GID=users
  GROUP=100 

  # 홈디렉토리 경로
  HOME=/home

  # 패스워드 종료일 이후의 유효(기간)여부 설정 (0, -1, 1 이상의 숫자)   
  INACTIVE=-1    

  # 계정 만료기간
  EXPIRE=    

  # 기본쉘
  SHELL=/bin/bash  

  # 홈디렉토리 생성시 함께 생성되는 skel 디렉토리 경로 
  SKEL=/etc/skel    

  # 계정 생성시 메일함 생성 여부 
  CREATE_MAIL_SPOOL=yes  
INACTIVE 의 값
  • 1이상의 숫자 : 10을 지정하면 패스워드 만료기간이 된 이후에 10일 동안은 패스워드가 유효
  • 0 : 패스워드 만료기간이 되자마자 바로 패스워드를 잠궈버림
  • -1 : 이 기능자체를 비활성화 함

/etc/login.defs

useradd 가 새로운 계정을 생성할때 반드시 참조하는 파일이다.
cat /etc/login.defs

  # 메일 디렉토리 위치지정 /var/spool/mail/사용자명
  MAIL_DIR        /var/spool/mail 

  # 패스워드 만료일
  PASS_MAX_DAYS   99999

  # 패스워드변경 후 다시 변경할 수 있는 최소일자, 0 이면 즉시 재변경 가능
  PASS_MIN_DAYS   0 

  # 패스워드 최소길이(영문자 5, 혹은 5bytes)
  PASS_MIN_LEN    5 

  # 패스워드 사용일자가 종료되기 7 일전부터 경고 메세지
  PASS_WARN_AGE   7

  # 새로 생성되는 사용자에게 할당 할 수 있는 UID 시작번호, 500번 부터 자동할당
  UID_MIN                   500 

  # 새로 생성되는 사용자에게 할당 할 수 있는 최대 UID 번호
  UID_MAX                 60000

  # 새로 생성되는 그룹의 GID 시작번호를 지정
  GID_MIN                   500

  # 새로 생성되는 그룹의 최대 GID 번호
  GID_MAX                 60000 

  # 사용자를 삭제할때 실행될 커맨드 지정
  #USERDEL_CMD    /usr/sbin/userdel_local

  # 홈디렉토리 생성여부
  CREATE_HOME     yes

  # UMASK 값, 지정하지 않으면 기본값으로 022 가 적용
  UMASK           077

  # userdel 실행시에 멤버가 없는 그룹도 삭제
  USERGROUPS_ENAB yes 

  # 암호화 방법
  ENCRYPT_METHOD SHA512         

/etc/skel/

useradd가 새로운 계정을 생성할때 /etc/skel/ 디렉토리의 내용들이 사용자의 홈디렉토리로 자동 복사된다.
ls -al /etc/skel

  합계 20
  drwxr-xr-x.  2 root root 4096 2013-05-28 01:54 .
  drwxr-xr-x. 61 root root 4096 2013-06-02 08:03 ..
  -rw-r--r--.  1 root root   18 2013-02-22 06:09 .bash_logout
  -rw-r--r--.  1 root root  176 2013-02-22 06:09 .bash_profile
  -rw-r--r--.  1 root root  124 2013-02-22 06:09 .bashrc

웹호스팅을 위한 /etc/skel/ 디렉토리

  • 홈페이지디렉토리 - /etc/skel/public_html
  • 로그디렉토리 - /etc/skel/error_log
  • 초기안내파일 - /etc/skel/public_html/index.html
여분의 skel 디렉토리를 만들어 두고 용도에 맞게 불러들일 수 있다. 아래는 paul 사용자를 생성하면서 /etc/skel_ex를 불러들인다.
useradd -m -k /etc/skel_ex paul

댓글

이 블로그의 인기 게시물

DBCP2

내부망에서 SBT 사용법

groupadd