• 시스템 관리 (3)

    2021. 6. 5.

    by. 공상개발

     

    # 사용자 계정과 관련된 정보 파일

    사용자와 관련된 정보 파일
       /etc/passwd: 등록된 사용자의 계정 정보
       /etc/shadow: 사용자의 암호(password)
       /etc/group: 그룹 이름과 그룹 아이디의 매핑 정보
     
    /etc/passwd 파일의 구조
       각 사용자의 계정 정보는 다음과 같이 구성
     
       username:password:uid:gid:gecos:homedir:shell
     

    username - 사용자의 로그인 이름

    password - 암호. shadow 파일이 사용되는 경우에는 문자 ‘x’가 들어 있음.
    uid - 숫자로 된 사용자의 식별자 // uid0 ~ 65535까지의 숫자인데 다음과 같이 사용됨

       0: 슈퍼 유저(관리자) , rootuid
       1 ~ 99: 가상 사용자나 특수 목적의 예약된 사용자
       100 ~ 499: 시스템 관리자가 할당
       500 ~ : 일반 사용자(/etc/login.defs 파일에 UID_MIN, UID_MAX로 정의)

    gid - 숫자로 된 사용자의 그룹 식별자
    gecos - 사용자의 이름이나 상세 정보
    homedir - 사용자의 홈 디렉터리
    shell - 사용자가 사용하는 쉘

     

     

    # /etc/shadow 파일의 구조

    암호화된 패스워드와 패스워드 관리를 위한 정보를 저장
    각 계정별 정보는 다음과 같은 구조로 구성
       username:password:lastday:minday:maxday:warnday:inactive:expireday:reserved
     
    username - 사용자의 계정 이름
    password - 패스워드의 암호화된 문자열(‘!!’이면 lock이 걸려 있음을 뜻하고, ‘*’ 면 로그인이 금지됨)
    lastday - 최근 패스워드를 변경한 날자(1970/01/01일 , 이후 경과일 수)
    minday - 패스워드 변경일 이후 다시 변경할 수 있는 최소 일 수
    maxday - 패스워드 변경 만료일 즉, 패스워드 변경 이후 다시 변경해야 하는 최대 일 수. 999999는 변경할 필요가 없음을 의미
    warnday - 변경 만료일 이전에 경고하는 일 수. 로그인할 때 경고.
    inactive - 변경 만료일 이후 비활성화 기간으로 이 기간까지 패스워드를 변경하지 않으면 잠김 상태로 유지.
    expireday - 계정 유효 기간으로 이 기간 이후에 계정이 폐쇄됨
    reserved - 예약 필드  
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    hjw@Desktop:~/work/ch7$ sudo cat /etc/shadow
    [sudo] password for hjw: 
    root:$6$RHkKpi4RxE70KgHc$iFQlA5m8VgCVNmFrczskAGB0tOk1hO0X8OfvsI3rfhfMNfS4O5X6zJlQJoICH.UKHoiAi3iEWX1FTRpUvWkK71:18778:0:99999:7:::
    daemon:*:18667:0:99999:7:::
    bin:*:18667:0:99999:7:::
    sys:*:18667:0:99999:7:::
    sync:*:18667:0:99999:7:::
    games:*:18667:0:99999:7:::
    man:*:18667:0:99999:7:::
    lp:*:18667:0:99999:7:::
    mail:*:18667:0:99999:7:::
    news:*:18667:0:99999:7:::
     .
     .
     .
     
    cs

     

     

    # /etc/group

    그룹 이름과 아이디의 매핑
    다음과 같은 구조의 라인으로 구성됨
     
       groupname:gpassword:gid:memberlist
     
    groupname - 그룹 이름
    password - 그룹의 패스워드인데, 사용되지 않음
    gid - 그룹의 아이디
    memberlist - 그룹 구성원의 리스트
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    hjw@Desktop:~/work/ch7$ cat /etc/group
    root:x:0:
    daemon:x:1:
    bin:x:2:
    sys:x:3:
    adm:x:4:syslog,hjw
    tty:x:5:syslog
    disk:x:6:
    lp:x:7:
    mail:x:8:
    news:x:9:
    uucp:x:10:
    man:x:12:
    proxy:x:13:
     
     .
     .
     .
     
    cs

     

     

    # 사용자 계정과 관련된 정보 파일

    계정 정보를 /etc/passwd 파일과 /etc/shadow 파일로 분리해서 관리하는 이유
       /etc/passwd 파일의 접근 권한은 rw-r--r-- 여서 누구나 그 내용을 읽을 수 있으므로 여기에 패스워드를 저장하면 해킹의       위험이 있다.
       /etc/passwd 파일의 패스워드 필드에는 패스워드를 저장하지 않고 ‘x’ 문자를 저장해 둔다. 이는 실재 패스워드는/etc/shadow 파일에 있음을 나타내는 것이다.
      /etc/shadow 파일의 접근 권한은 rw------- 이므로 root만 접근할 수 있도록 되어 있어 관리자인 root만 볼 수 있다.
      패스워드를 확인하는 명령인 /usr/bin/passwd 파일은 Set-UID 필드가 설정되어 있어서 이 명령을 실행하면 프로세스의 유효 사용자 아이디가 파일의 주인인 root가 되어    /etc/shadow 파일에 접근할 수 있게 된다.
    1
    2
    3
    4
    5
    6
    7
    hjw@Desktop:~/work/ch7$ ls -/etc/passwd
    -rw-r--r-- 1 root root 2733 Mar  2 18:33 /etc/passwd
    hjw@Desktop:~/work/ch7$ ls -/usr/bin/passwd
    -rwsr-xr-1 root root 68208 May 27  2020 /usr/bin/passwd
    hjw@Desktop:~/work/ch7$ ls -/etc/shadow
    -rw-r----- 1 root shadow 1469 May 31 23:24 /etc/shadow
     
    cs

     

    /usr/bin/passwd 파일은 SetUID가 적용되어 있는 파일 중 가장 대표적인 것.

    해당 파일은 계정의 비밀번호를 변경할 수 있도록 하는 명령어 실행 파일.

    일반 사용자들도 root의 권한으로 /etc/passwd 파일을 수정 가능하도록 설정한 것이다.

     

     

    # 부팅

    부팅(Booting)

    시스템의 전원이 켜지거나 리셋 버튼이 눌리어졌을 때부터 시작해서 사용자가 시스템을 사용할 수 있는 정상 상태에 이르는 과정을 부팅(booting)이라 한다.
     

    부팅 절차
     
    Power On 혹은 Reset
    ==> BIOS 혹은 UEFI 동작(메모리 검사, 장치 검사 및 초기화)
    ==> MBR 혹은 GPT에 있는 Boot Loader 혹은 GRUB 로딩 및 실행
    ==> Boot Loader 혹은 GRUB에 의한 운영체제 커널 부팅
    ==> 커널 초기화
    ==> 프로세스 1번(systemd 혹은 init) 생성
    ==> systemd에 의한 사용자 레벨 초기화
     

    MBR(Master Boot Record)과 GPT(GUID Partition Table)

    MBR: 2TB까지의 디스크에서만 사용 가능하고 4개의 primary partition만 가질 수 있다.
    GPT: 2TB 이상의 디스크에서 사용 가능하고 파티션 수도 무제한이다. CRC를 사용해서 오류 정보를 저장하고 복구한다.


    BIOS(Basic Input/Output System)와 UEFI(Unified Extended Firmware Interface)

    하드웨어를 검사하고 초기화하는 펌웨어 소프트웨어(Firmware Software)를 말한다. 부팅 과정에서 최초로 실행된다.
    디스크나 다른 저장 장치에 있는 부팅 소프트웨어를 가져와 실행시킨다.
    UEFI는 2TB 이상의 디스크에서 부팅할 수 있다
     

    Boot Loader 혹은 GRUB(GRand Unified Bootloader)

    디스크나 다른 저장장치에 있는 운영체제를 가져와 실행시키는 부팅 소프트웨어이다.
    GRUB은 dual booting을 지원한다.
     

    운영체제 커널 부팅

    운영체제 커널 이미지는 보통 두 부분으로 구성된다.
    앞부분은 실행 가능 코드이고 뒷부분은 커널 이미지의 압축 코드이다.
    커널이 부팅되면 먼저 앞부분이 실행되어 뒷부분의 입축을 풀어서 메모리에 설치한 다음에 실행한다.
    커널 부팅이 완료되면 최초의 사용자 레벨 프로세스(프로세스 번호 1번)를 생성해서 systemd를 실행한다. 

     

     

    # Systemd의 시스템 및 서비스 관리

    systemd
      프로세스 번호 1번으로 커널 부팅 이후에 최초로 생성되는 사용자 레벨 프로세스
      기존 Unix나 Linux의 init의 기능과 기타 시스템 관리 기능을 수행한다.
      사용자 레벨 부팅, 서비스 관리, 서비스 프로세스 관리, cgroup을 이용한 프로세스 자원 관리

    아래의 코드를 보면 /sbin/init/lib/systemd/systemd 파일에 링크되어 있음을 확인할 수 있다.

    1
    2
    3
    hjw@Desktop:~/work/ch7$ ls -/sbin/init
    lrwxrwxrwx 1 root root 20 Mar 17 14:36 /sbin/init -> /lib/systemd/systemd
     
    cs

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    // systemd 설정에 관련된 파일들
    hjw@Desktop:~/work/ch7$ ls -/etc/systemd
    total 48
    -rw-r--r--  1 root root 1042 Apr 22  2020 journald.conf
    -rw-r--r--  1 root root 1042 Apr 22  2020 logind.conf
    drwxr-xr-x  2 root root 4096 Apr 22  2020 network
    -rw-r--r--  1 root root  584 Apr  1  2020 networkd.conf
    -rw-r--r--  1 root root  529 Apr  1  2020 pstore.conf
    -rw-r--r--  1 root root  642 Jan  6 12:47 resolved.conf
    -rw-r--r--  1 root root  790 Apr  1  2020 sleep.conf
    drwxr-xr-20 root root 4096 Jun  4 03:15 system
    -rw-r--r--  1 root root 1759 Apr 22  2020 system.conf
    -rw-r--r--  1 root root  604 Apr 22  2020 timesyncd.conf
    drwxr-xr-x  4 root root 4096 Mar  2 18:28 user
    -rw-r--r--  1 root root 1185 Apr 22  2020 user.conf
     
    cs

     

     

    # 시스템의 Run Level or Target

    System의 Run level 혹은 Target
       시스템의 동작 레벨을 결정하는 것으로 기존의 init에서는 Run Level로 정의하였으나 systemd에서는 동작 모드 즉, Target으로 정의하고 있다.
     

    싱글 유저 모드(rescure): 기존의 레벨 1
       단일 사용자 모드로 한 사용자만 콘솔로 로그인할 수 있는 모드이다.
     
       systemctl rescure
     

    멀티 유저 모드(multi-user): 기존의 레벨 2, 3, 4
       다중 사용자 모드로 여러 사용자가 로그인할 수 있으나 그래픽 모드가 아니라 텍스트 모드로 동작한다.
     
       systemctl isolate multi-user.target
       혹은
       systemctl isolate runlevel3.target
     

    그래픽(graphic) 모드: 기존의 레벨 5, 6
       여러 사용자가 로그인할 수 있고, 그래픽 인터페이스를 제공한다.
     
       systemctl isolate graphical.target
       혹은
       systemctl isolate runlevel5.target


    동작 모드의 디폴트 값
       isolate 명령은 일시적으로 그 모드로 동작하게 하는 것이고 다시 부팅하면 디폴트 값으로 설정되어 동작한다.
       디폴트 값 설정 방법은 다음과 같다.(graphical 모드를 디폴트로 할 경우)
     
       systemctl set-default graphical.target
     
       설정된 디폴트 값 보기
     
       systemctl get-default
     

    시스템 동작에 관련된 명령들
    systemctl poweroff # Shutdown처리 후 Power-Off처리
    systemctl emergency # Rescue와 유사하지만 root 파일 시스템만
    # 읽기 전용으로 마운트)
    systemctl halt # Shutdown처리 후 Halt처리
    systemctl reboot # Shutdown처리 후 리부팅 처리
    systemctl kexec # kexec를 통해서 리부팅
    systemctl suspend # 시스템 정지

     

     

    'Computer Science > Linux' 카테고리의 다른 글

    예약 작업 처리  (0) 2021.06.06
    네트워크 설정과 관리  (0) 2021.06.05
    시스템 관리 (2)  (0) 2021.06.01
    시스템 프로그래밍 C.2  (0) 2021.05.28
    시스템 프로그래밍 C.1  (0) 2021.05.28

    댓글