레이블이 리눅스업스킬인 게시물을 표시합니다. 모든 게시물 표시
레이블이 리눅스업스킬인 게시물을 표시합니다. 모든 게시물 표시

화요일, 11월 03, 2020

[유튜브 방송] 리눅스 업스킬 도전 프로젝트 총정리

Q&A와 팁을 포함해 총 25회에 걸친 리눅스 업스킬 도전 프로젝트가 마무리되었다. 많은 분들께서 시청해주셨고 구독해주셨기에 '채널 박재호' 운영 과정에서 많은 보람을 느꼈고, 애청자 여러분들을 위해 다음 주제를 신중하게 선별하는 중이다. 시작이 있으면 끝도 있는 법이라, 오늘은 리눅스 업스킬 도전 프로젝트를 되돌아보는 의미에서 전체 목록을 정리해보았다.

  1. 서버에 접속해보자!: AWS 가입과 EC2 인스턴스 생성 방법을 설명한다. Putty로 접근하는 과정에서 키 관리 방법도 소개한다.
  2. 디렉토리 이동과 파일 목록 보기: pwd와 cd 명령, ls와 mkdir 명령, 매뉴얼 페이지 보는 방법을 설명한다.
  3. 파일 접근 허가와 sudo 명령 그리고 시간대: 파일 접근 허가를 간략하게 설명하고 sudo로 루트 셸을 얻는 방법을 설명한다. nano 편집기로 컴퓨터 이름을 변경하고 timedatectl로 사용 가능한 시간대와 현재 시간대를 출력하는 방법을 소개한다.
  4. 새로운 애플리케이션 설치하기: 우분투에서 패키지 관리자를 사용해 미드나잇커맨더(mc)를 설치하는 방법과 mc의 간단한 사용법을 설명한다.
  5. 탭/화살표 사용법과 숨겨진 파일: 탭을 사용한 자동 완성 기능과 화살표키를 사용한 히스토리 탐색 방법을 설명한다. 또한 셸에서 history 명령과 ! 사용법을 설명한다. ls -al 명령으로 숨겨진 파일을 찾아본다.
  6. vim 익숙해지기: vim으로 편집을 하기 위한 가장 기초적인 사용법을 설명한다.
  7. 웹 서버인 아파치 설치: 우분투에서 패키지 관리자를 사용해 아파치를 설치하고, systemctl 명령으로 관리하는 방법을 설명한다. 아파치의 설정 파일을 살펴보고 curl을 사용해 index.html 파일을 가져온다. 마지막으로 AWS에서 보안 그룹을 조정해 80번 포트를 외부로 열고 웹 브라우저에서 접근한 다음에 access.log에 찍히는지 확인한다.
  8. 문자열 탐색을 위한 grep: cat, less, head, tail 명령어 사용법과 grep 명령어 기초 사용법을 설명한다. cut 명령으로 특정 열만 잘라내는 방법을 소개한다.
  9. 서비스 포트 관리: netstat과 nmap으로 현재 사용 중인 포트를 확인하는 방법을 설명한다. nc를 사용해 초간단 웹 서버를 만들어본다.
  10. 특정 시각에 반복적으로 작업하기: crontab과 list-timers를 사용해 배치 작업을 반복적으로 실행하는 방법을 설명한다.
  11. 특정 조건으로 파일 찾기: locate, find, which로 특정 조건에 맞는 파일을 찾고, zcat과 zless로 압축된 파일 내용을 확인하는 방법을 설명한다. 찾은 파일을 대상으로 특정 명령을 수행하는 고급 find 명령 기법을 소개한다.
  12. sftp로 복사하기: Winscp를 사용해 SFTP 프로토콜로 원격 호스트로 파일을 올리고 원격 호스트에서 파일을 내려받는 방법을 설명한다.
  13. 파일 접근 허가 기초와 사용자 추가: chmod로 접근허가를 변경하는 방법과 adduser로 사용자를 추가하는 방법을 설명한다.
  14. sudo 권한 주기: su 명령으로 사용자를 전환하는 방법과 usermod로 특정 사용자 그룹(예: sudo)을 추가하는 방법을 설명한다.
  15. 우분투 패키지 저장소 추가하기: apt-cache로 패키지 캐시를 확인하는 방법과 add-apt-repository로 PPA(Personal Package Archive) 저장소를 추가하는 방법을 설명한다. 실제로 PHP PPA를 추가한 다음에 PHP 7.3을 설치해본다.
  16. tar와 친구들: tar(tape archive) 명령을 사용하 아카이브를 만들고 풀고 압축하는 방법을 설명한다. 그리고 파일을 이동하기 위해 tar 명령을 사용하는 방법을 소개한다.
  17. 소스 코드로 프로그램 컴파일하고 설치하기: nmap 패키지를 우분투 패키지 관리자 대신 직접 내려받아 컴파일하고 설치하는 방법을 설명한다.
  18. 로그 파일 회전시키기: cron에서 logrotate하는 부분을 찾아 설정 파일을 분석한다.
  19. 아이노드와 심볼릭 링크: 아이노드가 무엇인지 알아보고 하드 링크와 심볼릭 링크를 거는 방법을 설명한다. alternatives 패키지를 사용해 여러 버전을 관리하는 방법을 소개한다.
  20. 셸 스크립트: 간단한 배시 셸 스크립트를 작성해본다. 인수를 받는 방법을 소개한다.
  21. 우분투에서 한국어 로케일을 사용하려면 어떻게 해야 하나요?: 독자의 첫번째 질문인 로케일 설정 방법을 설명한다.
  22. (도커 컨테이너의 기반이 되는) chroot 소개: 독자의 두번째 질문인 chroot에 대한 내용을 설명하고 실제로 busybox를 컴파일해서 루트 파일 시스템을 구성한 다음에 chroot 명령으로 격리된 형태의 셸을 띄어본다.
  23. busybox에서 심볼릭 링크를 걸어서 실행할 기능을 알아내는 방법: 독자의 세번째 질문인 심볼릭 링크를 사용해 실행할 기능을 알아내는 방법을 설명한다.
  24. EC2 인스턴스에서 계정 추가 후 공개 키 등록 방법: EC2 인스턴스에서 사용자 계정을 추가한 다음에 새로 개인 키를 만들고 puttygen을 사용해 공개키를 알아낸 다음에 이를 등록하는 방법을 설명한다.
  25. notepad++ 편집기로 EC2 원격 호스트의 파일 편집하기: notepad++ 편집기에 SFTP를 지원하는 플러그인을 설치한 다음에 원격 EC2 호스트의 파일을 편집하는 방법을 설명한다.

계속해서 블로그와 유튜브에 많은 성원을 부탁드리겠다.

EOB

금요일, 10월 30, 2020

[유튜브 방송] (리눅스 업스킬 도전 #22-b) notepad++ 편집기로 EC2 원격 호스트의 파일 편집하기

[일상다반사] 초보 개발자들을 위한 유튜브 채널 본격 가동에서 설명드린 리눅스 업스킬 도전 프로젝트 추가 팁인 22-b편을 공개해드리겠다. 22-b편은 notepad++ 편집기로 EC2 원격 호스트의 파일을 편집하는 방법을 설명한다.

2020년 10월 30일자 [리눅스 업스킬 도전 #22-b] notepad++ 편집기로 EC2 원격 호스트의 파일 편집하기 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 리눅스업스킬도전에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 notepad++과 SFTP 지원 소개
  • 03:00 플러그인 설치
  • 04:24 플러그인 활성화와 원격 호스트 등록
  • 07:30 테스트

방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1: 플러그인 설치
    1. 플러그인 --> 플러그인 관리 --> 사용가능 탭에서 NppFTP 설치
  • 단계 2: 플러그인 활성화와 원격 호스트 등록
    1. 설치 후 플러그인 --> NppFTP --> Show NppFTP window
    2. 우측 NppFTP 영역에서 톱니 바퀴 누르고, Profile settings
    3. Profile settings 대화상자에서 Add new 누르고 프로파일 이름을 지정
      • Connection 탭의 Hostname에 EC2 IP 주소, Connection Type을 SFTP, Port는 22번 그대로, username을 ubuntu(또는 ec2-user)로 설정
      • Authentication 탭의 Try private key file authentication에 체크박스를 켜고, Private key file에 EC2의 개인키(주의: ppk 형식이 아니라 pem 형식!)를 설정
      • Close를 눌러 닫고 나온다
    4. 우측 NppFTP 영역에서 툴바 가장 마지막 아이콘(Show message window)을 눌러 하단의 Output 영역을 활성화(접속시 문제가 생기면 로그를 확인할 수 있음)
  • 단계 3: 테스트
    1. 우측 NppFTP 영역에서 접속 아이콘을 누르고 앞서 지정한 프로파일 이름을 선택하고 암호를 입력하면(pem 파일의 기본 암호는 비어 있으므로 그냥 OK) 로그인
    2. 원하는 파일을 더블클릭하면 편집 창에 뜨고, 수정 후 저장하면 자동으로 서버로 올라감

참고: 위와 같은 방법은 vi와 같은 편집기에 익숙하지 않을 경우에 사용하는 패턴이며, VSCode, Atom, 이클립스, 서브라임 등 다양한 IDE(또는 편집기)에서 응용 가능하다!

EOB

목요일, 10월 29, 2020

[유튜브 방송] (리눅스 업스킬 도전 #22-a) EC2 인스턴스에서 계정 추가 후 공개 키 등록 방법

[일상다반사] 초보 개발자들을 위한 유튜브 채널 본격 가동에서 설명드린 리눅스 업스킬 도전 프로젝트 추가 팁인 22-a편을 공개해드리겠다. 22-a편은 EC2 인스턴스에 계정을 추가한 다음에 SSH 접속을 위해 공개 키를 등록하는 방법을 설명한다.

2020년 10월 29일자 [리눅스 업스킬 도전 #22-a] EC2 인스턴스에서 계정 추가 후 공개 키 등록 방법 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 리눅스업스킬도전에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 계정 추가 복습
  • 03:30 개인 키 생성(ppk)
  • 05:31 공개 키 확인
  • 06:38 공개 키 등록과 테스트

방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1: 개인 키 생성(웹)
    1. EC2 관리 화면(네트워크 및 보안 --> 키 페어)에서 [키페어 생성]으로 새로운 키 생성
    2. ppk 형식으로 다운로드!(주의: 보안을 강화하려면 puttygen에서 passphrase를 지정해야 한다)
  • 단계 2: 공개 키 확인
    1. 공개 키는 puttygen으로 ppk 개인 키를 로드한 다음 상단에서 확인
  • 단계 3: 해당 사용자 계정으로 들어간 다음에 공개키 등록과 테스트(터미널)
    1. $ mkdir .ssh
    2. $ chmod go-rwx .ssh
    3. $ cd .ssh
    4. 확인된 공개 키를 ~/.ssh/authorized_keys 파일에 추가
    5. $ chmod go-rwx authorized_keys
    6. 마지막으로 putty를 하나 더 뛰워 IP 주소와 개인 키를 지정한 다음에 로그인해서 정상 동작하는지 확인
EOB

금요일, 10월 23, 2020

[유튜브 방송] (리눅스 업스킬 도전 #21-c) busybox에서 심볼릭 링크를 걸어서 실행할 기능을 알아내는 방법

[일상다반사] 초보 개발자들을 위한 유튜브 채널 본격 가동에서 설명드린 리눅스 업스킬 도전 프로젝트 Q&A인 21-c편을 공개해드리겠다. 21-c편은 busybox에서 심볼릭 링크를 걸어서 실행할 기능을 알아내는 방법을 설명한다.

2020년 10월 23일자 [리눅스 업스킬 도전 #21-c] busybox에서 심볼릭 링크를 걸어서 실행할 기능을 알아내는 방법 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 리눅스업스킬도전에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 argv 설명
  • 03:20 간단한 프로그램 작성
  • 06:57 심볼릭 링크를 걸고 PATH에 .(현재 디렉토리)를 추가하는 방법
  • 09:11 실제 실행과 테스트

방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1: argv[0]의 비밀: argv.c 코드는 다음과 같다.
    #include <stdio.h>
    #include <string.h>
    
    int main(int argc, char **argv) {
            if (!strcmp(argv[0], "ls")) {
                    printf("function ls is called\n");
            } else if (!strcmp(argv[0], " pwd")) {
                    printf("function chown is called\n");
            } else if (!strcmp(argv[0], " echo")) {
                    printf("function chgrp is called\n");
            } else {
                    printf("function is not recognized\n");
            }
            return 0;
    }
    
  • 단계 2: 빌드 후 실행
    1. $ gcc -o argv argv.c
    2. $ ln -s argv ls
    3. $ export PATH=".:$PATH"
    4. $ ls
EOB

화요일, 10월 20, 2020

[유튜브 방송] (리눅스 업스킬 도전 #21-b) (도커 컨테이너의 기반이 되는) chroot 소개

[일상다반사] 초보 개발자들을 위한 유튜브 채널 본격 가동에서 설명드린 리눅스 업스킬 도전 프로젝트 Q&A인 21-b편을 공개해드리겠다. 21-b편은 (도커 컨테이너의 기반이 되는) chroot와 루트 파일 시스템 구성에 필요한 프로그램을 통합해서 제공하는 busybox를 설명한다.

2020년 10월 20일자 [리눅스 업스킬 도전 #21-b] (도커 컨테이너의 기반이 되는) chroot 소개 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 리눅스업스킬도전에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 chroot 설명
  • 05:20 busybox 빌드와 설치
  • 14:57 root 파일 시스템 생성
  • 18:02 chroot로 생성된 root 파일 시스템 마운트하면서 셸 기동

방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1: busybox 빌드와 설치
    1. $ wget https://busybox.net/downloads/busybox-1.32.0.tar.bz2
    2. $ tar xvpfj busybox-1.32.0.tar.bz2
    3. $ cd busybox-1.32.0
    4. $ head INSTALL
    5. $ sudo apt-get install libncurses5-dev libncursesw5-dev # 만일 curses.h가 없다는 오류가 발생할 경우 ncurses를 make menuconfig에 앞서 설치해야 한다
    6. $ make menuconfig # menuconfig 화면에서 Settings ---> 선택한 다음에 아래에 있는 Build static binary (no shared libs) (NEW)를 선택해 체크박스, 나머지는 기본값으로 두고 화면 하단의 <Exit> 누르고 설정 파일을 저장
    7. $ sudo apt-get install build-essential # 만일 C 컴파일러가 없을 경우
    8. $ make
    9. $ find . -name busybox
    10. $ ldd busybox
    11. $ busybox
  • 단계 2: root 파일 시스템 생성
    1. $ cd ..
    2. $ mkdir root
    3. $ cd root
    4. $ mkdir bin
    5. $ cd bin
    6. $ cp ../../busybox-1.32.0/busybox .
    7. $ ln -s busybox ls
    8. $ ln -s busybox pwd
    9. $ ln -s busybox sh
    10. $ ln -s busybox cd
  • 단계 3: chroot로 생성된 root 파일 시스템 마운트하면서 셸 기동
    1. $ cd ../..
    2. $ sudo chroot ./root /bin/sh
EOB

월요일, 10월 19, 2020

[유튜브 방송] (리눅스 업스킬 도전 #21-a) 우분투에서 한국어 로케일을 사용하려면 어떻게 해야 하나요?

[일상다반사] 초보 개발자들을 위한 유튜브 채널 본격 가동에서 설명드린 리눅스 업스킬 도전 프로젝트 Q&A인 21편-a 편을 공개해드리겠다. 21-a편은 우분투에서 한국어 로케일을 지정하는 방법을 설명한다.

2020년 10월 19일자 [리눅스 업스킬 도전 #21-a] 셸 스크립트 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 리눅스업스킬도전에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 로케일이란?
  • 02:20 로케일 설정 방법

Ubuntu Locale 한글로 바꾸기를 함께 살펴보기 바라며, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1
    1. $ locale -a
    2. $ locale
    3. $ sudo dpkg-reconfigure locales
    4. $ sudo update-locale LANG=C.UTF-8 LANGUAGE
EOB

목요일, 10월 15, 2020

[유튜브 방송] (리눅스 업스킬 도전 #20) 셸 스크립트

[일상다반사] 초보 개발자들을 위한 유튜브 채널 본격 가동에서 설명드린 리눅스 업스킬 도전 프로젝트 마지막 20편을 공개해드리겠다. 20편은 간단한 셸 스크립트 작성법을 설명한다.

2020년 10월 15일자 [리눅스 업스킬 도전 #20] 셸 스크립트 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 리눅스업스킬도전에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 셸 스크립트 기초
  • 01:26 단계 1) attacker 셸 스크립트 작성하기
  • 08:25 단계 2) topattacker 셸 스크립트로 확장하기

원본 학습자료는 Day 20 - Scripting을 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1
    1. $ vim attacker
      #!/bin/bash
      #
      #   attacker - prints out the last failed login attempt
      #
      echo "The last failed login attempt came from IP address:"
      grep -i "disconnected from" /var/log/auth.log | tail -1 | cut -d: -f4 | cut -f7 -d" "
      
    2. $ chmod +x attacker
    3. $ ./attacker
  • 단계 2
    1. $ vim topattacker
      #!/bin/bash
      #
      ##  	topattacker - list the most persistent attackers
      #
      if [ -z "$1" ]; then
      echo -e "\nUsage: `basename $0` <num> - Lists the top <num> attackers by IP"
      exit 0
      fi
      echo " "
      echo "Persistant recent attackers"
      echo " "
      echo "Attempts   	IP "
      echo "-----------------------"
      grep "Disconnected from authenticating user root" /var/log/auth.log | cut -d: -f4 | \
      cut -d" " -f7 | sort | uniq -c | sort -nr | head -$1
      
    2. $ chmod +x topattacker
    3. $ ./topattacker
EOB

수요일, 10월 14, 2020

[유튜브 방송] (리눅스 업스킬 도전 #19) 아이노드와 심볼릭 링크

[일상다반사] 초보 개발자들을 위한 유튜브 채널 본격 가동에서 설명드린 리눅스 업스킬 도전 프로젝트 19편을 공개해드리겠다. 19편은 아이노드와 하드 링크, 그리고 심볼릭 링크를 설명한다.

2020년 10월 14일자 [리눅스 업스킬 도전 #19] 아이노드와 심볼릭 링크 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 리눅스업스킬도전에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 아이노드란 무엇인가?
  • 00:39 단계 1) ls와 stat 명령으로 아이노드 확인보기
  • 01:55 단계 2) ln 명령어로 하드 링크 걸고 확인하기
  • 06:21 단계 3) ln -s 명령으로 심볼릭 링크 걸고 확인하고, 심볼릭 링크의 사용 용법을 살펴보기

원본 학습자료는 Day 19 - Inodes, symlinks and stat을 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1
    1. $ ls -li /etc/hosts
    2. $ stat /etc/hosts
  • 단계 2
    1. $ stat /etc/passwd
    2. $ sudo ln /etc/passwd link1
    3. $ ls -li link1
    4. $ stat link1
    5. $ stat /etc/passwd
  • 단계 3
    1. $ ln -s /etc/passwd link2
    2. $ ls -li link2
    3. $ stat link2
    4. $ which vim
    5. $ ls -li /usr/bin/vim
    6. $ ls -li /usr/bin/view
    7. $ ls -li /etc/alternatives/vim
    8. $ ls -li /etc/alternatives/view
    9. $ ls -ltr /etc/rc2.d/*
    10. 참고: alternatives 패키지는 자바나 파이썬 여러 버전을 관리(심볼릭 링크를 체계적으로 걸어줌)
EOB

화요일, 10월 13, 2020

[유튜브 방송] (리눅스 업스킬 도전 #18) 로그 파일 회전시키기

[일상다반사] 초보 개발자들을 위한 유튜브 채널 본격 가동에서 설명드린 리눅스 업스킬 도전 프로젝트 18편을 공개해드리겠다. 18편은 아파치 웹 서버의 로그 회전 방법을 설명한다.

2020년 10월 13일자 [리눅스 업스킬 도전 #18] 로그 파일 회전시키기 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 리눅스업스킬도전에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 로그 회전이란 무엇인가?
  • 00:58 단계 1) cron에서 로그 회전에 대한 관련 파일 찾기와 아파치 로그 회전 파일 설정 확인하기
  • 03:17 단계 2) 아파치 로그 회전 방법 설명

원본 학습자료는 Day 18 - Log rotation을 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1
    1. $ less /etc/cron.daily/logrotate
    2. $ less /etc/logrotate.conf
    3. $ ls -al /etc/logrotate.d/
    4. $ less /etc/logrotate.d/apache2
      /var/log/apache2/*.log {
              daily
              missingok
              rotate 14
              compress
              delaycompress
              notifempty
              create 640 root adm
              sharedscripts
              postrotate
                      if invoke-rc.d apache2 status > /dev/null 2>&1; then \
                          invoke-rc.d apache2 reload > /dev/null 2>&1; \
                      fi;
              endscript
              prerotate
                      if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
                              run-parts /etc/logrotate.d/httpd-prerotate; \
                      fi; \
              endscript
      }
      
  • 단계 2(옵션 분석)
    • daily: 매일
    • missingok: 로그 파일이 없어도 문제 없음
    • rotate: 전체 회전될 파일 수
    • compress: 회전될 로그 파일을 압축
    • delaycompress: 회전되면서 바로 압축되지 않고 한 템포 늦춤
    • notifempty: 비어있을 경우 회전하지 않음
    • sharedscripts: 여러 로그 파일이 있을 경우에도 한 번만 postrotate와 prerotate 스크립트를 수행
    • postrotate: 회전한 다음에 수행할 스크립트
    • prerotate: 회전하기 전에 수행할 스크립트
EOB

월요일, 10월 12, 2020

[유튜브 방송] (리눅스 업스킬 도전 #17) 소스 코드로 프로그램 컴파일하고 설치하기

[일상다반사] 초보 개발자들을 위한 유튜브 채널 본격 가동에서 설명드린 리눅스 업스킬 도전 프로젝트 17편을 공개해드리겠다. 17편은 직접 소스 코드를 내려 받아 프로그램을 컴파일하고 설치하는 방법을 설명한다.

2020년 10월 12일자 [리눅스 업스킬 도전 #17] 소스 코드로 프로그램 컴파일하고 설치하기 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 리눅스업스킬도전에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 소스코드로 프로그램을 컴파일하고 설치해야 하는 시나리오
  • 00:40 단계 1) nmap 소스 코드 얻고 컴파일 방법 소개
  • 02:45 단계 2) 필요한 컴파일러와 도구 설치와 설정/컴파일 절차 소개

원본 학습자료는 Day 17 - From the source를 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1
    1. 웹 브라우저로 https://nmap.org/ 방문해서 다운로드 링크 따라가기
    2. 'Source Code Distribution' 항목에서 위치 파악: https://nmap.org/dist/nmap-7.80.tar.bz2
    3. $ wget -v https://nmap.org/dist/nmap-7.80.tar.bz2
    4. 컴파일 방법 숙지: https://nmap.org/book/inst-source.html
  • 단계 2
    1. $ ls -ltr
    2. $ tar xvpfj nmap-7.80.tar.bz2 # j 옵션은 bzip2 압축을 해제하는 경우에 사용, 참고) gzip은 z 옵션
    3. $ cd nmap-7.70
    4. $ head INSTALL
    5. $ sudo apt install build-essential # C 컴파일러 설치
    6. $ sudo apt install flex # flex 설치
    7. $ sudo apt install bison # yacc 신형 버전 설치
    8. $ ./configure
    9. $ make
    10. $ make install
    11. $ sudo updatedb
    12. $ which nmap
    13. $ nmap -V
EOB

목요일, 10월 08, 2020

[유튜브 방송] (리눅스 업스킬 도전 #16) tar와 친구들

[일상다반사] 초보 개발자들을 위한 유튜브 채널 본격 가동에서 설명드린 리눅스 업스킬 도전 프로젝트 16편을 공개해드리겠다. 16편은 tar 명령으로 아카이브를 만들고 푸는 방법을 설명한다.

2020년 10월 8일자 [리눅스 업스킬 도전 #16] tar와 친구들 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 리눅스업스킬도전에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 tar 명령 역사 소개
  • 02:23 단계 1) 기본적인 사용법
  • 05:40 단계 2) 실제 예제
  • 08:47 단계 3) tar로 디렉토리 옮기기

원본 학습자료는 Day 16 - 'tar' and friends...를 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1
    1. $ tar cvpf myinits.tar /etc/init.d/
    2. $ gzip myinits.tar
    3. $ tar cvpfz myinits.tgz /etc/init.d/
  • 단계 2
    1. $ mkdir tarsample
    2. $ cd tarsample
    3. $ gzip -d myinits.tar.gz
    4. $ tar xvpf myinits.tar
    5. $ ls -al ./etc/
    6. $ rm -rf ./etc
    7. $ tar xvpfz myinits.tgz
    8. $ ls -al ./etc/
    9. $ rm -rf ./etc
  • 단계 3(보너스)
    1. $ tar cvpf - /etc/init.d | (cd /home/ubuntu/tarsample; tar xvpf -)
    2. $ ls -al ~/etc/
    3. $ rm -rf ~/etc
    4. $ tar cvpf - /etc/init.d | tar xvpf - -C /home/ubuntu/tarsample
    5. $ ls -al ~/etc/
    6. $ rm -rf ~/etc
    7. $ cp -a /etc/init.d /home/ubuntu/tarsample
EOB

수요일, 10월 07, 2020

[유튜브 방송] (리눅스 업스킬 도전 #15) 우분투 패키지 저장소 추가하기

[일상다반사] 초보 개발자들을 위한 유튜브 채널 본격 가동에서 설명드린 리눅스 업스킬 도전 프로젝트 15편을 공개해드리겠다. 15편은 우분투 패키지 저장소 추가 방법을 설명한다.

2020년 10월 7일자 [리눅스 업스킬 도전 #15] 우분투 패키지 저장소 추가하기 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 리눅스업스킬도전에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 우분투 패키지 저장소(Personal Package Archive (PPA)) 소개
  • 01:36 단계 1) 현재 패키지 목록 확인
  • 04:36 단계 2) 우분투 패키지 저장소 추가와 이 저장소로부터 PHP 7.3 버전 설치하기

원본 학습자료는 Day 15 - Deeper into repositories...How to Install PHP on Ubuntu 18.04를 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1
    1. $ less /etc/apt/sources.list
    2. $ apt-cache dump | less
    3. $ apt-cache dump | grep "Package:" | wc -l
    4. $ sudo apt udpate
    5. $ sudo apt install netperf
  • 단계 2
    1. $ apt-cache dump | grep "php7.3" | less
    2. $ sudo apt install software-properties-common
    3. $ sudo add-apt-repository ppa:ondrej/php
    4. $ sudo apt update
    5. $ sudo apt install php7.3 php7.3-common php7.3-opcache php7.3-cli php7.3-gd php7.3-curl php7.3-mysql
    6. $ php -v
EOB

화요일, 10월 06, 2020

[유튜브 방송] (리눅스 업스킬 도전 #14) sudo 권한 주기

[일상다반사] 초보 개발자들을 위한 유튜브 채널 본격 가동에서 설명드린 리눅스 업스킬 도전 프로젝트 14편을 공개해드리겠다. 14편은 특정 사용자에게 sudo 권한을 주는 방법을 설명한다.

2020년 10월 6일자 [리눅스 업스킬 도전 #14] sudo 권한 주기 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 리눅스업스킬도전에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 sudo 권한 소개
  • 00:48 단계 1) 사용자 추가 후 사용자 관련 파일 확인
  • 04:18 단계 2) sudo 권한 추가 예제

원본 학습자료는 Day 14 - Your little helper...를 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1
    1. $ su - ubuntu
    2. $ id
    3. $ su - jaypark
    4. $ id
    5. $ less /etc/paswd
    6. $ less /etc/group
    7. $ less /etc/shadow
    8. $ id
  • 단계 2
    1. $ less /etc/sudoers
    2. $ sudo usermod -a -G sudo jaypark
    3. $ sudo su - jaypark
    4. $ id
    5. $ sudo /bin/bash
    6. $ sudo su -
    7. $ sudo -i
EOB

월요일, 10월 05, 2020

[유튜브 방송] (리눅스 업스킬 도전 #13) 파일 접근 허가 기초와 사용자 추가

[일상다반사] 초보 개발자들을 위한 유튜브 채널 본격 가동에서 설명드린 리눅스 업스킬 도전 프로젝트 13편을 공개해드리겠다. 13편은 파일 접근 허가 기초와 사용자 추가 방법을 설명한다.

2020년 10월 5일자 [리눅스 업스킬 도전 #13] 파일 접근 허가 기초와 사용자 추가 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 리눅스업스킬도전에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 파일 접근 허가 기초
  • 01:56 단계 1) chmod 명령을 사용한 사용자 접근 허가 변경
  • 04:26 단계 2) adduser 명령을 사용한 사용자 추가와 usermod 명령을 사용한 그룹 추가

원본 학습자료는 Day 13 - Who has permission?를 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1
    -rw------- 	1 steve  staff  	4478979  6 Feb  2011 private.txt
    -rw-rw-r-- 	1 steve  staff  	4478979  6 Feb  2011 press.txt
    -rwxr-xr-x 	1 steve  staff  	4478979  6 Feb  2011 upload.bin
    
    사용자, 그룹, 나머지에 대한 접근허가를 -rwx__rwx__rwx 세 부분으로 나눠 지정함
    
    1. $ touch permission.txt
    2. $ ls -al permission.txt
    3. $ chmod u-w permission.txt
    4. $ ls -al permission.txt
    5. $ chmod o-r permission.txt
    6. $ ls -al permission.txt
    7. $ vi permission.txt
    8. $ chmod u+w permission.txt
    9. $ vi permission.txt
  • 단계 2: useradd 대신 adduser! (참고: MAN(useradd(8)) useradd is a low level utility for adding users. On Debian, administrators should usually use adduser(8) instead.)
    1. $ sudo adduser jaypark
    2. $ su - jaypark
    3. $ id
    4. $ ls -al /var/log/auth.log
    5. $ less /var/log/auth.log
    6. $ usermod -a -G adm jaypark
    7. $ id
    8. $ less /var/log/auth.log
EOB

화요일, 9월 29, 2020

[유튜브 방송] (리눅스 업스킬 도전 #12) sftp로 복사하기

[일상다반사] 초보 개발자들을 위한 유튜브 채널 본격 가동에서 설명드린 리눅스 업스킬 도전 프로젝트 12편을 공개해드리겠다. 12편은 파일 전송을 위한 유틸리티인 winscp와 sftp를 설명한다.

2020년 9월 29일자 [리눅스 업스킬 도전 #12] sftp로 복사하기 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 리눅스업스킬도전에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 00:00 sftp 소개
  • 02:05 단계 1) winscp
  • 06:27 단계 2) sftp

원본 학습자료는 Day 12 - Copying with SFTP를 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1(윈도우)
    1. Winscp 다운로드 후 설치(https://winscp.net/eng/download.php)
    2. 개인 키 등록(*.ppk)
    3. /var/log/apache2 아래 몇몇 파일을 다운로드
    4. 임의 파일을 업로드
  • 단계 2(윈도우 파워셸)
    1. C:\home\myhome> sftp -i keys\development.pem ubuntu@<IP 주소>
    2. sftp> pwd
    3. sftp> dir
    4. sftp> !dir
    5. sftp> get 원격파일이름
    6. sftp> put 지역파일이름
EOB

월요일, 9월 28, 2020

[유튜브 방송] (리눅스 업스킬 도전 #11) 특정 조건으로 파일 찾기

[일상다반사] 초보 개발자들을 위한 유튜브 채널 본격 가동에서 설명드린 리눅스 업스킬 도전 프로젝트 11편을 공개해드리겠다. 11편은 리눅스에서 특정 조건에 해당하는 파일을 찾는 방법을 알기 쉽게 설명한다.

2020년 9월 28일자 [리눅스 업스킬 도전 #11] 특정 조건으로 파일 찾기 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 리눅스업스킬도전에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 1:20 단계 1) locate, find, which 명령으로 파일을 찾는 방법 설명
  • 8:30 단계 2) grep 명령으로 특정 단어가 들어있는 파일을 찾는 방법과 less 명령을 사용해 gzip으로 압축된 파일 내용을 보는 방법과 find 명령을 사용해 특정 파일 패턴과 일치하는 파일만 삭제하는 방법 설명

원본 학습자료는 Day 11 - Finding things...를 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1
    1. putty로 접속
    2. $ locate access.log
    3. $ find /var -name access.log
    4. $ find /home -mtime 3
    5. $ echo $PATH
    6. $ which vi
    7. $ which nano
  • 단계 2
    1. $ grep -R -i "PermitRootLogin" /etc/*
    2. $ zcat /var/log/*.gz | less
    3. $ zless /var/log/*.gz
    4. $ less /var/log/*.gz
    5. $ echo $LESSOPEN
    6. $ find . -name "*.tmp"
    7. $ find . -name "*.tmp" -exec rm -f {} \;
EOB

금요일, 9월 25, 2020

[유튜브 방송] (리눅스 업스킬 도전 #10) 특정 시각에 반복적으로 작업하기

[일상다반사] 초보 개발자들을 위한 유튜브 채널 본격 가동에서 설명드린 리눅스 업스킬 도전 프로젝트 10편을 공개해드리겠다. 10편은 배치 작업을 위한 스케줄러인 crontab과 list-timers의 동작 방식을 알기 쉽게 설명한다.

2020년 9월 23일자 [리눅스 업스킬 도전 #10] 특정 시각에 반복적으로 작업하기 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 리눅스업스킬도전에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 2:12 단계 1) crontab 살펴보기
  • 5:47 단계 2) list-timers 살펴보기

원본 학습자료는 Day 10 - Getting the computer to do your work for you를 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1
    1. putty로 접속
    2. $ crontab -l
    3. $ less /etc/crontab
    4. $ ls /etc/cron.daily
    5. $ vi /etc/cron.daily/passwd
    6. $ ls -al /var/backups/*.bak
  • 단계 2
    1. $ systemctl list-timers
    2. $ systemctl list-timers --all
    3. $ systemctl status apt-daily.timer
    4. $ ls /etc/systemd/system/timers.target.wants
    5. $ ls -al /etc/systemd/system/timers.target.wants/apt-daily.timer
    6. $ systemctl cat apt-daily.timer
    7. $ systemctl cat apt-daily-upgrade.timer
    8. $ ls /lib/systemd/system/
    9. $ less /lib/systemd/system/apt-daily.service
EOB

목요일, 9월 24, 2020

[유튜브 방송] (리눅스 업스킬 도전 #9) 서비스 포트 관리

[일상다반사] 초보 개발자들을 위한 유튜브 채널 본격 가동에서 설명드린 리눅스 업스킬 도전 프로젝트 9편을 공개해드리겠다. 9편은 서비스 포트를 확인하고 관리하는 방법을 알기 쉽게 설명한다.

2020년 9월 24일자 [리눅스 업스킬 도전 #9] 서비스 포트 관리 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 리눅스업스킬도전에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 2:05 단계 1) netstat, ss, nmap을 사용한 서비스 포트 확인
  • 12:30 단계 2) netcat을 사용한 간단한 웹 서버 만들고 AWS 보안 그룹을 설정해 외부에 서비스하기

원본 학습자료는 Day 9 - Ports, open and closed를 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1
    1. putty로 접속
    2. $ netstat -na
    3. $ ss -ltp
    4. $ apt install nmap
    5. $ nmap localhost #(주의: 원격 호스트에는 절대로 사용하지 않는다!)
  • 단계 2
    1. AWS 보안 그룹 추가
    2. $ while true; do echo -e "HTTP/1.1 200 OK\n\n $(date)" | nc -l localhost 8090; done
    3. $ curl localhost:8090
EOB

수요일, 9월 23, 2020

[유튜브 방송] (리눅스 업스킬 도전 #8) 문자열 탐색을 위한 grep

[일상다반사] 초보 개발자들을 위한 유튜브 채널 본격 가동에서 설명드린 리눅스 업스킬 도전 프로젝트 8편을 공개해드리겠다. 8편은 문자열 탐색을 위한 grep 명령을 알기 쉽게 설명한다.

2020년 9월 23일자 [리눅스 업스킬 도전 #8] 문자열 탐색을 위한 grep 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 리눅스업스킬도전에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 1:10 단계 1) cat과 less로 로그 파일 읽기와 tail -f로 로그 파일 감시하기
  • 5:22 단계 2) grep을 사용해 로그 파일 특정 문자열만 검색하고, cut으로 필요한 컬럼만 잘라내기

원본 학습자료는 Day 8 - the infamous "grep"...를 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1
    1. putty로 접속
    2. $ cat /var/log/apache2/access.log
    3. $ less /var/log/apache2/access.log
    4. $ sudo less /var/log/auth.log
    5. $ head /var/log/auth.log
    6. $ tail /var/log/auth.log
    7. $ tail -f /var/log/apache2/access.log # tail의 -f 옵션은 계속 기다리며 결과가 들어오면 스크롤하면서 표준 출력으로 표시
  • 단계 2
    1. $ cat /var/log/auth.log | grep "authenticating"
    2. $ grep "authenticating" /var/log/auth.log
    3. $ grep "authenticating" /var/log/auth.log | grep "root"
    4. $ grep "authenticating" /var/log/auth.log| grep "root"| cut -f 10- -d" " # cut은 특정 필드만 출력
    5. $ grep "authenticating" /var/log/auth.log| grep -v "root"| cut -f 10- -d" " # -v는 "root" 이외 나머지 결과를 출력
EOB

화요일, 9월 22, 2020

[유튜브 방송] (리눅스 업스킬 도전 #7) 웹 서버인 아파치 설치

[일상다반사] 초보 개발자들을 위한 유튜브 채널 본격 가동에서 설명드린 리눅스 업스킬 도전 프로젝트 7편을 공개해드리겠다. 7편은 우분트 패키지로 아파치를 설치하고 설정 파일을 확인하는 방법을 알기 쉽게 설명한다.

2020년 9월 22일자 [리눅스 업스킬 도전 #7] 웹 서버인 아파치 설치 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 리눅스업스킬도전에서 확인할 수 있다.

하이라이트를 요약 정리하면 다음과 같다:

  • 0:30 단계 1) apt로 apache2를 설치하고 systemctl로 서비스 관리하기
  • 3:24 단계 2) 환경 설정 파일을 확인해서 웹 페이지 위치와 로그 파일 위치 확인하기
  • 9:28 단계 3) EC2 보안 그룹 설정에서 HTTP(80번 포트)를 열고 웹 브라우저로 접속하기

원본 학습자료는 Day 7 - Installing Apache를 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:

  • 단계 1
    1. putty로 접속
    2. $ sudo apt update
    3. $ sudo apt install apache2 # 아파치 설치
    4. $ sudo systemctl stop apache2 # 아파치 서비스 중지
    5. $ sudo systemctl start apache2 # 아파치 서비스 시작
    6. $ sudo systemctl status apache2 # 아파치 서비스 상태 확인
  • 단계 2
    1. $ vim /etc/apache2/apache2.conf
    2. 설정 파일에서 IncludeOptional sites-enabled/*.conf 확인
    3. sites-enabled/ 디렉토리 아래 설정 파일을 열어 DocumentRoot로 정의된 기본 웹 페이지 위치 확인
    4. $ vi /var/www/html/index.html # index.html 파일 확인
    5. $ curl localhost # 셸에서 현재 설치된 아파치 서비스에 접속해 index.html 파일 가져오기
    6. /var/log/apache2 디렉토리 아래 access.log 파일에서 접속 확인
  • 단계 3
    1. AWS 보안 그룹에서 HTTP(80번 포트) 열기
    2. 내 컴퓨터에서 웹 브라우저로 접속 시도
    3. access.log에서 접속 확인
EOB