24일차

장민우·2024년 4월 29일

리눅스 부트 프로세스


root 패스워드 분실시 재설정

  1. 재부팅 중 방향키를 눌러 부트 로더(Boot Loader)진입 후 부팅할 커널 항목 선택

  1. [e]키를 누른 후 linux16으로 시작하는 라인의 마지막에 램 디스크 초기화를 중단하는 옵션인 rd.break를 입력한 후 킵조드에서 [Ctrl+X]를 입력하여 switch_root# 쉘로 진입.

  1. 램 디스크 초기화 단계에서 루트 파일 시스템(Root FS)이 /sysroot에 읽기전용(read-only,RO)로 마운트 되어 있기 때문에 읽기쓰기(read-write,RW)로 다시 마운트. $mount -o remount,rw /sysroot

  2. Root FS를 정상 부팅과 마찬가지로 수동으로 Pivoting 진행 $chroot /sysroot
    /sysroot를 루트 디렉토리로 변경하면 다시 본 쉘로 접근 후
    sh-X.X $/passwd명령으로 패스워드 변경.

5.SELinux를 사용하면 파일마다 레이블이(label)이 부여된다. 하지만 chroot 명령을 사용하여 루트 디렉토리를 변경하게 되면 파일에 대한 레이블 정보가 전부 제거된다.
$sh-X.X $touch /.autorelabel /.autorelabel 파일을 생성하여 레이블을 자동으로 부여. 파일에 대한 레이블이 종료되면 해당 파일은 삭제되며 root패스워드가 복구된다.

  1. 재부팅을 위해 exit 2번 입력
    sh-X.X $ exit

로그관리


  • Syslog
    Syslog Daemon(rsyslogd)이 관리하는 로그
    Syslog Daemon이 선별된 로그에 대해 로그 파일에 기록
    로그 파일은 텍스트 형태로 저장됨
    로그 저장 기본 경로 : /var/log/

  • Systemd Journal Log
    systemd-journald가 관리하는 로그.
    부팅시부터 발생하는 모든 로그를 기록.
    Binary 파일 형태로 로그가 저장됨.
    로그 저장 기본 경로 : /run/log/journal/
    재부팅시 로그 데이터가 사라짐.


  • FACILITY.PRIORITY

Log Facility

기능(Facility)설명
kernKernel 메시지
userUser Level 메시지
mail메일 관련 메시지
daemon시스템 데몬 메시지
auth보안 및 인가 메시지
syslogsyslogd에 의해 내부적으로 생성된 메시지
lpr라인프린터 하위 시스템
news네트워크 뉴스 하위 시스템
uuccpUUCP 하위 시스템
cron스케줄 작업 메시지
authpriv보안 및 인가 메시지
ftpFTP 데몬 메시지
local0-local7사용자 정의 Facility
local7부팅 관련 메시지

기능 부분에 별표(*)로 표시되어 있다면 모든 기능의 로그를 의미한다.

Log Priority

Code우선순위(Priority)설명
0emerg시스템 사용불가
1alert즉시 조치를 취해야 할 상태
2crit치명적인 상태
3err, error에러 발생
4warn, warning경고 발생
5notice일반적이지만 중요
6info간단한 정보
7debug디버깅 메시지

필터에서 기능 부분 뒤의 우선순위가 지정되면 해당 우선순위뿐만 아니라, 상위의 우선순위까지 포함.

rsyslogd


syslog를 사용하여 로그를 저장하는 프로세스.

$vim /etc/rsyslog.conf

파일의 경로에 Dash(-)기호가 추가 있는 경우 로그 메시지를 바로 동기화하지 않고 메모리 버퍼에 저장 한 후, 한꺼번에 저장.

로그 작성 $logger

logger -p lpr.info "Test Log Message LPR"의 경우
info 우선순위의 lpr 기능이므로 앞서 살펴본 $vim /etc/rsyslog.conf에서 /var/log/messages에 잘 저장되는 것을 확인할 수 있다.

Journal Log


$journalctl [OPTION] [ARGUMENT]

Systemd Journal Log를 시간 순서대로 전체 조회
$ journalctl

최근 Systemd Journal Log를 특정 행 개수만큼 조회
$ journalctl -n NUMBER

우선 순위를 지정하여 Systemd Journal Log를 조회
$ journalctl -p PRIORITY

우선 순위 범위를 지정하여 Systemd Journal Log를 조회
$ journalctl -p PRIORITY..PRIORITY

최근에 발생한 Systemd Journal Log를 조회
$ journalctl -r

Systemd Journal Log를 지속해서 모니터링
$ journalctl -f

특정 시점 이후의 로그 조회
$journalctl --since DATE_TIME

특정 시점 이전의 로그 조회
$journalctl --until DATE_TIME

특정 기간 내의 로그 조회
$journalctl --since DATE_TIME --until DATE_TIME

출력 방식을 지정하여 로그 조회
$journalctl -o OUTPUT_OPTION

short : 가장 간략한 형태(Syslog와 동일한 형태)로 출력(기본값)
verbose : 로그를 자세히 출력
json : JSON 포멧으로 출력

$journalctl _PID=pid pid로 검색.
$journalctl _UID=uid uid로 검색.
$journalctl _GID=gid gid로 검색.
$journalctl _SYSTEMD_UNIT=systemd_unit 서비스의 유닛으로 검색.

Systemd Journal Log 영구 설정


Systemd Journal Log의 기본 디렉터리는 /run/log/journal/이고 재부팅시 해당 로그 데이터가 손실됨. 영구 설정을 하기 위해서는 Systemd Journal Log의 기본 디렉터리를
/var/log/journal로 변경해야 함.

  1. $ mkdir /var/log/journal
  2. $ chown root:systemd-journal /var/log/journal
  3. $ chmod 2775 /var/log/journal
  4. $ systemctl restart systemd-journald.service
  • 다시 /run/log/journal/ 로

  • Journal Log 부트 목록 확인
    $journalctl --list-boots

  • 특정 부팅에 대한 Systemd Journal Log 확인
    $journalctl -b BOOT_ID


로그 파일의 순환


$cat /etc/logrotate.conf

1. 로그파일을 순환시킬 기간에 대한 설정.
2. 순환된 로그 파일을 보관할 기간에 대한 설정.
3. 로그파일 순환 후 새로운 로그 파일을 생성.
4. 순환된 파일의 파일명 변경 옵션.
5. 순환된 파일을 압축하여 보관하는 옵션.
6. 로그 순환에 대한 추가 설정 파일이 저장된 디렉토리.

0개의 댓글