devops

리눅스 Read, Write, Execute / 시스템 모니터링 uname, top, ifconfig, lsof, netstat 본문

DevOps/OS

리눅스 Read, Write, Execute / 시스템 모니터링 uname, top, ifconfig, lsof, netstat

vata500 2022. 4. 22. 17:02
반응형

리눅스 권한

리눅스 파일권한은 4개로 등분되어있다. 

1번은 파일의 종류를 나타내는 것으로 Directory, Regular, Symbolic link 이 세 가지를 나타낸다.

2번은 User의 권한, 3번은 Group의 권한, 4번은 파일에 대한 모든 유저의 권한이다. 세부 권한은 위에 보이는 것처럼 rwx로 나타내는데 r은 read로 읽기, w는 write로 쓰기, x는 excute 실행이다.

내 우분투 /에서 ls -l 로 확인한 캡쳐

위처럼 모든 파일과 디렉토리엔 저렇게 파일의 종류, 유저 혹은 그룹의 세부 권한이 나타난다.

권한을 변경하는 방법

파일 혹은 폴더의 읽기, 쓰기, 실행 권한을 변경하려면 chmod 명령어를 사용한다. 위 자료처럼, rwx를 3bit로 해석하여 숫자 3자리로 권한을 표시하는 Absolute Form과 +, - = 액세서 유형을 표기해서 변경하는 Symbolic Method가 있다.

Absolute Form 활용법

위처럼 read, write, execute를 숫자로 치환하여 계산할 수 있다. 예를 들어 test.txt파일의 user는 읽기(r)와 쓰기(w)만, group은 쓰기(w)만, other는 실행(x)만 가능하게 하고 싶다면 다음 명령어를 사용한다.

chmod 621 test.txt

Symbolic Method 활용법

test.txt의 User에게 실행(x), 읽기(r), 쓰기(w) 권한을 주고싶다면 아래와 같이 명령어를 사용한다.

chomod a+rwx test.txt

개인적으로  Symbolic Method가 더 편할 것같다. Absolute Form은 생각을 한 번더 거쳐야한다면, Symbolic은 r,w,x만 알면 쉽게 권한 변경이 가능해서다.


리눅스에서 가장 요구되는 스킬? 중 하나는 '모니터링'이라고 한다. 모니터링을 잘하기 위해서 어떤 명령어를 통해 정보를 확인해야하는지 알아본다.

uname : 시스템과 커널의 정보

uname -a 를 치면, 커널 이름, 노드 이름, 커널 릴리즈, 커널 버전, 하드웨어 플랫폼, 운영체제가 나타난다. uname만 치면 os만 나타난다.

top : 운영체제 작업 내역 모니터링

현재 OS의 상태를 나타낸다. 상단부에는 전체의 요약이 있으며 아래에는 각 프로세스마다 구체적인 내용을 포함하고 있다.

요약영역은 전체 프로세스가 OS에 대해서 리소스를 어느정도 차지하고 있는지를 알려준다. 요약 영역에 나타나는 대표적인 내용은 시간, 유저, 로드 애버리지(Load Average), 태스크(Tasks), CPU, 메모리(memory)다.

- 로드 애버리지(Load Average) : 해당 영역은 CPU가 수행하는 작업의 양을 순서대로 1분, 5분, 15분 간격의 평균값으로 표시한다.

- 태스크(Task) : 현재 프로세스들의 상태를 나타내주는 영역으로, OS에 따라 Process라고도 한다.

- CPU 사용량 : CPU가 어떻게 사용되고 있는지 그 사용률을 보여주는 영역이다. 유저 영역, 커널 여역, 우선순위 설정 등, 각 영역 값의 총 합은 100%이다.

- 메모리 사용량 : 첫번째 줄은 RAM의 메모리 영역으로 Mem이라 표시되어있는 부분이며, 두번째 줄은 디스크를 메모리처럼 이용하는 Swap 메모리 영역이다. 일반적으로 Mem의 사용량이 가득 찼을때 Swap 메모리 영역을 사용한다.

ifconfig : 네트워크 기본 모니터링

ifconfig는 따로 패키지를 설치해야한다. net-tools를 설치해서 실행해본다.

sudo apt install net-tools

ifconfig는 활성화된 네트워크의 세부 사항을 표시한다. 단, 비활성화된 네트워크는 나타나지 않으니 참고.

  • enp0s3 : 네트워크 인터페이스
  • flags : 네트워크 카드의 상태 표시
  • mtu : 네트워크 최대 전송 단위(Maximum Transfer Unit)
  • inet : 네트워크에 할당된 IP 주소
  • netmask : 네트워크에 할당된 넷마스크 주소
  • broadcast : 네트워크에 할당된 브로드캐스트 주소
  • inet6 : 네트워크에 할당된 IPv6 주소
  • prefixlen : IP 주소에서 서브 넷 마스크로 사용될 비트 수
  • scopeid : IPv6의 범위. LOOPBACK / LINKLOCAL / SITELOCAL / COMPATv4 / GLOBAL
  • ether : 네트워크 인터페이스의 하드웨어 주소
  • RX packets : 받은 패킷 정보
  • TX packets : 보낸 패킷 정보
  • collision : 충돌된 패킷 수
  • Interrupt : 네트워크 인터페이스가 사용하는 인터럽트 번호

lsof : 열린 파일 목록 출력

list open files의 약자로, 시스템에 열려있는 모든 파일에 대한 정보를 출력한다.

COMMAND : 실행 명령어
PID : 프로세스 ID
USER : 실행한 사용자
FD: File Descriptor, 파일의 종류.
cwd : current working directory
rtd : root directory
mem : memory-mapped file
txt : program text (code and data)
TYPE : 파일 종류
DIR : 디렉토리
REG : Regular File
CHR : Character Special File
unix : UNIX domain socket
DEVICE : 장치 번호
SIZE/OFF: 파일의 크기나 오프셋
NODE : 노드 번호
NAME : 파일 경로 및 파일 이름

netstat : 네트워크 상태 모니터링

network statistics 의 약자로 현재 시스템에 연결된 네트워크 상태, 라우팅 테이블, 인터페이스 상태 등을 볼 수 있습니다.

-n : IP, Port번호를 보여줍니다.
-a : 모든 네트워크상태를 보여줍니다.
-t : TCP 프로토콜만 보여줍니다.
-u : UDP 프로토콜만 보여줍니다.
-r : 라우팅 테이블 출력
-s : 프로토콜 별(IP, ICMP, TCP, UDP 등)로 통계를 보여줍니다.
-l : 대기중인 소켓 목록을 보여줍니다.

반응형
Comments