Devops 4일차 - 관리자로서의 리눅스

문한성·2023년 3월 10일
0

부트캠프

목록 보기
5/123
post-thumbnail

시스템 관리자가 해야하는일

시스템 관리자는 컴퓨터 시스템과 네트워크를 유지보수하고 관리하는 업무를 맡습니다. 이는 하드웨어, 소프트웨어, 네트워크 및 데이터 보안에 대한 책임이 있습니다.

  • 시스템 및 네트워크 유지보수 : 시스템 관리자는 서버, 컴퓨터, 스토리지, 네트워크 및 기타 하드웨어와 소프트웨어를 주기적으로 검사하여 문제를 해결하고 시스템이 원활하게 작동하도록 유지합니다.
  • 데이터 백업 및 복원 : 시스템 관리자는 중요한 데이터를 안전하게 백업하고 필요한 경우 복원합니다.
  • 보안 및 바이러스 방지 : 시스템 관리자는 네트워크와 시스템 보안을 강화하고 악성 코드와 바이러스에 대한 방어책을 마련하여 데이터를 안전하게 보호합니다.
  • 소프트웨어 설치 및 업그레이드 : 시스템 관리자는 필요한 소프트웨어를 설치하고 업그레이드하여 최신 기술을 유지합니다.
  • 사용자 지원 : 시스템 관리자는 사용자가 컴퓨터 및 소프트웨어를 쉽게 사용할 수 있도록 지원합니다. 사용자 지원은 문제 해결, 교육 및 기술 지원 등을 포함합니다.
  • 네트워크 및 서버 모니터링 : 시스템 관리자는 네트워크 및 서버 상태를 모니터링하여 장애나 문제를 조기에 발견하고 해결합니다.
  • 기술 지원 : 시스템 관리자는 회사 내부의 기술적 문제를 해결하고 새로운 기술 도입에 대한 조언을 제공합니다.
  • 문서화 : 시스템 관리자는 시스템 및 네트워크 구성, 보안 및 소프트웨어 설치에 대한 문서화 작업을 수행합니다.
  • 비즈니스 요구사항 충족 : 시스템 관리자는 회사의 비즈니스 요구사항을 충족시키기 위해 IT 시스템 및 서비스를 구성합니다.
  • 예방적 유지보수: 시스템 관리자는 예방적인 유지보수 작업을 수행하여 시스템 문제가 발생하지 않도록 노력합니다. 이는 시스템 및 네트워크 성능 최적화, 하드웨어 및 소프트웨어 업그레이드, 보안 패치 및 업데이트 등을 포함합니다.
  • 프로젝트 관리: 시스템 관리자는 IT 프로젝트를 관리하고 진행 상황을 모니터링하여 프로젝트가 예산과 일정을 준수하도록 합니다.
  • 법적 준수: 시스템 관리자는 데이터 보안 및 개인정보 보호 관련 법적 요구사항을 준수합니다.
  • 제품 및 서비스 평가: 시스템 관리자는 새로운 제품 및 서비스를 평가하고 회사의 비즈니스 요구사항에 맞게 구성합니다.
  • 교육 및 훈련: 시스템 관리자는 사용자 및 직원들에게 IT 관련 교육과 훈련을 제공하여 기술 역량을 강화시킵니다.
  • 팀 관리: 시스템 관리자는 IT 팀의 일정과 업무 분배를 관리하고, 팀원들의 역량 개발 및 성과 평가를 수행합니다.

접근 제어의 기본

리눅스 기반의 운영체제 중 우분투에서는, 사용자가 절대 관리자 권한에 접근할 수 없도록 구분해두었습니다. 그러나 새로운 프로그램을 설치하거나 변경 또는 삭제할 때에 관리자 권한이 반드시 필요하기 때문에, 특정 명령어를 입력하는 것으로 잠시 관리자 권한을 빌려올 수 있습니다.

리눅스의 표준 접근 제어 모델

  • 파일(파일 및 디렉터리)은 소유자(owner)가 있다. 그러나 소유했다고 모든 권한을 갖는 것은 아니다.
  • 파일은 생성한 사람이 소유한다.
  • 관리자(root)만 할 수 있는 일이 있다.

whoami : 사용자 확인

$ whoami
  • 현제 로그인된 사용자를 확인

파일 및 디렉토리의 소유자(사용자) 및 그룹

  • 출력 결과가 ":" 으로 구분되어 있다. 첫번째가 사용자이름, 세번째에 있는 숫자가 uid이다.

  • 루트의 계정의 uid는 항상 0이다.

  • /etc/passwd/etc/shadow 의 차이점

    • etc/passwd 파일은 사용자 계정 정보를 담고 있는 파일입니다. 이 파일은 모든 사용자가 읽을 수 있도록 설정되어 있으며, 사용자의 계정 이름, 홈 디렉토리 경로, 셸 등의 정보를 포함합니다.
    • 반면에 /etc/shadow 파일은 사용자의 암호화된 비밀번호 정보를 담고 있는 파일입니다. 이 파일은 root 권한으로만 읽을 수 있도록 설정되어 있으며, 사용자의 암호화된 비밀번호, 비밀번호 변경 날짜, 계정 유효 기간 등의 정보를 포함합니다.
$ id
uid=1000(hansung) gid=1000(hansung) 그룹들=1000(hansung),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),120(lpadmin),132(lxd),133(sambashare)
  • gid : 그룹에는 여러 사용자가 있을 수 있으며 여러그룹에 속해 있을 수도 있다.
    • 사용자를 생성할 때 마다 같은이름의 그룹도 함께 생성

루트 권한

**루트(root) 권한: 관리자 권한**

  • 리눅스에서 루트(root) 권한은 시스템 전반에 대한 완전한 액세스 권한을 의미합니다. 루트 권한은 모든 파일, 디렉토리 및 시스템 자원에 대한 변경 및 액세스 권한을 부여합니다.
  • 리눅스에서는 일반 사용자 계정과 루트 계정이 분리되어 있습니다. 보안상의 이유로 루트 권한을 사용자가 지속적으로 가지고 있으면 안되며, 필요한 경우에만 일시적으로 루트 권한을 부여하여 사용해야 합니다.
  • 루트 권한을 부여하기 위해서는 "sudo" 명령어를 사용하거나 "su" 명령어를 통해 일시적으로 루트 계정으로 전환할 수 있습니다. 그러나 이러한 명령어를 사용할 때는 주의가 필요합니다. 실수로 루트 권한으로 잘못된 작업을 수행할 경우 시스템에 치명적인 영향을 끼칠 수 있습니다. 따라서, 루트 권한을 사용할 때는 반드시 신중하게 작업해야 합니다.

루트 권한으로만 가능한 작업

  • 하드웨어 장치 추가 생성 (장치 파일 생성)
  • 시스템 시간 설정
  • hostname(네트워크 이름) 설정
  • 네트워크 인터페이스 설정
  • 1024번 이하의 포트 오픈
  • 시스템 종료

루트 계정으로서의 로그인과 su명령어

  • 루트도 root란 아이디를 가진 사용자이다, su라는 명령어를 통해 로그인 할 수 있다.
  • 아무런 옵션이 없이 su만 입력하면 루트 로그인을 시도하나 우분투에서 비활성화 되어있다.

sudo명령어의 단점과 장점

  • 장점
    • 보안 : sudo를 사용하면 슈퍼유저 권한을 일시적으로 얻을 수 있으므로 일반 사용자가 루트 권한으로 시스템을 관리하는 것보다 보안이 더 강화됩니다.
    • 추적 가능성 : sudo를 사용하면 각각의 명령을 수행한 사용자와 실행 시간 등을 로그로 남길 수 있으므로 추적 가능성이 높아집니다. 이는 시스템 보안 강화에 큰 도움을 줍니다.
    • 운영 체제 호환성 : sudo는 다양한 리눅스 배포판에서 일관된 방식으로 작동하므로 이식성이 높습니다. 따라서 서버나 클라이언트 모두에서 동일한 명령을 사용하여 일관된 결과를 얻을 수 있습니다.
  • 단점
    • 실수로 루트 권한 실행 sudo는 사용자가 일시적으로 슈퍼유저 권한을 얻을 수 있게 해주지만, 사용자가 명령을 잘못 실행하면 시스템 전체에 영향을 미칠 수 있습니다.
    • 사용자 권한 부여 sudo를 사용하려면 사용자에게 sudo 권한을 부여해야 합니다. 이것은 시스템 관리자가 추가적인 관리 작업을 수행해야 한다는 것을 의미합니다.
    • 사용자 보안이 뚫리면 루트보안도 뚫리는 것과 같다.

환경변수

리눅스에서의 환경 변수

$ env
  • 환경 변수 확인 명령어
  • SHELL : 어떤 종류의 쉘(대화형 인터페이스)을 사용할지 선택하는 환경 변수
  • HOME : 홈 디렉토리가 무엇인지 알려주는 환경 변수
  • PATH : 어디서든 해당 디렉토리에 있는 실행 파일을 실행할 수 있게 만들어주는 환경 변수

export: 환경 변수를 임시로 적용하기

$ export urclass="is good"
  • export를 통해 새로운 환경변수 추가가능 - 등호 앞뒤에는 공백금지!
  • 환경변수 설정은 열려있는 터미널에 한정된다. 새로운 터미널을 열면 초기화되어있다.

환경변수의 필요성

  • 서비스를 운영하는 상황이 달라질 때 사용
  • 테스트 환경과 운영 환경을 분리 가능
  • 만든 서비스가 인증정보를 포함하고 있을 때, 이를 분리하기위해서 사용

Read, Write, Excute 권한

  • 첫 시작에서 나올 수 있는 d와 -이 있다 d는 폴더, -는 폴더가 아님을 나타낸다
  • r, w, x는 각각 read permission, write permission, execute permission으로 읽기 권한, 쓰기 권한, 실행 권한이다.

user, group, and other

user : user는 파일의 소유자(owner)입니다. 기본적으로 파일을 만든 사람이 소유자가 됩니다. 따라서 user를 소유자라고 하기도 합니다.

group : group에는 여러 user가 포함될 수 있습니다. 그룹에 속한 모든 user는 파일에 대한 동일한 group 액세스 권한을 갖습니다. 많은 사람이 파일에 액세스해야 하는 프로젝트가 있다고 가정합니다. 각 user에게 일일이 권한을 할당하는 대신에 모든 user를 group에 추가하고, 파일에 group 권한을 할당할 수 있습니다.

other : 파일에 대한 액세스 권한이 있는 다른 user입니다. 파일을 만들지 않은 다른 모든 user를 의미합니다. 따라서 other 권한을 설정하면, 해당 권한을 global 권한 설정이라고 볼 수도 있습니다.

chmod : 권한을 변경하는 명령어

리눅스에서 파일 및 디렉토리의 권한을 변경하는 데 사용됩니다.

다음은 chmod 명령어의 일반적인 구문입니다.

chmod [옵션] [모드] [파일명]

여기서, [옵션]은 명령어의 동작을 세부적으로 지정하는 데 사용되며, [모드]는 권한을 변경하는 데 사용되는 숫자 또는 문자열입니다. [파일명]은 권한을 변경할 파일이나 디렉토리의 이름입니다.

다음은 chmod 명령어의 예시입니다.

  • chmod 755 file.txt
    • file.txt 파일에 대한 권한을 rwxr-xr-x(소유자에게 읽기, 쓰기, 실행 권한을 부여하고, 그룹 및 다른 사용자에게는 읽기, 실행 권한만 부여)로 변경합니다.
  • chmod +x script.sh
    • script.sh 파일에 대한 실행 권한을 부여합니다. 즉, 파일을 실행할 수 있습니다.
  • chmod -r directory
    • directory 디렉토리와 그 하위 파일 및 디렉토리의 모든 권한을 제거합니다. 따라서 해당 디렉토리와 그 내용물을 읽거나 쓰거나 실행할 수 없게 됩니다.
  • chmod o+r file.txt
    • file.txt 파일에 대해 다른 사용자에게 읽기 권한을 추가합니다. 따라서 파일을 읽을 수 있는 권한이 있는 모든 사용자에게 파일이 열립니다.

옵션:

  • c: 권한 변경 결과를 표시합니다.
  • f: 권한 변경 결과를 표시하지 않습니다.
  • v: 권한 변경 작업을 상세하게 표시합니다.

모드:

  • 숫자 모드: 0 ~ 7까지의 3자리 숫자로 표현되며, 소유자/그룹/기타 사용자의 권한을 각각 지정합니다. 예를 들어, 755 모드는 소유자에게는 읽기, 쓰기, 실행 권한을 부여하고, 그룹 및 다른 사용자에게는 읽기, 실행 권한만 부여합니다.
  • 문자 모드: u, g, o, a와 +, -, = 기호를 사용하여 권한을 변경합니다. u는 소유자, g는 그룹, o는 다른 사용자, a는 모든 사용자를 나타냅니다. +는 권한을 추가, -는 권한을 제거, =는 권한을 설정합니다. 예를 들어, u+x는 소유자에게 실행 권한을 추가하고, o-r는 다른 사용자로부터 읽기 권한을 제거합니다.

따라서, chmod 명령어의 일반적인 구문은 다음과 같이 표현할 수 있습니다.

chmod [옵션] [모드] [파일명]

예를 들어, 파일명이 "file.txt"인 파일에 대해 모든 사용자에게 읽기, 쓰기, 실행 권한을 부여하는 숫자 모드로 변경하려면 다음과 같이 입력합니다.

chmod 777 file.txt

만약 위의 예시에서 -c 옵션을 추가하면, 권한 변경 결과가 표시됩니다.

chmod -c 777 file.txt
changed mode of 'file.txt' to 0777 (rwxrwxrwx)

문자 모드의 사용 예시

  • 파일에 대한 권한 변경
  • 소유자에게 실행 권한을 추가하고, 그룹 및 다른 사용자에게는 권한을 변경하지 않음
chmod u+x file.txt
  • 그룹 및 다른 사용자로부터 쓰기 권한을 제거
chmod go-w file.txt
  • 모든 사용자에게 읽기 권한만 부여
chmod a=r file.txt
  • 디렉토리에 대한 권한 변경
  • 소유자, 그룹, 다른 사용자 모두에게 실행 권한을 추가
chmod a+x directory/
  • 소유자의 권한을 변경하고, 그룹 및 다른 사용자의 권한은 변경하지 않음
chmod u=rwx,go= directory/
  • 그룹의 권한을 변경하고, 소유자 및 다른 사용자의 권한은 변경하지 않음
chmod g+w directory/
profile
기록하고 공유하려고 노력하는 DevOps 엔지니어

0개의 댓글