2.4 서버를 구축할 때 알아야 할 필수 개념과 명령어

jj·2021년 1월 10일
0

학습 흐름
4.1 리눅스 운영 전에 알아야 할 개념
4.2 리눅스 기본 명령어
4.3 사용자 관리와 파일 속성
4.4 리눅스 관리자를 위한 명령어
4.5 네트워크 관련 설정과 명령어
4.6 파이프, 필터, 리디렉션
4.7 프로세스, 데몬, 서비스
4.8 서비스와 소켓
4.9 응급 복구
4.10 GRUB 부트로더
4.11 간단한 커널 컴파일

2.4.1 리눅스 운영 전에 알아야 할 개념

대소문자 및 사용자 구분

  • 대소문자는 구분된다
  • 일반 사용자가 관리자(root) 권한을 얻으려면 su 명령 실행후 root암호를 입력해야한다
    • root 사용자와 일반 사용자의 구분은 프롬프트의 표식을 보면 된다
      • #: root
      • $: 일반 사용자

시작/종료

 shutdown -P +10 -> 10분 후 종료 (P:poweroff)
 shutdown -r 22:00 -> 오후 10시에 재부팅 (r:reboot)
 shutdown -c -> 예약된 셧다운 취소 (c:cancel)
 shutdown -k +15 -> 현재 접속한 사용자에게 15분 후 종료된다는 메세지를 보내지만 실제로는 종료되지 않음
 

시스템 재부팅

 shutdown -r now / reboot/ init6

로그아웃

logout/exit

가상 콘솔

- 가상 모니터라고 생각하자
- centos는 총 6개의 가상 콘솔을 제공. 컴퓨터 한대에 모니터 6개가 연결된 것과 같은 효과
예 tty2: 2번째 가상 콘솔

런레벨

- 런레벨: 시스템을 종료하는 init명령 뒤에 붙는 숫자
      시스템이 가동되는 방법 
- init0: 지금 즉시 런레벨0번으로 시스템 전환
  - 런레벨0은 종료모드 이므로, 즉 *지금 시스템을 종료하라*라는 명령
- init6: 지금 즉시 재부팅하라

에디터 사용

- 메모장 같은 기능
- gedit 파일이름

마운트, CD/DVD/USB의 활용

- 마운트: 리눅스에서 하드디스크의 파티션, CD/DVD/USB 메모리 등을 사용하려면 지정한 위치에 연결해야한다
       이렇게 물리적인 장치를 특정한 위치(대부분 폴더)에 연결시키는 과정
- mkdir /media/cdrom -> cd/dvd를 mount할 디렉터리 생성
- mount /dev/cdrom media/cdrom -> cd/dvd mount
- mkdir /media/usb -> usb를 mount할 디렉터리 생성
- mount /dev/sdb1 /media/usb -> usb memory mount
- unmount /media/cdrom -> unmount

2.4.3 사용자 관리와 파일 속성

사용자와 그룹

 - 리눅스는 다중이용자 시스템
 - 모든 사용자는 하나 이상의 그룹에 소속되어있어야 한다 (예. 데이터팀 소속 김나나 대리)
 - /etc/passwd 파일 확인
 - 사용자 이름: 암호: 사용자 ID: 사용자가 소속된 그룹 ID: 전체 이름: 홈 디렉터리: 기본 셸
   예. root:x:0:0:root:/root:/bin/bash
 - 암호가 x 로 표시된 것은 /etc/shadow 파일에 비밀번호가 지정되어있다는 의미
 - /etc/group
 - 그룹이름: 비밀번호: 그룹 ID: 그룹에 속한 사용자 이름
   예. root:x:0:
 - 마지막 그룹에 속한 사용자 이름은 참조로 사용됨
   - 즉, 해당 부분에 아무것도 없다고 해서 그룹에 소속된 사용자가 반드시 없다는 뜻은 아니다

파일과 디렉터리의 소유권과 허가권

파일유형:
- 파일이 어떤 종류인지를 나타낸다
     - d: directory
     - '-': 일반적인 경우
     - b: block device (hdd, cd/dvd와 같은 저장장치)
     - c: character device (마우스,키보드 등의 입출력 장치)
     - l: link (윈도우의 바로가기 아이콘과 비슷한 개념. 이때 실제 파일은 다른곳에 존재한다)
파일 허가권:

      - 3개씩 끊어서 인식
      - 예. 754 = rwxr-xr-- = 소유자는 읽/쓰/실행 가능& 그룹은 읽/쓰 &그 외 사용자는 읽기만 가능
      - 디렉터리의 경우, 해당 디렉터리로 이동하려면 반드시 실행권한(x)가 있어야한다.
      - 파일 허가권 변경
        - chmod 777 sample.txt = 모두가 r/w/x가능
        - chmod u+x sample.txt = user 에게 excecute 권한을 허가(+)
파일 소유권:
     - 파일을 소유한 사용자와 그룹을 의미
     - 파일 소유권 변경: chown 새로운 사용자 이름(.그룹이름) 파일이름
         예. chown test_user sample.txt = sample.txt의 소유자를 test_user로 바꾸라
링크
     - 파일의 링크는 하드링크와 심볼릭링크가 있다
     - ln 링크대상파일이름 링크파일이름
     - ln -s 링크대상파일이름 링크파일이름 (심볼릭링크)
    
    
    

특수한 형태의 파일권한
- 파일의 허가권은 rwx외에도 특수용도의 setuid, setgid, sticky bit가 있다.
- 실제로는 8진수까지 4자리로 표현가능
- setuid bit
- 8진수 네자리 중 첫번째 값을 100(2)=4 로 표현
- 비밀번호를 지정하는 /bin/passwd가 이에 해당한다
- 이 파일은 루트 소유이므로 원칙적으로 루트만 접근 가능하나, 4755로 설정되어 일반 사용자도 실행가능. 단, 실행하는 순간에 루트 권한을 잠깐 빌려와서 사용.
- passwd명령의 경우 루트가 모든 사용자의 비번을 변경가능하며,
- 일반 사용자도 passwd 명령으로 자신의 비번은 변경가능하다 (이 파일이 setuid로 설정되어있기 때문에)
- setgid bit
- 8진수 네자리 중 첫번째 값을 010(2)=2 로 표현
- 사용자가 아닌 그룹에 대해 적용
- sticky bit
- 8진수 네자리 중 첫번째 값을 001(2)=1 로 표현
- 주로 여러사람이 공유할 디렉터리에 주로 설정됨
- 회사에서 업무상 공유할 내용들을 업로드 시키는 목적으로 사용됨

2.4.4 리눅스 관리자를 위한 명령어

dnf 작동방식과 설정파일

- dnf 명령어와 관련된 설정파일은 /etc/yum.conf 와 /etc/yum.repos.d 디렉터리에 있다
- 중요한 것은 /etc/yum.repos.d 에 있는 여러개의 파일이다
  - 각 파일에는 dnf명령을 실행했을 때, 인터넷에서 해당 패키지 파일을 검색하는 네트워크 주소가 들어있기 때문이다.
-  p 238/813

네트워크 설정

nmtui
- network manager text user interface
- 자동 아이피주소/고정 아이피주소 사용 결정
- DNS 정보입력
- 네트워크 카드 드라이버 설정
- 네트워크 장치 설정
systemctl start/stop/restart/status NetworkManager
- 네트워크 설정 변경 후 변경 내용을 시스템에 적용
ifup 장치이름 /ifdown 장치이음
- 해당 장치를 작동/종료
nslookup
- DNS서버의 작동을 테스트

네트워크 설정과 관련된 주요 파일

/etc/sysconfig/network
- 네트워크 기본정보
/etc/sysconfig/network-scripts/ifcfg-ens160
- ens160장치에 설정된 네트워크 정보가 모두 들어있는 파일
/etc/resolv.conf
- DNS 서버의 정보와 호스트 이름이 들어있는 파일이다
/etc/hosts
- 현재 컴퓨터의 호스트 이름과 FQDN이 들어있는 파일이다

DNS 서버의 역할
- url 이름을 ip주소로 변경
예. 웹브라우저에서 https://www.nate.com 을 입력하면, /etc/resolv.conf 파일에 설정된 DNS서버에게 네이트 url의 ip를 물어본다.
-> dns서버가 해당 url에 해당하는 ip주소를 알려주면 그떄서야 비로소 알아낸 ip주소로 접속한다
- 네트워크 상에 있는 컴퓨터를 구분할 때, url이 아닌 ip주소가 중복되지 않는 유일한 식별자이기 때문이다

2.4.6 파이프, 필터, 리디렉션

파이프

- 2개의 프로그램을 연결하는 연결통로
- '|' 사용

필터

- 필요한 것만 걸러주는 명령어
  예. ps -ef | grep bash -> 모든 프로세스 번호를 출력 & bash 라는 글자가 들어간 프로세스만 출력
     rpm -qa | grep dnf -> 설치된 패키지 중에서 dnf라는 글자가 들어간 패키지를 출력.

리디렉션

- 표준 입출력의 방향 변환

2.4.7 프로세스, 데몬, 서비스

프로세스

- 하드디스크에 저장된 실행코드(프로그램)가 메모리에 로딩되어 활성화된 것
  예. firefox 웹브라우저 프로그램은 하드디스크 어딘가에 저장되어있다. 이렇게 하드에 저장된 파일을 프로그램이라 하고, firefox를 실행한 상태(메모리에 로딩된 상태)를 프로세스라고 한다
- 프로세스 번호
  : 메모리에 로딩되어 활성화된 프로세스를 구분하려면 각각의 고유번호(pid)가 필요하다. 
    활성화된 프로세스를 메모리에서 강제 제거시 프로세스 번호 사용

서비스

- 눈에 보이지 않지만 현재 시스템에서 동작중인 프로세스(백그라운드 프로세스의 일종)
- 데몬이라고도 부르는 서비스는 서버 프로세스를 의미한다(서비스=데몬=서버 프로세스)
- 서비스는 웹서버, 네임서버, db서버등의 프로세스를 지칭한다
- 웹데몬~~ 으로 부르기도 한다

2.4.8 서비스와 소켓

  • 서비스는 평상시에도 늘 가동하는 서버 프로세스
  • 소켓을 필요할 때만 작동하는 서버 프로세스

소켓

- 외부에서 특정 서비스를 요청할 경우 systemd가 구동시키며, 요청이 끝나면 소켓도 종료된다
- 소켓으로 설정된 서비스를 요청할 때는 처음 연결되는 시간은 앞서 설명한 서비스보다 더 걸릴 수 있다
  -> systemd가 서비스를 새로 구동하는데 시간이 소요되기 때문이다
예. 텔넷 서버
- 소켓관련 스크립트 파일: /usr/lib/systemd/system 에 '소켓이름.socket'으로 존재
    

2.4.9 응급복구

이미지 출처:
https://sksstar.tistory.com/9

 
profile
재밌는게 재밌는거다

0개의 댓글