리눅스 서버- 4

박형준·2024년 3월 15일
post-thumbnail

icqa 회원가입 해놓기 : 네트워크 자격증
월요일 5시 국민취업제도 상담


4장. 서버 구축을 위한 필수 개념과 명령어

- 사용자와 그룹(1)

  • 리눅스는 다중 사용자 시스템(Multi-User System) 임

  • 기본적으로 root라는 이름을 가진 수퍼유저(Superuser)가 있으며, 모든 작업을 할 수 있는 권한이 있음

  • 모든 사용자를 하나 이상의 그룹에 소속되어 있음

  • 사용자는 /etc/passwd 파일에 정의되어 있음

  • 각 행의 의미는 다음과 같음

    • 사용자 이름:암호:사용자 ID:사용자가 소속된 그룹 ID:전체 이름:홈 디렉터리:기본 셸


  • 사용자와 그룹(2)

    • 사용자의 비밀번호는 /etc/shadow 파일에 정의되어 있음

    • 그룹은 /etc/group 파일에 정의되어 있음

    • 각 행의 의미는 다음과 같음

      • 그룹명:비밀번호:그룹 id:그룹에 속한 사용자명

  • shadow 파일은 암호 기록, 사용자는 1000번 부터 생성

사용자와 그룹 관련 명령어(1)

  • useradd

    • 새로운 사용자를 추가
    • 예) # useradd newuser
  • passwd

    • 사용자의 비밀번호를 지정하거나 변경
    • 예) # passwd newuser
  • usermod

    • 사용자의 속성을 변경
    • 예) # usermod -g root newuser
  • userdel

    • 사용자를 삭제
    • 예) # userdel newuser
  • 삭제할 때 -r 옵션을 통해 깔끔하게 삭제하는 것이 중요

사용자와 그룹 관련 명령어(2)

  • chage

    • 사용자의 암호를 주기적으로 변경하도록 설정
    • 예) # chage -m 2 newuser
  • groups

    • 현재 사용자가 속한 그룹을 보여줌
    • 예) # groups
  • groupadd

    • 새로운 그룹을 생성
    • 예) # groupadd newgroup
  • groupmod

    • 그룹의 속성을 변경
    • 예) # groupmod -n newgroup mygroup

사용자와 그룹 관련 명령어(3)

  • groupdel

    • 그룹을 삭제
    • 예) # groupdel newgroup
  • gpasswd

    • 그룹의 암호를 설정하거나, 그룹의 관리를 수행
    • 예) # gpasswd newgroup

파일과 디렉터리의 소유와 허가권 (1)

(b,c) : device, l : 링크 파일, d : 디렉토리, - : 일반 파일


파일과 디렉터리의 소유와 허가권 (2)

  • 파일 유형

    • 디렉터리일 경우에는 d, 일반적인 파일일 경우에는 -가 표시
  • 파일 허가권(Permission)

    • “rw-” , “ r--” , “ r--” 3개씩 끊어서 읽음
      (r은 read, w는 write, x는 execute의 약자)
    • 첫 번째 “rw-”는 소유자(User)의 파일접근 권한
    • 두 번째의 “r--”는 그룹(Group)의 파일접근 권한
    • 세 번째의 “r--”는 그 외의 사용자(Other)의 파일접근 권한
    • 숫자로도 표시 가능 (8진수)

  • 숫자로 표현할 때 r: 4, w: 2, x: 1
  • 폴더는 기본 값: 777, 파일은 기본 값: 666(실행 값 제외)

파일과 디렉터리의 소유와 허가권 (3)

  • chmod 명령

    • 파일 허가권 변경 명령어
    • 예) # chmod 777 sample.txt
  • 파일 소유권(Ownership)

    • 파일을 소유한 사용자와 그룹을 의미

chown/chgrp 명령

  • 파일의 소유권을 바꾸는 명령어
  • 예) # chown centos.centos sample.txt(소유자와 그룹) 또는
    #chown centos sample.txt(소유자 만) 및 # chgrp centos sample.txt

chown은 관리자만 변경


절대 경로 와 상대 경로

  • *절대 경로 : 경로 지정시 루트부터 지정해주는것.
  • *상대 경로 : 현재 위치가 기준이 되어 경로 지정.

*/boot폴더에 A.txt B.txt 를 생성 후

  • A.txt 파일은 절대경로를 이용해서 tmp 폴더로 이동..
    • #cd /boot 이동후
    • #mv A.txt /tmp
  • B.txt 파일은 상대경로를 이용해서 tmp 폴더로 이동..
    • #mv B.txt ../tmp ../ 는 상위 디렉토리로 한번 이동을 뜻함. [ ./는 현재 디렉토리 ]

A.txt와 B.txt를 절대경로와 상대경로로 이동

  • A-TEST 폴더에 있는 sample.txt 파일을 B-TEST폴더로 이동을 시키려 할때
    • 현재 작업위치는 A-TEST
    • 절대 경로 : mv sample.txt /test폴더/B-TEST/
    • 상대 경로 : mv sample.txt ../B-TEST/

링크 개요

  • 파일의 링크(Link)에는 하드 링크(Hard Link)심볼릭 링크
    (Symbolic Link 또는 Soft Link)
    두 가지가 있음

  • 하드 링크를 생성하면 “하드링크파일”만 하나 생성되며 같은 inode1을 사용 (명령 : # ln 링크대상파일이름 링크파일이름)
  • 심볼릭 링크를 생성하면 새로운 inode2를 만들고, 데이터는 원본 파일을 연결하는 효과
    (명령 : # ln -s 링크대상파일이름 링크파일이름)
  • 하드 링크는 원본을 지워도 열리지만, 심볼릭 링크는 원본을 지우면 열리지 않는다.(바로가기)

링크

  • 하드링크(원본을 복사해서 지정/원본이 이동해도 열림)
  • 소프트링크(심볼릭) - 위치만 지정이되어서 원본이동하면 열리지 않음
  • #touch testfile ⇒ 테스트용 파일 생성
  • #ln testfile hardlink ⇒ 테스트용 파일을 하드링크 파일로 생성
  • #ln -s testfile softlink ⇒ 테스트용 파일을 소프트 링크 파일로 생성
  • #mkdir test mv testfile test ⇒ 원본파일을 폴더 생성 후 이동 시켜 버리면…
  • #ls -l 했을때 하드링크는 이상 없음. / 소프트 링크는 에러 발생 ..

링크 생성 명령어

  • -> : 가리키고 있다는 뜻(런 레벨)

cat 명령어를 통해 링크된 것 확인

원본 파일을 옮기자 소프트 링크가 끊어진 모습(하드링크는 연결 된다.)

  • il 옵션: inode 보여주는 것 -> inode의 값이 원본 파일과 하드 링크는 같고, 소프트 링크는 다르다

파일의 압축과 묶기 (1)

  • 파일 압축
    • 압축파일 확장명은 xz, bz2, gz, zip, Z 등
    • xz나 bz2 압축률이 더 좋음
  • 파일 압축 관련 명령
    • xz : 확장명 xz로 압축을 하거나 풀어준다
      • 예) xz 파일명
        ,xz -d 파일명.xz
    • bzip2 : 확장명 bz2로 압축을 하거나 풀어준다
      • bzip2 파일명
        ,bzip2 -d 파일명.bz2
    • bunzip2 : “bzip2 -d”옵션과 동일한 명령어
    • gzip : 확장명 gz으로 압축을 하거나 풀어준다
      • 예) gzip 파일명
        ,gzip -d 파일명.gz
    • gunzip : “gzip -d”옵션과 동일한 명령어

파일의 압축과 묶기 (2)

  • 파일 묶기

    • 리눅스(유닉스)에서는 ‘파일 압축’과 ‘파일 묶기’는 원칙적으로 별개의 프로그램으로 수행
    • 파일 묶기의 명령어는‘tar’이며, 묶인 파일의 확장명도‘tar’이다
  • 파일 묶기 명령(tar)

    • tar : 확장명 tar로 묶음 파일을 만들어 주거나 묶음을 풀어 준다
      • 동작 : c(묶기), x(풀기), t(경로확인)
        ,옵션 : f(파일), v(과정보이기), J(tar+xz), z(tar+gzip), j(tar+bzip2)
    • 사용 예
      • #tar cvf my.tar /etc/sysconfig/ → 묶기
        ,#tar cvfJ my.tar.xz /etc/sysconfig/ /etc/sysconfig/ → 묶기 + xz 압축
        ,#tar xvf my.tar → tar 풀기
        ,#tar xvfJ my.tar.xz /etc/sysconfig/ → xz 압축 해제 + tar 풀기

파일 위치 검색

  • find [경로][옵션] [조건][action] : 기본 파일 찾기

    • [옵션] : -name, -user(소유자), -newer(전,후), -perm(허가권), -size(크기)
    • [action] -print(디폴트), -exec (외부명령 실행)
    • 사용 예
      • #find /etc -name "*.conf“
        #find /bin -size +10k -size -100k
        #find /home -name "*.swp" -exec rm { } \;
  • which 실행파일이름 : PATH에 설정된 디렉터리만 검색

  • whereis 실행파일이름 :실행 파일,소스,man페이지 파일까지 검색

  • locate 파일이름 : 파일 목록 데이터베이스에서 검색

파일 찾는 명령어

  • find(파일을 찾을 때)
  • which(위치를 찾을 때)

◆ 묶기 와 압축/해제

  • 묶기 : 용량이 변화가 없음.
    ,압축 : 용량이 축소가됨.

    • tar 묶고, 압축할때 사용되는 명령어.
      • 종류 : bz2(j), gz(z), xz(J), bunzip , Z , compress
  • /etc/sysconfig 폴더를 압축하기.

    • [root@centos ~]# tar cvfJ test.tar.xz /etc/sysconfig
      • 명령어 / 옵션 / 파일명 / 압축파일경로
  • cvfj = bz2 , cvfz=gz , cvfJ=xz

    • 옵션/확장명

[root@centos test]# tar xvfz test.tar.gz
[root@centos test]# tar xfJ test.tar.xz ⇒ 압축 푸는과정 생략

  • 압축 명령어에서 v 옵션은 생략가능, f는 필수
  • 확장자 .xz로 압축했을 경우 .xz로 압축해제 해야 한다.

압축 해제

[root@centos test]# cp ~/anaconda-ks.cfg ./aaa
[root@centos test]# cp aaa bbb
[root@centos test]# cp aaa ccc
[root@centos test]# tar cvf abc.tar aaa bbb ccc ⇒ 묶기만 하기
[root@centos test]# tar cvfz abc.tar.gz aaa bbb ccc ⇒ gz 으로 압축 하기.

묶기만 할 때


*특수 권한도 문자로 부여/회수

  • [root@centos test]# chmod ug+s,o+t test1.txt
  • [root@centos test]# chmod u-s,o-t test1.txt
  • 문자로 권한 수정(u: 유저 , g: 그룹, o: other)
  • 묶어서 한꺼번에 명령어 수행 가능
  • +, -, = 으로 표현 가능

[root@centos test]# chmod ug+s test ⇒ 실행권한이 있는 파일에 특수권한 부여
-rwsrwsrwx 1 root root 1379 3월 15 12:04 test ⇒ 특수권한 문자가 s/t 소문자로 표시

[root@centos test]# chmod ug+s test1.txt ⇒ 실행권한이 없는 파일에 특수권한 부여
-rwSr-Sr-- 1 root root 0 3월 15 12:04 test1.txt ⇒ 특수권한 문자가 S/T 대문자로 표시

  • 특수 권한 부여
  • 실행 권한이 없을 때 특수 권한을 부여할 때는 대문자 S,T가 나타나고 있을 때 특수 권한을 부여하면 소문자 s,t가 나타난다.

*파이프( | ), 필터( grep ) , 리다이렉션 ( > , < , >> , <> )

  • 파이프 : 두개의 명령어를 연결해서 결과를 보여줌.
    • [root@centos ~]# cat /etc/passwd ⇒ passwd 파일 내용모두 보여짐.
      [root@centos ~]# cat /etc/passwd | grep centos
      centos:x:1000:1000:centos:/home/centos:/bin/bash

파이프와 필터

#명령어 > 파일명 ⇒ 실행 결과가 파일명으로 저장.
[root@centos ~]# ps
PID TTY TIME CMD
1986 pts/0 00:00:00 bash
7610 pts/0 00:00:00 ps
[root@centos ~]# ps > ps.txt ⇒ ps.txt파일에 기존 내용이 있다면 덮어씌우기가 됨.
[root@centos ~]# cat ps.txt
PID TTY TIME CMD
1986 pts/0 00:00:00 bash
7619 pts/0 00:00:00 ps

[root@centos ~]# ls -l >> ps.txt ⇒ 기존파일 내용 아래쪽에 저장됨.
[root@centos ~]# cat ps.txt
PID TTY TIME CMD
1986 pts/0 00:00:00 bash
7619 pts/0 00:00:00 ps
합계 12
-rw-------. 1 root root 1379 3월 13 09:33 anaconda-ks.cfg
-rw-r--r--. 1 root root 1534 3월 13 09:36 initial-setup-ks.cfg
-rw-r--r-- 1 root root 87 3월 15 14:22 ps.txt
drwxr-xr-x 2 root root 35 3월 15 12:04 test
drwxr-xr-x. 2 root root 6 3월 13 09:37 공개

[root@centos ~]# sort < ps.txt ⇒ ps.txt 파일의 내용을 화면에 보여줌 ( cat과 같음 )
-rw-------. 1 root root 1379 3월 13 09:33 anaconda-ks.cfg
-rw-r--r-- 1 root root 0 3월 15 14:26 ps.txt
-rw-r--r--. 1 root root 1534 3월 13 09:36 initial-setup-ks.cfg
drwxr-xr-x 2 root root 35 3월 15 12:04 test
drwxr-xr-x. 2 root root 6 3월 13 09:37 공개

*a < b > c : b에 대한 내용을 a명령어 형태로 보여주고, 그것을 c파일로 저장하기.
[root@centos ~]# touch a.txt
[root@centos ~]# vi a.txt
[root@centos ~]# cat a.txt
B
A
F
C

[root@centos ~]# sort < a.txt
A
B
C

[root@centos ~]# sort < a.txt > ab.txt
[root@centos ~]# cat ab.txt
A
B
C

리다이렉션

  • (>)명령어 실행결과
  • (>>)명령어: 원래 있던 내용에 이어서 저장된다
  • (<)명령어: 내용을 화면에 보여준다, sort: 정렬
  • (a < b > c)명령어 : b를 a명령어 수행해서 c에 저장

CRON과 AT (1)

  • cron
    • 주기적으로 반복되는 일을 자동적으로 실행될 수 있도록 설정
    • 관련된 데몬(서비스)은“crond”, 관련 파일은 “/etc/crontab”

  • /etc/crontab
    - 01 * * * root run-parts /etc/cron.hourly
    - 02 4
    * root run-parts /etc/cron.daily
    - 03 4
    0 root run-parts /etc/cron.weekly
    - 42 4 1
    * root run-parts /etc/cron.monthly
    • 첫 줄은 매시간 1분에 /etc/cron.hourly 디렉터리 안에 있는 명령
      들을 자동으로 실행한다

*/2 표시 : 2달마다 한 번씩


CRON과 AT (2)
at

  • cron은 주기적으로 반복되는 작업을 예약하는 것이지만, at는
    회성 작업을
    예약

  • 사용 예

    • 예약 : # at <시간>
      • 예) # at 3:00am tomorrow → 내일 새벽 3시
        #at 11:00pm January 30 → 1월 30일 오후 11시
        #at now + 1 hours → 1시간 후
    • at> 프롬프트에 예약 명령어 입력 후 [Enter]
    • 완료되면 [Ctrl] + [D]
    • 확인 : # at -l
    • 취소 : # atrm <작업번호>

*예약 하기 ( cron 과 at )

  • at : 1회성 예약 작업
  • cron : 반복되는 작업 예약 (매주 일요일 새벽 5시에 ~ 작업 )

*at 사용법

  • #at 3:15 pm today
    • />mkdir /test ⇒ test폴더 생성
    • />컨트롤 + D 종료
    • #at -l 예약 확인
    • #atrm 예약번호
  • 명령어 at
  • 빠져나올 때는 Ctrl + D
  • at -l(확인)와 예약 제거

*cron 사용법

  • #cd /etc/cron.monthly ⇒ 예약 파일이 실행될 위치 ( 다른곳에 해도됨 )
  • #touch backup.sh ⇒ 백업 파일 생성
  • #chmod 755 backup.sh ⇒ 파일은 실행권한이 없어서 실행권한 부여
  • #vi backup.sh ⇒ 실행시킬 스크립트 내용 입력

메모장을 통해 입력 후 vi에 복사

  • $2와 $3은 월과 시간을 의미한다.
  • vi /etc/crontab -> 파일을 열어서 맨아래 예약 시간을 등록시켜줌.
    • 40 15 3 * * root run-parts /etc/cron.monthly ⇒ 실행파일이 있는 위치
    • :wq
  • vi를 통해 cron 예약 설정
  • #mkdir /test ⇒ 백업파일이 저장되는 디렉토리 생성
  • #systemctl restart[stop,start,status] crond ⇒ crond 서비스 재시작을 해줌(필수)
  • cron 예약 활성화 확인(active)
  • 설정 후 재시작

백업 완료

  • [root@centos ~]# ls -l /backup
    rw-r--r--. 1 root root 533308 3월 15 16:15 backup-03.15.tar.xz

  • 4시간 마다 백업을 진행하려고 한다면…
    00 */4 * * * (분, 시간, 일 , 월, 요일(0-6) )
    • 월요일 부터 금요일 까지 , 새벽 4시 정각에 백업 되도록… 시간을 셋팅
      00 4 * * 1-5
    • 3 개월 마다 매월1일에 밤 12시 정각에 백업 하도록 시간 셋팅.
      00 0 1 */3 *

◆시스템 시간을 표준시간과 동기화

*[root@centos ~]# rdate -s time.bora.net ⇒ rdate 어플이 설치 되어있어야 실행됨.

#date 031516402025 -> 2025년 3월 15일 오후 4시 40분으로 시간 변경

  • 월일 시분 년도

◆네트워크 설정 관련

  • 1.전원 버튼 클릭 후 IP셋팅 ⇒ 셋팅 후 반드시 네트워크를 껏다 켜줘야함.

    1. nmtui ⇒ 창이 열리면 방향키, 탭키를 이용해서 이동 후 입력 / 빠져 나오면됨
      이후 네트워크 서비스 재시작은 필수 .
  • nmtui로 IP 설정
  • 시스템 설정후 꼭 재시작([root@centos cron.monthly]# systemctl restart NetworkManager) 해주기
    1. [root@centos ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens160
      ⇒ 수동, 자동 설정 가능, IP 입력 가능
      TYPE=Ethernet
      PROXY_METHOD=none
      BROWSER_ONLY=no
      BOOTPROTO=none 자동은 ⇒ dhcp 로 변경하고 서비스 재시작 해주면 됨. 고정IP로 변경시에는 입력해줘야함.
      DEFROUTE=yes
      IPADDR=192.168.0.100
      PREFIX=24
      GATEWAY=192.168.0.2
      DNS1=8.8.8.8
      IPADDR1=255.255.255.0
      PREFIX1=32
      -> 위치 옮길 수 있다.
      IPV4_FAILURE_FATAL=no
      NAME=ens160
      UUID=eb6c7600-ac29-422e-8e76-3bf016696cfa
      DEVICE=ens160
      ONBOOT=yes
  • cat /etc/sysconfig/network-scripts/ifcfg-ens160 경로 중요
  • *네트워크 재시작 중요.
    #systemctl restart/status/stop/start NetworkManager ⇒ 대소문자 구분
  • 네트워크 설정해주면 꼭 재시작 해주기
  • #systemctl restart/status/stop/start NetworkManager (대소문자 구분!)
  • 다른 시스템(Web, dns...)도 설정하면 재시작 해주기
    1. ifup ens160, ifdown ens160 , ifconfig ens160
    • 동작시키기 , 동작 중지 , 랜카드정보확인
  • ens-160 끄기와 켜주기
  • 윈도우와 마찬가지로 nslookup 사용가능

0개의 댓글