본문 바로가기

자격증/리눅스 마스터 1급

Part2) 리눅스 시스템 관리 - 일반 운영 관리(1) | 사용자 관리

I. 사용자 관리


root(Super User) 사용자 관리

1) root의 역할: 리눅스 시스템에서 시스템 관리자로서의 역할을 수행하기 위한 사용자계정이다. 즉, 리눅스 시스템을 운영하기 위한 모든 권한을 가지며 수퍼 유저(Super User)로 지칭된다. root는 리눅스 설치 시 기본적으로 생성되고, 설치과정에서 root의 비밀번호를 설정한다. 재설정 하기 위해선 쉘상태에서 passwd명령어를 사용하여 변경가능하다. 



2) 관리분담 및 관리계정 관리방안/활용: root는 시스템상에서 어떤 작업이든 수행이 가능하기 때문에 편리함만큼이나 위험도가 높다. 그래서 시스템관리자는 평상시에는 일반 계정으로 접속하고, 시스템관리가 필요한 경우엔 root계정을 사용하는 것이 일반적이다.


*su(Sustitute): 다른 계정 사용자로 교체할 수 있는 명령어이다.


옵션

  • -c: 쉘을 실행하지 않고 주어진 명령만을 수행한다.
  • -s: 지정된 쉘로 로그인한다.
  • -, -l: 지정한 사용자의 환경변수를 적용하여 로그인한다.
*사용법

※root로 변경시에는 "su -" 명령만 내리면 되며 "su - root"와 같은 의미이다.


*TMOUT: 사용자가 일정시간 동안 계정을 사용하지 않는 경우에 자동으로 로그아웃되도록 하기위해서 설정하는 것이다.

-root를 비롯한 모든 사용자의 경우 /etc/profile에 TMOUT 환경변수를 설정한다.

-특정 사용자에게만 설정할 경우엔 .bash_profile에 환경변수를 설정한다.


사용법

 1시간이 지나면 자동 로그아웃 설정

 export TMOUT

 TMOUT=3600 //초단위계산

 사용자가 사용한 명령어 목록을 다른 사용자가 로그인하더라도 알 수 없게 history목록 삭제

 HISTSIZE=0

 HISTFILESIZE=0 



*사용자 신분 확인 명령어


1. 지금 현재 나는 누구인가? = id

  • UID(사용자 아이디), GID(그룹 아이디), 소속 그룹 정보를 확인하는 명령어로써, 사용자의 신분을 확인하는 가장 일반적인 명령어이다.

▲ "bjkim" 사용자의 uid는 500, gid는 500, 소속그룹은 bjkim에 소속되어 있다.


 EUID(Effective User ID)정보만을 확인

(EUID란 서버보안 점검과정에서 해킹 등을 당하지 않았는가를 확인 할 때 사용) 

 id -un ▶ EUID 확인

 id -u ▶ UID 확인 

 id -gn ▶ 유효그룹 확인

 id -g ▶ GID 확인



2. EUID(유효 사용자 아이디) 확인하기 = whoami

  • EUID는 어떤 명령어를 실행하였을 경우에 실제 어떤 사용자 권한으로 실행되는가에 관한것인데, 즉 현재 사용자와 명령어를 실행했을때의 사용자 권한은 동일하겠지만, 그렇지 않은 경우가 있기 때문에 "whoami"로 EUID를 확인할 수 있어야 한다.



3. 최초 로그인한 아이디가 무엇인가? = who am i

  • 내가 시스템에 접속할 당시의 계정명과 접속정보를 확인하는 명령어이다. 사용자를 몇번을 바꾸건 출력은 최초 접속 사용자를 출력한다.

▲root=최초 접속자 ID, pts/0= 최초 접속 시 사용한 터미널 장치명, 2018-02-20 14:29= 최초 접속당시 시간, (192.168.1.1)= 최초 접속 당시 IP주소




사용자 계정 관리

1) 사용자 계정 설정 파일: 리눅스는 서로 다른 다수의 사용자가 동시에 로그인하여 시스템을 사용할 수 있는 운영체제로, 사용자 각자 시스템 사용 목적에 맞게 자신의 환경을 설정 할 수 있다.


*/etc/passwd

사용자에 대한 기본적인 설정 정보들이 들어 있다. 사용자의 패스워드 사항도 함께 저장되지만, shadow프로그램으로 인해 암호화되어 기록된다.

 필드

 의미

 bjkim 

 사용자의 계정명(username) 

 x

 사용자의 패스워드 

 500

 숫자로 표현된 사용자의 UID 

 500

 사용자가 포함된 그룹의 번호를 숫자로 표현한 GID 

 bjkim

 사용자에 대해 설명하는 주석 

 /home/bjkim

 사용자의 홈 디렉터리 

 /bin/bash

 사용자의 기본사용쉘 


*/etc/shadow

passwd의 보안 문제를 해결하기 위해 나온 파일이며, 루트 사용자만이 읽기 권한을 가지고 있다.( /etc/passwd에 패스워드를 x로 표현)

 필드

 의미 

 root

 사용자의 계정명(username)

 !! 

 사용자의 암호화된 패스워드 - 복잡한 난수

 17149 

 마지막으로 패스워드를 변경했던 날짜 - 리눅스 생성일(1970.1.1) 이후 부터 일자수로 계산

 0 

 패스워드를 한번 변경 후 최소 며칠 이후 다시 설정 할 수있는지에 대한 기간 - 0이면 아무때나 다시 재설정 가능

 99999

 해당 패스워드를 변경없이 사용할 수 있는 유효 기간 - 만약 10이면 10일간 유효하고, 99999는 사실상 무기한

 7

 패스워드 변경 경고일 수로 만료되기 전에 로그인 시 해당 일자 전에 경고 메세지를 보냄

 NULL

 패스워드의 유효기간 종료 후 패스워드 비활성화 기간 - 0=바로만료, 1=하루연장

 NULL

 계정 사용 종료일

 NULL

 예약 필드 



*/etc/group

 관리자가 특정 그룹을 지정하지 않고 사용자를 생성하면 사용자명과 동일한 그룹이 생성되어 이 파일에 기록된다.

 필드

 의미 

 bjkim

 그룹의 이름 (사용자명 X)

 x

 그룹의 패스워드

 500 

 그룹의 GID

 NULL

 그룹에 속한 사용자들(사용자들은 쉼표(,)로 구분함)



2) 사용자 추가


*사용자 생성 작업 순서

  1. /etc/passwd 파일에 사용자 계정 생성
  2. /etc/shadow 파일에 계정 패스워드 등록
  3. /etc/group 파일에 사용자의 그룹생성
  4. /home 디렉토리에 사용자의 홈 디렉터리 생성
  5. FTP 또는 SSH 사용을 위한 환경 설정
  6. 메일 사용을 위한 메일 환경 설정
  7. 사용자의 로그인 정보 및 환경 설정
  8. 사용자의 디렉터리 및 파일 소유권 변경 및 확인
  9. DB 사용을 위한 환경 설정 및 응용프로그램 사용을 위한 환경설정
  10. 기타 응용 소프트웨어 사용을 위한 설정


3) 사용자별 Shell 설정


*쉘(Shell)의 선택


-쉘 종류 확인 및 선택

 1. /bin디렉터리 확인, 2. /etc/shells 파일 확인, 3. chsh -l 명령어 사용

 


    -로그인쉘과 서브쉘: 리눅스에서 제공하는 쉘은 크게 로그인쉘과 서브쉘로 나눌수 있다.

     로그인쉘(login shell)

     사용자 생성시 /etc/passwd에 그 정보가 등록되는데, 로그인시 기본으로 지정하여 사용되는 쉘이다.

     서브쉘(sub shell)

     필요에 따라 임시적으로 변경하여 일시적으로 사용하는 쉘이다. 

     ex) 현재 쉘 확인: echo $SHELL, 본 쉘로 변경: /bin/sh, 쉘 종료: exit



    -로그인쉘의 변경: "chsh(change shell)" 명령을 사용한다.(모든 사용자 모두 사용 가능)

     로그인 쉘 변경 (변경 후 재로그인해야 적용됨)

    ▲chsh -s 옵션으로 더 간편하게 바꿀 수 있다.




    사용자&그룹 계정 관리 명령어

    1) useradd: 사용자 생성을 위한 명령어

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

    옵션 

     의미 

    -u

     사용자의 UID를 지정한다.

    -g 

     사용자의 주그룹을 지정한다. ( -G: 보조그룹 지정) 

    -c 

     사용자에 대한 설명을 추가한다. 

    -d 

     사용자의 기본 홈 디렉터리 변경한다.(가능한 계정명과 동일한 홈 디렉터리 추가) 

    -s 

     사용자의 로그인쉘을 지정한다. 

    -m -k

     사용자 지정 skel을 생성한다. 

     useradd -D [옵션] [값]: 기본 설정값 변경 ( useradd -D = cat /etc/default/useradd)

    옵션

     의미 

    -b 

     계정 생성 시 생성되는 홈디렉터리의 기본 생성 위치를 변경한다.

    -e 

     계정의 기본 만료일자를 변경한다.

    -f 

     계정 만료 일자에 대한 일시를 변경한다. (패스워드 비활성화 기간)

    -s 

     계정의 기본 로그인쉘을 변경한다. 

    -g 

     계정 생성시 지정되는 기본 그룹을 변경한다. 


     GROUP=100

     사용자 추가시 기본적으로 100이라는 GID 그룹 지정 (단, useradd 명령에 -n옵션일때만 적용)

     HOME=/home 

     홈 디렉터리는 /home 디렉터리 아래에 사용자 이름의 디렉터리로 만들도록 설정 

     INACTIVE=-1 

     

     EXPIRE= 

     

     SHELL=/bin/bash

     사용자의 기본 쉘 

     SKEL=/etc/skel 

     기본 설정 파일 위치

     CREATE_MAIL_SPOOL=yes  메일함 생성 여부


    2) usermod: 사용자 설정을 바꾸어 주기위한 명령어이다.

    usermod [옵션] [사용자명]

    옵션

     의미 

    -l

     사용자의 계정명 변경

    -u

     사용자의 uid 정보 변경

    -g

     사용자의 기본 그룹 변경

    -G

     사용자에게 추가 그룹 지정 (-a 옵션과 함께 사용)



    3) passwd: 사용자 생성 후 해당 사용자에 대한 패스워드를 변경하는 명령어이다.

     passwd [옵션] [사용자명]

    옵션 

     의미 

    -l

     패스워드를 잠금 설정(lock)

    -u 

     패스워드를 잠금 해제(unlock) 

    -d 

     계정에 대한 패스워드를 사용불가로 만듦 

    -n

     패스워드 변경 최소일수 설정 

    -x 

     패스워드 변경 유예기간 설정 

    -w 

     패스워드 변경 경고 일수 설정 

    -i

     패스워드 변경 유예기간을 설정

    -S

     패스워드의 설정 상태를 보여준다

    --stdin

     패스워드를 표준출력장치로 입력 받아 생성



    4) chage: /etc/shadow 파일에 설정된 사용자에 대한 패스워드의 만료 기간 및 시간 정보를 변경하는 명령어이다.

     chage [옵션] [사용자명]

    옵션

     의미 

    -l

     aging 정보 확인 

    -d

     최종 패스워드 변경일을 설정

    -m

     패스워드 변경 최소일수를 지정 

    -M

     패스워드 변경 유예기간을 설정 

    -W

     패스워드 변경 경고일 수를 설정 

    -I

     패스워드 비활성화기간을 지정 (0으로 지정 시 유효기간 없음)

    -E 

     계정사용 종료일을 YYYY-MM-DD 형식으로 지정  



    5) userdel: 사용자를 삭제하는 명령어이다.

    userdel [옵션] [사용자명]

    옵션

     의미 

    -f

     로그인 되어있거나, 다른 사용자가 홈 디렉터리를 사용하고, 삭제 계정의 그룹을 다른 계정의 기본그룹으로 지정되었어도 강제로 삭제

    -r

     계정생성 시 함께 만들어진 모든 정보를 삭제(사용자 디렉터리, 메일 스풀 파일)

    -h

     도움말 표시



    6) groupadd: 그룹을 생성하기 위한 명령어이다.

    groupadd [옵션] [값] [그룹명]

    옵션

     의미 

    -f

     이미 존재하는 구룹과 동일한 그룹 강제 생성

    -g

     그룹 생성시 GID값 지정

    -o

     기존의 GID와 동일한 GID로 그룹 생성 가능

    -r

     GID를 500미만으로 자동 지정

     


     groupadd g1

     groupadd -g 701 g2 // gid를 701로 지정한 그룹 생성

     groupadd g3 //701에 이어서 702로 그룹 생성



    7) groupmod: 그룹의 설정사항을 변경 시 사용하는 명령어이다.

     groupmod [옵션] [값] [그룹명]

    옵션

     의미 

    -g

     지정된 GID로 변경

    -n

     새로운 그룹명으로 변경



    8) gpasswd: 특정 그룹에 패스워드를 설정하는 명령어이다. (특정 그룹 사용자를 추가, 제거, 그룹관리자 지정 명령어도 있음)

     gpasswd [옵션] [값] [그룹명]

    옵션

     의미 

    -a

     특정 그룹에 새로운 그룹원을 추

    -d

     특정 그룹에서 지정한 그룹원을 제거

    -r

     특정 그룹의 패스워드를 제거

    -R

     특정 그룹에 접근을 제어 

    -A 

     특정 그룹의 그룹 관리자를 설정 

    -M 

     특정 그룹의 그룹원들을 새로 설정

     특정 그룹에 그룹원을 추가하는 방법들

    1. /etc/group 파일 직접 편집
    2. gpasswd 명령어의 -M 옵션을 적용해서 그룹원 직접 설정
    3. gpasswd 명령어의 -a 옵션으로 새로운 그룹원 추가 등록



    9) groupdel: 그룹삭제 시 사용하는 명령어이다.

     groupdel [그룹명]

     (별다른 옵션은 없다)



    10) chgrp: "Change group"의 약어로, 파일이나 디렉터리의 소유그룹을 변경할 때 사용한다.

     chgrp [옵션] [파일명/디렉터리명]

     옵션

     의미 

     -c, --changes

     작업 상태를 자세히 보여주나, 실제로 변경되는 것만 보여줌

     -h, --no-dereference

     심볼릭 링크가 지정하는 것 대신에 심볼릭 링크 자체의 그룹을 변경

     -f, --silent, --quiet

     그룹이 변경되지 않는 파일들에 대한 오류 메세지를 보여주지 않음

     -v, --verbose

     작업 진행 상태를 자세하게 보여줌

     -R, -recursive

     지정한 디렉터리 아래에 있는 모든 파일도 함께 지정한 그룹으로 변경

     --help

     사용법과 그 옵션들의 설명들을 출력

     --version 

     버전 정보를 출력

     test 파일의 소유 그룹을 "nobody"로 변경



    11) su: 다른 계정 사용자로 교체할 때 사용하는 명령어이다.

     su [옵션] [사용자명]

     옵션

     의미 

     -c, --command

     대화형 쉘을 시작하지 않고, 한개의 명령만 실행

     -f, --fast

     새로운 그룹명으로 변경

     --help

     표준출력으로 사용법을 출력하고 정상적으로 종료

     -, -l, --login 

     쉘을 로그인 쉘로 만듦

     -m, -p

     'HOME', 'USER', 'LOGINNAME', 'SHELL' 등의 환경변수값을 변경하지 않음

     -s, --shell 

     su를 실행하는 사용자가 수퍼 유저가 아니거나 제한된 쉘일 때 /etc/passwd 등록 쉘을 수행하지 않고 지정한 쉘을 수행

     --version

     표준출력으로 버전정보를 출력하고 정상적으로 종료