Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

나의 IT일지

리눅스 계정과 권한 본문

정보보안

리눅스 계정과 권한

세레프 2023. 6. 15. 23:02

리눅스 계정

 

사용자 계정 관리

사용자는 계정이나 아이디를 통해 운영체제에 접속이 가능하다. 아이디(identifier)란 시스템을 사용가능한 식별자로, 시스템을 사용할 수는 있지만, 시스템을 생성이나 수정은 할 수 없다. 즉, 서

my-it-diary.tistory.com

 OS에는 커널을 통해서만 접근이 가능하며, 커널을 사용하기 위해서는 사용자가 쉘을 통해 커널에게 명령을 해야 한다. 이때, 사용자는 해당 OS의 계정을 가지고 해당 OS에 접근하게 된다. 즉, 사용자가 OS를 사용하기 위해서는 해당 OS의 계정이 필요하게 되며, OS의 계정은 관리자가 관리하게 된다.

 

  • 계정 생성시 참고되는 파일과 디렉토리
    • /etc/login.defs : 생성된 계정의 기본값을 설정한 파일
      • MAIL_DIR : 메일 디렉토리 위치
      • PASS_MAX_DAYS : 한 패스워드를 사용할 수 있는  최대 기간
      • PASS_MIN_DAYS  : 패스워드를 바꾸기 위한 최소 기간
      • PASS_MIN_LEN     : 패스워드의 최소 길이 (초과)
      • PASS_WARN_AGE    : 패스워드 만료 경고 일수 
      • UID_MIN : 유저 ID 최소값 (기본 1000)
      • UID_MAX : 유저 ID 최대값 (기본 60000)
      • SYS_UID_MIN : 시스템 유저 ID 최소값 (기본 201)
      • SYS_UID_MAX : 시스템 유저 ID 최대값  (기본 999)
      • GID_MIN : 그룹 ID 최소값 
      • GID_MAX : 그룹 ID 최대값 
      • SYS_GID_MIN : 시스템 그룹 ID 최소값
      • SYS_GID_MAX : 시스템 그룹 ID 최대값
      • CREATE_HOME : 홈 디렉토리 자동생성 여부
      • UMASK : 홈 디렉토리의 기본값을 정하는 기준값
      • USERGROUPS_ENAB  : 계정 삭제시 같은 이름의 그룹에 맴버가 없을 경우 삭제 여부 확인
      • ENCRYPT_METHOD  : PW를 암호화할 때 사용하는 해시 알고리즘 방식
        • sha512 ($6) : salt값을 사용해서 암호화 복호화하는 방식
        • MD5 ($1) 
    • /etc/default/useradd : 생성된 계정의 디렉토리, 쉘, skel을 설정하는 파일
      • GROUP : -n 옵션을 통해 계정을 생성할 경우, 소속되는 기본 GID
      • HOME : 홈 디렉토리의 상위 디렉토리
      • INACTIVE : pw 유효기간 ( -1일 경우 비활성화 )
      • EXPIRE: pw 만료기간 
      • SHELL  : 계정생성시 사용하는 쉘
      • SKEL : 계정 생성시 홈디렉토리에 추가되는 파일을 가진 디렉토리(skel)경로
        • /etc/skel : 홈 디렉토리를 구성할 때 추가되는 파일, 디렉토리를 가진 기본 디렉토리
      • CREATE_MAIL_SPOOL : 메일 파일 생성 여부

 

  • 계정 생성시 변경/추가되는 파일과 디렉토리
    • /etc/passwd : 사용자 계정 정보 파일
      • [USER] : [x] : [UID] : {GID] : [별명] : [홈디렉토리 경로] : [쉘]
        • echo $USER : 현재 접속해 있는 ID
        • echo $UID : 현재 접속중인 계정의 UID
        • echo $GID : 현재 접속중인 계정의 GID
        • echo $HOME : 현재 접속중인 계정의 홈디렉토리
        • echo $SHELL : 현재 접속중인 계정이 사용하는 쉘 종류
          • chsh -s [쉘 파일] [계정명] : 해당 계정이 사용하는 쉘 변경
          • chsh -l : 사용가능한 쉘 출력
    • /etc/shadow : 사용자 PW 정보 파일
      • [ID] : [PW] : [PW 생성일수] : [PW 변경가능일수] : [PW최대유효기간] : [만료경고일수] : [계정 활성 여부(비활성)] : [만료일수(비활성)] :
        • PW 구성 : [해시코드]$[salt값]$[암호화한 PW]
        • chage -l [계정] : 해당 계정의 비밀번호 관련 설정 확인
    • /etc/group : 그룹 정보 파일
      • [그룹명] : x : GID : [구성 계정] 
    • /home/ : 사용자 홈 디렉토리
    • /var/spool/mail/ : 계정 메일 디렉토리

 

계정 생성 명령어

  • useradd [옵션] [계정명] : 사용자를 추가하는 명령어
    • useradd -D : uesradd로 생성시 적용되는 설정 확인
    • useradd -D -b [디렉토리 경로] : /etc/default/useradd에서 홈 디렉토리 설정 변경
    • useradd -D -s [쉘 경로] : /etc/default/useradd에서 쉘 설정 변경 (쉘 목록은 /etc/shells 파일을 통해 확인 가능)
옵션 의미
-u [UID] UID 지정 (그룹 미지정시 uid와 같은 gid 생성)
-g [그룹 / GID] 주 그룹을 해당 GID으로 지정
-G [그룹 / GID] 계정을 해당 그룹에 소속 (주 그룹 유지)  → id [계정]으로 확인 가능
-c [이름] GUI에서 로그인시 나타나는 아이디 이름(별칭)지정
-d [디렉토리 경로] 홈 디렉토리을 해당 디렉토리에 생성
(상위 디렉토리는 존재해야 하며, 가급적으로 디렉토리 명은 계정명으로 기제)
-m -k (-mk) [디렉토리 경로]  스켈디렉토리 지정
-s 쉘 지정 → /etc/shells 파일을 통해 사용가능 쉘 확인 가능

 이때, 계정을 생성하면 반드시 해당 계정의 비밀번호를 설정해야 해당 게정을 사용할 수 있다.

  • passwd [계정명] : 해당 계정의 비밀번호 설정

 

계정 내용 변경 명령어

  • usermod [옵션] [계정명]: 옵션에 따라 계정 내용 변경
옵션 의미
-u [UID] UID 변경
-g [그룹 / GID] 주 그룹을 해당 GID로 변경
-G [그룹 / GID] 계정을 해당 그룹으로 소속 (주 그룹은 유지)
-a -G [그룹1 / GID], [그룹2 / GID] ... 해당 계정을 선언한 그룹들에게 소속 (주 그룹은 유지)
-d [디렉토리 경로] 해당 계정의 홈 디렉토리 경로만 변경
-md [디렉토리 경로] 홈 디렉토리 경로를 변경하고 해당 홈 디렉토리의 위치를 선언 경로로 변경
-s  쉘 변경 → /etc/shells 파일을 통해 사용가능 쉘 확인 가능

 이때, -md를 사용하는 경우, 홈 디렉토리의 경로에 실제 디렉토리가 있으면 홈디렉토리 경로만 변경되며 실제 홈 디렉토리는 이전 경로에 남아 있다.

 

계정 삭제 명령어

  • userdel [계정명] : 홈디렉토리와 메일파일 남으며, 문서 파일의 내용만 삭제하는 명령어
    • userdel  -r [계정명] : 홈디렉토리와 메일파일, 문서 파일의 내용를 삭제하는 명령어

 

계정 전환 명령어

  • su [계정명] : 로그아웃 없이 계정을 전환하는 명령어

 

사용 계정 확인 명령어

  • users : 현재 사용중인 계정 확인
    1. os에 계정 운영하기 위해 로그인을 할 경우 해당 명령어에 계정이 출력됨
    2. 계정을 전환하여도 처음으로 로그인한 계정으로 출력됨

 

그룹 생성 / 삭제 / 수정 명령어

  • groupadd [그룹명] : 그룹을 생성하는 명령어
    • groupadd -g [GID] [그룹명] : GID를 지정해서 그룹을 생성하는 명령어
  • groupmod -g [GID] [그룹명] : 해당 그룹의 GID 변경하는 명령어
  • groupdel [그룹명] : 해당 그룹을 삭제하는 명령어

 

권한

 

소유권과 허가권

Linux는 서버를 운영하기위해 사용되는 운영체제이기에, 여러 사용자가 서버를 이용하게 된다. 그래서 사용자가 가지고 있는 권한을 구별함으로써, 보안의 강도를 높혀야 한다. 이때, 사용자의

my-it-diary.tistory.com

 OS는 파일이나 디렉토리를 특정 유저만 다룰 수 있도록 하기위해서 계정마다 권한을 부여한다. 이때, 권한은 소유권과 허가권으로 나뉘는데, "ls -l"명령어를 통해 해당 파일과 디렉토리의 소유권과 허가권을 확인 할 수 있다.

drwxr-xr-x 2  root  root  4096   6월  8  13:08 test
d rwxr-xr-x 2 root  root  4096 6월 8일 13:08  test
종류 허가권 파일 링크 수 UID소유권 GID소유권 용량 날짜 시간 파일/디렉토리 명

 소유권이란 계정이 해당 파일, 디렉토리를 다룰 수 있는 권한이며, 허가권은 소유권에 따라 해당 파일, 디렉토리에 접근, 수정할 수 있는 지 판단하는 권한이다. 즉, 해당 파일, 디렉토리의 소유권에 따라 계정에게 통제에 대한 허가권이 나눠지게 된다. 

  • 허가권은 UID허가권, GID허가권, OTHER허가권으로 나뉘며, 각 허가권에는 읽기(r), 쓰기(w), 실행 및 접근(x)으로 권한으로 나눠져 있다.
    • ex) rwxr-xr-x → rwx / r-x / r-x = [UID] / [GID] / [OTHER] 
  •  UID허가권과 GID허가권을 갖는 계정일 경우, UID허가권만 취급이 된다. 즉 UID만 적용되고, GID는 적용이 되지 않는다.
    • ex) r-xrwxr-x → 게정이 GID허가권을 가지지만 UID허가권도 가지게 된다면, 해당 계정은 쓰기 권한이 없다.
  •  허가권은 8진수로 표현이 가능하며, 읽기 권한(r)은 "4", 쓰기 권한(w)은 "2", 실행 및 접근 권한(x)은 "1"로 표현한다.
    • ex) r-xrwxr-x ↔ r-x / rwx / r-x ↔ 4+0+1 / 4+2+1 / 4+0+1 575
  r x
파일 (-) 문서 내용 보기 (cat,vi ...) 문서 내용 수정,저장,쓰기(vi ...) 파일(명령어, 스크립트 ...)에 대한 실행권한 
디렉토리 (d) 디렉토리 내용 보기 (ls ...) 파일, 디렉토리 생성,삭제, 이름변경  디렉토리 접근 권한  (cd ..... )
  • 디렉토리는 읽기권한이나 쓰기권한이 있어도 접근권한이 없을 경우 사용이 불가능하다. 
  • root는 모든 권한을 무시한다. 

 

허가권 변경

  • numeric 기법
    • chmod [숫자] [파일 / 디렉토리 경로] : 원래 권한 무시한 상태에서 파일 / 디렉토리의 허가권을 숫자에 따라 변경하는 명령어 
      • r = 4, w = 2, x = 1로 표현하며, UID, GID, OTHER순으로 나눠서 표현 ex)755 = rwxr-xr-x
  • symbolic 기법
    • chmod u[-,+,=][권한]  [파일/디렉토리 경로] : 원래 권한에서 UID 허가권을 수정하는 명령어
      • "-" : 삭제, "+" : 추가, "=" : 이전권한 무시 권한 적용을 의미
    • chmod g[-,+,=][권한]  [파일/디렉토리 경로] : 원래 권한에서 GID 허가권을 수정하는 명령어
      • "-" : 삭제, "+" : 추가, "=" : 이전권한 무시 권한 적용을 의미  
    • chmod o[-,+,=][권한]  [파일/디렉토리 경로] : 원래 권한에서 Other 허가권을 수정하는 명령어
      • "-" : 삭제, "+" : 추가, "=" : 이전권한 무시 권한 적용을 의미
    • chmod a[-,+,=][권한]  [파일/디렉토리 경로] : 원래 권한에서 모든 소유권의 허가권을 수정하는 명령어 
      • "-" : 삭제, "+" : 추가, "=" : 이전권한 무시 권한 적용을 의미

 

 

소유권 변경

  • chgrp [그룹 명] [파일 / 디렉토리 경로] : 파일과 디렉토리의 GID소유권을 변경하는 명령어
  • chown [UID] [파일/디렉토리 경로] : 파일과 디렉토리의 UID소유권을 변경
    • chown [계정명]: [파일/디렉토리 경로] : 파일과 디렉토리의 UID소유권, GID소유권을 같은 계정 명으로 변경 (Linux 기반)
    • chown :[GID] [파일/디렉토리 경로] : 파일과 디렉토리의 GID소유권을 변경  (Linux 기반)
    • chown [UID]:[GID] [파일/디렉토리 경로] : 파일과 디렉토리의 UID소유권을 지정된 계정으로, GID소유권을 지정된 그룹으로 변경  (Linux 기반)
    • chown [계정명]. [파일/디렉토리 경로] : 파일과 디렉토리의 UID소유권, GID소유권을 같은 계정으로 변경 (Unix 기반)
    • chown .[GID] [파일/디렉토리 경로] : 파일과 디렉토리의 GID소유권을 변경  (Unix 기반)
    • chown [UID].[GID] [파일/디렉토리 경로] : 파일과 디렉토리의 UID소유권을 지정된 계정으로, GID소유권을 지정된 그룹으로 변경  (Unix 기반)

 


 UMASK

 UMASK란 파일/디렉토리를 생성할 때 기본 권한을 결정하는 기준 값으로, 최고 권한에서 UMASK를 뺀 결과로 파일 / 디렉토리의 기본권한을 설정한다. 이때, 해당 계산은 symblic으로 진행된다.

디렉토리 기본 권한 계산 파일 기본 권한 계산

  디렉토리의 MAX권한은 777인 반면, 파일의 MAX권한은 666이다. 이는 파일을 기본적으로 자동 실행하지 못하게 해서 검증된 스크립트나 명령어만 실행 할 수 있도록 한다. 그래서 파일의 실행권한은 필요에 따라 개별적으로 부여한다.

 

 기본적으로 UMASK는 관리자는 022, 사용자는 002로 "/etc/profile"파일에 설정되어 있다. 이는 관리자는 UID에만 쓰기 권한을 부여해서 관리자만 사용할 수 있도록 설정하고 사용자는 UID와 GID에만 쓰기 권한을 부여함으로써 사용자와 해당 그룹만 사용할 수 있도록 설정한다.

 

 반면, 계정을 생성하면 같이 생성되는 홈디렉토리에는 기본적인 UMASK와 다른 UMASK를 사용하며, 077로 설정되어 있다. 이는 홈 디렉토리를 해당 계정만 사용하게 설정한다.

 

UMASK 확인 명령어

  • umask : 현재 적용중인 umask를 출력하는 명령어
    • umask -S : 현재 적용중인 umask를 symblic형식으로 출력하는 명령어
    • umask [ numeric 기법 권한 ] : 적용중인 umask를 일시적으로 변경 → 휘발성

'정보보안' 카테고리의 다른 글

특수 권한과 권한 제어  (0) 2023.06.19
권한 적용  (0) 2023.06.16
VLSM과 supernetting  (0) 2023.06.14
라우터의 원격접속과 서버사용  (0) 2023.06.13
Classless와 Subnetting  (0) 2023.06.12
Comments