Code States/TIL

[0310] 리눅스 운영체제 - 관리자로서의 리눅스

ki1111m2 2023. 3. 10. 13:38

학습 목표

관리자로서의 리눅스 ~ 자동화

  • 시스템 관리자가 하는 일을 이해할 수 있다.
  • 사용자 및 루트 권한에 대해 이해하고, 사용자 및 그룹 관리를 할 수있다.
  • 파일의 권한을 변경하고 관리할 수 있다.
  • 프로그램과 프로세스의 차이를 이해하고, 프로세스를 확인/종료할 수 있다.
  • 백그라운드 프로세스와 서비스를 이해하고, 관리할 수 있다.
  • cron 및 bash 스크립트를 이용해서 자동화를 할 수 있다.

시스템 관리자가 하는 일


  • 접근 제어
    • 관리자 권한을 이용해 사용자를 관리하고, 시스템에 속한 사용자가 암호를 잊거나 키 쌍(key pair)을 분실하였을 때를 대비
    • 사용자 및 그룹 별로 적절한 권한 제공
    • 일반 사용자가 서비스를 마음대로 실행 또는 종료하지 못하도록 관리
    • 접근해서는 안되는 파일에 대해 접근 제어
  • 업무 자동화
    • 시스템 관리자의 핵심 업무 중 하나
    • 반복적인 작업은 자동화를 통해 수동으로 발생할 수 있는 실수 최소화
  • 재난 대비
    • 단일 시스템은 언제든 망가질 수 있고 빈벊게 재난이 발생하므로, 이에 대비하여 데이터 백업 및 복구가 가능해야 함
  • 애플리케이션 배포 및 관리
    • 서버를 통해 제공되는 애플리케이션이 지속적으로 새 버전이 배포되는지, 문제는 없는지 확인하고, 이에 필요한 환경 구축
    • 운영체제의 보안 패치, 런타임의 버전 관리도 포함
  • 모니터링
    • 서버 자원(cpu, 디스크 사용량 등)의 여유를 감시하고, 로그 파일을 수집/ 분석함
    • 해커의 접근이나 보안 취약점을 발견하고 감사하는 작업 포함
  • 기타
    • 내부 문서 관리
    • 접근 정책 설정
    • 클라우드 서비스의 요금 관리
    • 하드웨어 추가

접근 제어의 기본


  • 표준 접근 제어 모델
    • 파일은 소유자가 있다. 그러나 소유했다고 모든 권한을 갖는 것은 아니다.
    • 파일은 생성한 사람이 소유한다.
    • 관리자만 할 수 있는 일이 있다.
  • sudo cat /etc/passwd
    • 어떤 사용자와 그룹이 있는지 확인
    • 출력 결과는 각 필드가 콜론으로 구분되어 있음
    • 첫 필드는 사용자 이름, 세 번째 필드는 uid(루트 계정의 uid는 항상 0)
    • 파일명과 달리 비밀번호를 포함하지 않음(비밀번호는 /etc/shadow 파일에 포함되어 있으며 문자열은 암호화 되어있음)

루트 권한


  • sudo
    • 사용자 환경에서 루트 권한을 일시적으로 획득하는 명령어
  • 루트 권한으로만 가능한 작업
    • 하드웨어 장치 추가 생성 (장치 파일 생성)
    • 시스템 시간 설정
    • hostname(네트워크 이름) 설정
    • 네트워크 인터페이스 설정
    • 1024번 이하의 포트 오픈
    • 시스템 종료
  • 루트 계정 로그인
    • su: substitute user identity
    • 안전하지 못하므로 로그인 대신 sudo 사용 추천
      • 장점
        • 명령 로그가 기록됨
        • 사용자들은 무제한의 루트 권한 없이 특정 작업 수행 가능
        • 사용자의 비밀번호를 이용하므로 사용자가 루트 비밀번호를 몰라도 됨
        • su를 사용하거나, 루트로 로그인하는 것보다 빠름
        • 루트 암호를 변경하지 않고도, 부여된 특권을 취소할 수 있음
        • 루트 권한을 갖는 모든 사용자의 목록을 관리할 수 있음(sudoers 파일)
      • 단점
        • sudo 사용자 개인 계정의 보안이 뚫리면, 루트 계정 자체가 뚫린 것과 마찬가지
        • sudo 명령 기록은 sudo를 이용해 지울 수 있음(그러나 이러한 시도를 했다는 것을 명령어 로그를 통해 알 수 있음)

환경 변수


  • 각기 다른 컴퓨터 또는 사용자마다 별도로 가질 수 있는 고유한 정보를 담는데 사용하는 변수
  • 필요한 상황
    • 서비스를 운영하는 상황이 달라질 때 사용(개발 환경일 때, 테스트 환경일 때, 실제 운영될 때 등)
    • 인증 정보(id, 비밀번호)를 포함하고 있을 때 이를 분리하려는 용도로 사용
  • env 명령어를 통해 확인 가능
    • SHELL: 어떤 종류의 쉘을 사용할지 선택하는 환경 변수
    • HOME: 홈 디렉토리가 무엇인지 알려주는 환경 변수
    • PATH: 어디서든 해당 디렉토리에 있는 실행 파일을 실행할 수 있게 만들어주는 환경 변수
  • export: 환경 변수 임시 적용
    • export 환경변수명=”내용”
    • 지금 열려있는 터미널에 한정됨

Read, Write, Execute 권한


  • drwxrwxrwx
    • d(파일인지 아닌지) / rwx(소유자의 권한) / rwx(사용자의 권한) / rwx(나머지의 권한)
    • d: directory
    • r: read permission
    • w: write permission
    • x: excute permission
  • user
    • 파일의 소유자
  • grop
    • 그룹에 속한 모든 유저는 파일에 대한 동일한 그룹 액세스 권한을 가짐
  • other
    • 파일에 대한 액세스 권한이 있는 다른 유저, 파일을 만들지 않은 다른 모든 유저
    • other 권한을 설정하면, 해당 권한을 global 권한 설정이라고 볼 수 있음
  • chmod: 권한 변경 명령어
    • symbolic method
      • u/g/o/a, +/-/=, r/w/x
        • chmod g-r filename #filename에 대하여 group의 read 권한 제거
    • absolute method
      • read = 4, write = 2, excure = 1
        • chmode 744 filename #filename에 대하여 user는 rwx(4+2+1), gruop은 r(4+0+0), other은 r(4+0+0)의 권한을 가짐