Linux
Linux
리눅스 개요
리눅스는 오픈소스 운영 체제로, 무료로 사용할 수 있는 운영 체제 중 하나 안정성, 보안성, 유연성 등의 특징으로 널리 사용됨
다양한 용도로 사용될 수 있으며, 주요 기능은 다음과 같다
- 데이터 센터에서의 서버 운영
- 개발자들을 위한 개발 환경
- 임베디드 시스템에 적합한 경량화된 버전
안정성, 보안성, 성능 등의 이점으로 웹 서버 운영에 많이 사용
- 리눅스 커널은 리눅스 운영체제의 핵심 기능을 제공
- 리눅스의 주요 배포판 → ubuntu, CentOS, RedHat, Debian 등
CLI (Command-Line Interface)
터미널이나 가상 터미널을 통해 사용자와 컴퓨터가 상호 작용하는 방식
CLI 기본 명령어
- pwd; 현재 위치 확인
- mkdir [name]; 새로운 디렉토리 생성
- ls [-옵션]; 현재 위치 디렉토리의 리스트 출력
- 옵션 : -a, -l, -R, -r, -h, -S등 존재하며, 2개 이상 조합하여 사용이 가능
- cd [변경위치]; 터미널의 현재 위치 변경
- 절대경로, 상대경로, 상위 디렉토리 등으로 위치 변경 가능
- touch [-옵션] [name]; 파일 생성하기
- 옵션 : -a, -c, -t, -d, -r, -m 등, 2개 이상 조합하여 사용이 가능
- echo [-옵션] [텍스트]; 터미널에 텍스트 출력
- cat [-옵션] [파일이름]; 파일의 내용을 터미널에 출력
- rm [-옵션] [이름]; 디렉토리 또는 파일 삭제
- mv [-옵션] [파일이름] [이동할디렉토리]; 디렉토리나 파일의 이름을 변경하거나 위치 이동
- cp [-옵션] [기존이름] [복사할이름]; 디렉토리나 파일 복사
- sudo [명령어]; 관리자 권한을 획득
https://wwwaloha.oopy.io/6d209bba-226e-480a-99a9-146d45b4e9e5
https://ittrue.tistory.com/79
파일 시스템 구조
리눅스의 파일 시스템은 트리형태의 계층적 파일 시스템 구조를 제공
파일 권한
각 파일과 폴더마다 다른 권한을 설정 가능 이는 유저 접근 관리나 공유 폴더, 혹은 파일 생성 시에 용이
파일 권한&소유권 변경
파일 권한 변경
- chmod [파일권한] [변경할 파일 위치 or 파일명]
- 777권한은 모든 사용자가 모든 권한을 얻는다는 의미
소유권 변경
- chown [소유할유저]:[소유할그룹] [소유권을 변경하고 싶은 디렉토리 or 파일명]
- root 권한이 있어야 실행이 가능
https://inpa.tistory.com/entry/LINUX-📚-파일-권한-소유권허가권-💯-정리#소유권ownership
사용자 생성
사용자 계정 생성 명령어 → useradd
- 계정이란 시스템에 ID와 암호를 생성하여 사용권을 부여하는 것을 뜻하며, 이때 사용자의 ID를 생성하는 명령어는 useradd
- root 권한자가 root 이외의 사용자를 생성할 때는 명령어 adduser도 가능
sudo(superuser do)
- 로그아웃 없이 root 권한으로 명령어를 실행
- root 계정의 암호 필요
- etc/sudoers 파일에 지정되어 있는 사용자만 사용 가능
- sudo -s → 현재 디렉토리 유지
- sudo -i → /root로 디렉토리 변경
패키지 관리(설치/제거)
패키지 관리자
- 리눅스 배포판의 일부로 제공
- 시스템에 사용되는 소프트웨어 패키지의 설치, 업데이트, 제거를 자동화
- 패키지에 대한 정보 유지, 다른 패키지와의 상호작용 관리
주요 리눅스 패키지 관리자
- APT : ubuntu와 Debian을 포함한 Debian 기반의 배포판에서 주로 사용
- DNF : Fedora와 CentOS에서 사용
- YUM : CentOS 이전 버전에서 사용되었으며, 현재는 DNF로 대체
- Pacman : Arch Linux와, Manjaro같은 Arch 기반의 배포판에서 사용
패키지 설치 (ex APT)
sudo apt-get upadate → 설치 전 패키지 목록 업데이트
sudo apt-get install [name]
패키지 제거 (ex APT)
sudo apt-get remove [name]
시스템 자원 및 프로세스 확인
시스템 자원 명령어 → top
- 첫번째 줄 : 동작 시간, 사용자 수, 부하 평균값
- 두번째 줄 : 전체 프로세서 수, 동작, 슬립, 중단, 좀비 프로세스의 개수
- 세번째 줄 : CPU 가동을 백분률로 표기
- 네번째 줄 : 메모리 정보
- 다섯번째 줄 : SWAP 공간 정보
- 이하 : 프로세스 정보
메모리 자원 명령어 → free
프로세스 명령어 → ps
- 옵션
- l : 긴 줄 출력
- u : 유저와 시간 출력
- j : 작업 제어 방식 출력
- a : 전체 유저 프로세스 현황 출력
- x : 터미널 제어 없이 프로세스 출력
기본적인 로그 파일 분석
콘솔 로그(/dev/console)
- 커널에 관련된 내용을 담은 로그
시스템 로그(/var/log/messages)
- 시스템에 대한 전반적인 로그로, dmesg를 사용하여 명령어 확인 가능
보안 로그(/var/log/secure)
- 모든 접속과 관련하여 기록된 로그
- login, tcp_wrappers, xinetd 관련 로그가 남음
Linux Log File
| 로그이름 | 로그 파일명 | 설명 | 관련 데몬 |
|---|---|---|---|
| 커널 log | /dev/console |
콘솔에 뿌려지는 로그 | kernel |
| 시스템 log | /var/log/messages |
리눅스 커널로그 및 주 로그 | sysload |
| 보안 log | /var/log/secure |
보안 인증 관련 로그 | xinetd |
| 메일 log | /var/log/maillog |
메일 로그 | sendmail popper |
| 크론 log | /var/log/cron |
crond에 의한 로그 | crond |
| 부팅 log | /var/log/boot.log |
시스템 부팅시의 로그 | kernel |
| 커널 부트 메시지 log | /var/dmesg |
부팅될 당시의 각종 메시지들 저장 | kernel |
| 커널 log | /var/log/wtmp |
시스템 전체 로그인 기록 저장 | kernel |
| 커널 log | /var/log/utmp |
현재 로그인 사용자에 대한 기록, 사용자 ip를 저장 | kernel |
| FTP log | /var/log/xferlog |
ftp 로그 | ftp |
| 웹 log | /var/log/httpd/access_log |
아파치(웹서버) 로그 저장 | httpd |
| 웹 log | /var/log/httpd/error_log |
아파치(웹서버) 에러 저장 | httpd |
| 네임서버 log | /var/log/named.log |
네임서버( 로그 | name |
https://azderica.github.io/00-analysis-log/
쉘 스크립트 작성법
쉘 스크립트
- 기본적으로 .sh 확장자로 작성
- 맨 처음 행에 #!/bin/sh 작성
변수 사용
- 변수명은 영문자, 숫자, 언더바 사용
- 변수에 값을 대입할 때는 = 앞 뒤에 공백 없이 작성
- 변수에 접근할 때 변수명 앞에 $를 삽입
- readonly를 사용하면 변수의 값 변경X
- unset을 사용해 변수 삭제 가능
조건문
- if문
- if [조건] then 커맨드 fi
- 조건과 일치하는 경우 커맨드가 실행
- if - elif - else 구문
- switch문
- case 변수 in [조건 or 값] ) 커맨드 ;; esac
https://engineer-mole.tistory.com/200
댓글남기기