1. openSSL 사이트에 들어가서 원하는 버전을 다운로드

1.1. 다운로드 경로 : https://www.openssl.org/source/

 

[ Downloads ] - /source/index.html

Downloads The master sources are maintained in our git repository, which is accessible over the network and cloned on GitHub, at https://github.com/openssl/openssl. Bugs and pull patches (issues and pull requests) should be filed on the GitHub repo. Please

www.openssl.org

 

1.2. 원하는 버전에 tar.gz 파일이 다운로드

 

 

2. 다운로드 받은 openssl-X.X.X.tar.gz 파일을 압축 해제(openssl-3.0.13)

## openssl 3.0.13 버전 다운로드
## 형식 tar -xvf openssl-X.X.X.tar.gz
$ tar xvfz openssl-3.0.13.tar.gz

 

 

3. 압축 해체 이후, openssl-X.X.X 폴더 진입(openssl-3.0.13)

## 형식 : cd openssl-X.X.X
$ cd openssl-3.0.13;

 

 

4. openssl-X.X.X 폴더로 진입하여 ls 명령어를 입력, config 실행

4.1. 사용 가능한 패키지들 업데이트 및 필수 패키지 설치

$ sudo apt-get update;
$ sudo apt-get install build-essential -y;​

 

4.2. openssl-X.X.X 폴더 내 ls 명령어 확인

$ ~/openssl-3.0.13# ls
ACKNOWLEDGEMENTS.md  demos        ms                 README-FIPS.md
apps                 doc          NEWS.md            README.md
AUTHORS.md           engines      NOTES-ANDROID.md   README-PROVIDERS.md
build.info           e_os.h       NOTES-DJGPP.md     ssl
CHANGES.md           external     NOTES-NONSTOP.md   SUPPORT.md
config               FAQ.md       NOTES-PERL.md      test
config.com           fuzz         NOTES-UNIX.md      tools
configdata.pm        HACKING.md   NOTES-VALGRIND.md  util
configdata.pm.in     include      NOTES-VMS.md       VERSION.dat
Configurations       INSTALL.md   NOTES-WINDOWS.md   VMS
Configure            LICENSE.txt  os-dep             wycheproof
CONTRIBUTING.md      Makefile     providers
crypto               Makefile.in  README-ENGINES.md

 

4.3. openssl-X.X.X 폴더 내 config 명령어 실행

$ ./config
Configuring OpenSSL version 3.0.13 for target linux-x86_64
Using os-specific seed configuration
Created configdata.pm
Running configdata.pm
Created Makefile.in
Created Makefile

**********************************************************************
***                                                                ***
***   OpenSSL has been successfully configured                     ***
***                                                                ***
***   If you encounter a problem while building, please open an    ***
***   issue on GitHub <https://github.com/openssl/openssl/issues>  ***
***   and include the output from the following command:           ***
***                                                                ***
***       perl configdata.pm --dump                                ***
***                                                                ***
***   (If you are new to OpenSSL, you might want to consult the    ***
***   'Troubleshooting' section in the INSTALL.md file first)      ***
***                                                                ***
**********************************************************************

 

 

5. make 명령어를 사용해 소스를 컴파일

5.1. 컴파일(소스파일을 사용자가 실행 가능한 파일로 만들어 주는 과정) 진행(대략 5분 정도 소요)

$ make
...생략...

 

5.2. 컨파일 완료 후 실행 가능한 파일 생성 확인 → 완료 시 아래와 같이 출력

$ make
...생략...
make[1]: Leaving directory '/home/~/openssl-3.0.13'

 

 

6. 실행 가능한 파일 생성 후 설치 진행

$ make install
...생략...
install doc/html/man7/provider-rand.html -> /usr/local/share/doc/openssl/html/man7/provider-rand.html
install doc/html/man7/provider-signature.html -> /usr/local/share/doc/openssl/html/man7/provider-signature.html
install doc/html/man7/provider-storemgmt.html -> /usr/local/share/doc/openssl/html/man7/provider-storemgmt.html
install doc/html/man7/provider.html -> /usr/local/share/doc/openssl/html/man7/provider.html
install doc/html/man7/proxy-certificates.html -> /usr/local/share/doc/openssl/html/man7/proxy-certificates.html
install doc/html/man7/ssl.html -> /usr/local/share/doc/openssl/html/man7/ssl.html
install doc/html/man7/x509.html -> /usr/local/share/doc/openssl/html/man7/x509.html



7. 설치한 openssl 명령어 버전 확인 후 조치

7.1. openssl 명령어 버전 조회 시 에러 메시지 발생

$ openssl version
openssl: /lib/x86_64-linux-gnu/libcrypto.so.3: version `OPENSSL_3.0.9' not found (required by openssl)

 

7.2. 조치 사항

$ echo "/usr/local/lib64" > /etc/ld.so.conf.d/openssl-3-0-13.conf
$ openssl version
OpenSSL 3.0.13 30 Jan 2024 (Library: OpenSSL 3.0.13 30 Jan 2024)

 

 

참고 자료 : [Linux] OpenSSL을 Ubuntu에서 설치하고 업데이트하는 방법 — hyun 공부 학습 공간 (tistory.com)

 

 

  • Ubuntu에서 /etc/resolv.conf 파일이 초기화되는 현상이 발생 → Ubuntu 기본 세팅
  • /etc/resolv.conf 초기화되지 않도록 하기 위해 조치사항

 

1. apt install 패키지 설치를 위해 /etc/resolve.conf에 nameserver 8.8.8.8 추가

$ vi /etc/resolv.conf
...생략...
nameserver 8.8.8.8

 

 

2. resolvconf 패키지 설치

$ apt install resolvconf -y

 

 

3. resolvconf 확인

  • /etc/resolvconf 디렉토리 확인
  • /run/resolveconf/resolv.conf 파일에 소프트링크
    $ ls -al /etc/resolv.conf
    lrwxrwxrwx 1 root root 29 Apr  1 02:44 /etc/resolv.conf -> ../run/resolvconf/resolv.conf​

 

4. head 파일 수정

  • resolve.conf 파일은 위에서부터 읽어들임
  • nameserver 8.8.8.8이 /etc/resolv.conf 파일의 최하단에 위치하면 다른 nameserver 설정의 IP을 먼저 DNS 서버로 사용하고, 위 DNS가 비정상일 경우에 8.8.8.8을 통해 질의함
    $ vi /etc/resolv.conf
    ...생략...
    nameserver 8.8.8.8​

 

5. 서버 재부팅 후 재확인 → 정상적으로 유지 확인

$ vi /etc/resolv.conf
...생략...
nameserver 8.8.8.8​

 

 

참고 자료 : [Solved][Ubuntu18.04] 서버 재부팅시 resolv.conf 초기화되는 문제 해결 :: Devader (tistory.com)

 

D state란

  • process 상태(STAT)가 D로 표시되는 process는 "uninterruptible sleep" 상태를 의미
  • 일반적으로 I/O에 대해 대기하는 것으로 다른 어떤 일도 할 수 없는 상태 → I/O operation이 완료되기 전까지는 죽은 상태
  • D 상태인 process들은 operation이 완료되어 R/S(Run/Sleep)에 돌아가기 전까지 보통 작은 시간동안(a fraction of a second)만 거기에 있음
     
  • 서버가 I/O 집약적인 작업(intensive operations)을 수행할 때 프로세스가 "D" 상태로 표시되는 것은 정상 
  • 성능이 문제가 되는 경우 디스크의 상태를 확인 필요
  • 펌웨어 및 커널 디스크 드라이버가 업데이트되었는지 확인필요

 

  • process가 D 상태에 빠지는 경우
    1. 연결될 수 없는 NFS나 다른 원격 파일시스템과 통신하려는 경우
    2. 문제가 있는 하드 드라이브에 접근하려는 경우
    3. 비정상적인 device 드라이버를 이용해 하드웨어를 사용하려고 경우

 

  • D state process는 uninterruptible sleep으로 I/O를 대기 중 상태
    • ps 명령어는 uninterruptible sleep의 process에 대해 "D"를 표시 
    • vmstat 명령어는 "blocked" 상태이거나 "waiting on I/O" process를 표시 
    • "D" state Process는 SIGKILL 또는 kill -9를 사용해도 중단할 수 없음 → 서버를 재부팅하거나 I/O가 응답할 때까지 기다려야만 지울 수 있음

 

  • Uninterruptible sleep 상태는 D state의 process로 아무것도 할 수 없는 상태
    • process는 일반적으로 D State를 오래 유지하지 않음
    • D State process가 쌓여 있으면 시스템의 일부 로직이 중단됨
    • ps 명령어에 l 옵션 추가하여 긴 포맷으로 출력 → 우선순위와 관련된 PRI와 NI값 확인 가능  
    • WCHAN 열에는 process가 sleeping인 커널 함수의 이름이 표시
      $ ps axl | awk '$10 ~ /D/'
      F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
      vass     13478  7.2  0.0   1732   624 pts/1    D+   17:36   0:00 find ./​

 

process STAT(프로세스 상태)

  • Linux의 process는 running, sleeping 등 여러 가지 상태가 될 수 있음
  • Running process는 방금 CPU에서 실행 중이고, Sleeping process는 CPU가 켜지거나 다른 이벤트가 발생할 때까지 기다리는 상태를 의미
  • ps 명령어를 사용하면 시스템에서 각 process의 상태에 대한 정보를 얻을 수 있음
     
  • ps 명령어의 STAT 열에 표시
    • 큰 S는 Sleeping을 의미
    • 작은 s는 process이 session leader을 의미 → process가 새로운 session을 생성하면 해당 process는 session leader가 됨(Session Process의 PID = Session ID)
    • 큰 R은 Running을 의미
    • +는 foreground process를 의미
      $ ps a
        PID TTY      STAT   TIME COMMAND
       4975 tty1     Ss+    0:00 /sbin/mingetty tty1
       4976 tty2     Ss+    0:00 /sbin/mingetty tty2
       6202 pts/0    Ss+    0:01 -bash
      10312 pts/1    Ss     0:00 -bash
        639 pts/1    R+     0:00 ps a​

 

참고 자료 : Processes in D state - OpenVZ Virtuozzo Containers Wiki

참고 자료 : [Linux] Uninterruptible sleep 프로세스 상태 D :: TOP GUN (tistory.com)

참고 자료 : Processes in an Uninterruptible Sleep (D) State | Support | SUSE

 

1. Linux 현재 시간 확인 (현재 타임존)

$ date
Mon Mar 25 22:50:28 EDT 2024

 

2. Linux 현재 타임존 확인 → New_York 설정 확인

$ ls -al /etc/localtime
lrwxrwxrwx. 1 root root 38 Mar 21 23:42 /etc/localtime -> ../usr/share/zoneinfo/America/New_York

 

3. 타임존을 한국 표준시(KST)로 변경

$ ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

 

 

4. 변경된 타임존 확인

$ ls -al /etc/localtime
lrwxrwxrwx 1 root root 30 Mar 26 11:52 /etc/localtime -> /usr/share/zoneinfo/Asia/Seoul

 

5. 현재 시간 확인 (변경된 타임존)

$ date
Tue Mar 26 11:52:57 KST 2024

 

 

  • 리눅스에서 사용하는 파일 시스템 정보를 고정적으로 저장하고 있는 파일
  • 리눅스 파일 시스템 정보와 부팅 시 마운트 정보 보유
    1. 리눅스가 부팅되면서 어떤 파티션들을 어디에 자동으로 마운트하고, 외부 장치들에 대한 마운트를 어떻게 설정하는 파일
    2. 사용 권한 및 복구 등과 관련된 옵션을 어떻게 지정할 것인지에 대해 설정하는 파일

 

  • /etc/fstab 설정 예시 및 설명

 

 

1. 파일 시스템(Filesystem)이란

  • 운영체제(OS)가 파일을 시스템의 디스크에 구성하는 방식
  • 컴퓨터에서 파일이나 자료를 쉽게 발견 및 접근할 수 있도록 보관 또는 조직하는 체제
  • 사용자 영역이 아닌 커널 영역에서 동작
  • 파일 시스템은 파일의 읽기, 쓰기, 삭제 등의 기능을 빠르고 원활하게 수행하기 위한 목적
  • 파일 서버 상의 자료로의 접근을 제공하는 방식과 가상의 형태로서 접근 수단만이 존재하는 방식도 파일 시스템의 범위에 포함

  • 파일 시스템의 구조

 

 

2. 파일 시스템(Filesystem) 종류

  • 리눅스 전용 디스크 기반 파일 시스템

 

 

  • 리눅스 전용 디스크 기반 파일 시스템 EXT4의 버전별 비교

 

  • 저널링 파일 시스템
    • 시스템의 비정상적인 종료 시 저널(로그)을 이용해 빠르면서 안정적으로 복구 가능
    • 데이터를 디스크에 쓰기 전에 로그에 데이터를 남겨 시스템의 비정상적인 셧다운에도 로그를 사용해 빠르고 안정적인 복구 기능을 제공하는 기술
    • 저널링 기술이 적용된 파일 시스템 : ext3, ext4, XFS, JFS, ResierFS 등

    • 저널링 파일 시스템 운영 형태
      1. 저널이라는 로그에 시스템 전 상태 저장
      2. 시스템의 비정상적인 종료 시 저널(로그)을 검사
      3. 저널(로그) 정보를 바탕으로 파일 시스템에 수정 내용을 적용

 

  • 추가 파일 시스템 설명

 

  • 네트워크 파일 시스템

 

  • 기타 지원 가능한 파일 시스템

 

 

  • Linux에서 파일 시스템은 atime, mtime, ctime 이라는 세 가지 주요 타임스탬프를 사용
  • 타임스탬프는 파일의 사용 패턴을 추적하고, 백업, 캐싱, 또는 다른 유지 관리 작업을 수행하는 데 유용
  • ls 명령의 -u 옵션을 사용하면 atime을, -c 옵션을 사용하면 ctime을 확인 가능

 

1. atime(access time)

  • 파일 마지막 접근 시간
  • 파일이 어떤 명령어나 스크립트, 프로그램에 의해 열리거나 읽혔을 시 갱신
  • vi 뿐만 아니라 cat, tail 같은 명령어에 의해 읽힌 경우도 갱신
  • 확인 명령어 : ls -lu

 

2. mtime (moditied time)

  • 파일 마지막 수정 시간
  • vi, echo 등으로 내용이 수정될 시 갱신, 보통 mtime이 변경될 시 ctime, atime 값 함께 변경
  • 확인 명령어 : ls -l
    ※ ls 명령어로 출력되는 값은 기본적으로 mtime (ls 명령어의 디폴트 시간)

 

3. ctime (inode changed time)

  • inode(파일의 속성, 권한, 파일 크기 등)가 변경된 시간
  • 상태 변경은 파일의 메타데이터(예: 파일 권한, 소유권 등)가 변경되었음을 의미
  • ctime은 mtime이 변경될 때 갱신되지만, mtime이 변경된다고 ctime이 변경되지 않을 수 있음
  • 확인 명령어 : ls -c
     
  • inode 변경 조건
    1. file permission (chmod 등)
    2. file owner (chown, chgrp 등)
    3. 하드 링크 생성 (ln)
    4. 삭제 (rm 등)

 

4. stat 명령어 → atime, mtime, ctime 확인

  • 파일이나 파일 시스템의 상태 정보 출력 명령어
  • 옵션 없이 stat 명령어 뒤 파일 입력 시 해당 파일의 상세 정보 출력
  • stat 명령어 옵션
     
  • stat 명령어 Fomat Sequence → -c 옵션을 이용해서 사용자 정의를 할 때 필요한 포맷
  • stat 명령어 테스트
    1. stat 명령 사용 시 atime, mtime, ctime 정보 동시 확인 가능
       
    2. vi로 파일 접근한 경우 atime이 9.26 → 10.6으로 갱신
       
    3. vi로 파일 수정한 경우 atime, mtime, ctime 모두 9.26 → 10.6으로 갱신

 

'OS(운영체제) > 리눅스(Linux)' 카테고리의 다른 글

/etc/fstab 파일  (0) 2024.03.16
파일 시스템(Filesystem)  (1) 2024.03.16
파티션(Parition)  (0) 2024.03.10
리눅스 개요  (0) 2024.03.10
작업 예약 스케줄러(cron) 파일  (0) 2022.07.23
  • 지정한 속성대로 정해진 위치에 파일을 복사하는 명령어
  • install 명령어 사용하여 파일 복사하면, 복사된 파일이 기존 파일과 동일한 권한을 상속함
  • 복사된 파일은 복사를 수행한 사용자 및 그룹에 대한 권한을 가짐

  • install 명령어 경로
    /usr/bin/install
     
  • install 명령어 사용법
    install [옵션] [파일] 디렉토리 
     
  • install 명령은 파일의 권한 속성들, 소유주, 그룹을 지정해서 복사
  • cp 명령과 비슷하지만, 필요하면 파일이 복사될 경로를 만들고, 다른 소유자나 그룹을 지정하는 등의 다양한 기능을 제공
  • install 명령어는 컴파일 된 프로그램을 정확한 위치에 설치하는 데 사용 → Makefile에서 사용

 

install 명령어 옵션

short 옵션 long 옵션 설명
-d --directory 대상 디렉터리를 지정
지정한 디렉터리가 없다면 대상 디렉토리 생성함
-g group --group group 새로운 파일의 그룹 권한을 지정한 group ID 혹은 group 이름으로 설정
-m mode --mode mode 새로운 파일의 퍼미션을 지정한 mode 값으로 설정
기본값은 0755
-o [owner] --owner [owner] 파일의 소유자(owner)를 설정
만약 root 계정에서 지정하지 않으면, root 소유권 설정
-s --strip 심볼 테이블을 제거
  --help 사용법 출력
  --version 버전 정보 출

 

install 명령어 예시

### test.txt 파일 권한 및 퍼미션 확인
$ ls -al ./test.txt
-rw-r--r-- 1 hippo hippo 5 Mar 13 01:02 ./test.txt

### install 명령어로 test.txt 파일 /tmp로 복사
$ install -m 777 test.txt /tmp

### /tmp/test.txt 파일 복사 및 권한, 퍼미션 확인
$ ls -al /tmp/test.txt
-rwxrwxrwx 1 root root 5 Mar 13 01:04 /tmp/test.txt

 

 

 

+ Recent posts