Post

[Online Academy] "리눅스 기초 강의" Note-Taking

[Online Academy] 리눅스 기초 강의 공부기록

[Online Academy] "리눅스 기초 강의" Note-Taking

해당 포스트는 학습 목적으로 작성되었으며 «리눅스 기초 강의»을 참고하여 작성하였음을 알려드립니다.


1. 기본 개념


프로세스 식별자

  • PID: Process ID (프로세스 ID)
  • PPID: Parent Process ID (부모 프로세스 ID)

명령어 구조

1
[명령어] [전달인자] [옵션]

예시:

1
ping 8.8.8.8 -c 3
  • ping: 명령어 (필수, 항상 맨 앞)
  • 8.8.8.8: 전달인자
  • -c 3: 옵션 (위치 변경 가능, 생략 가능)

옵션 확인: 명령어 -h


2. 경로 표현


특수 경로 기호

  • /: 최상위 경로(루트)
  • ~: 홈 디렉토리
  • .: 현재 디렉토리
  • ..: 상위 디렉토리

경로 유형

절대경로

  • 최상위 디렉토리부터 전체 경로 표현
  • /etc/passwd, /root

상대경로

  • 현재 위치 기준 경로 표현
  • ./경로, ../경로


3. 파일 시스템 구조


디렉토리설명
/bin기본 명령어 바이너리 파일
/dev하드웨어 장치 파일
/etc시스템 설정 파일
/home사용자 홈 디렉토리
/lib공유 라이브러리 파일
/rootroot 계정 홈 디렉토리
/sbin시스템 관리 명령어
/tmp임시 파일 (재부팅 시 삭제)
/var가변 데이터 파일


4. 파일 확인 명령어


1
2
3
4
cat [파일명]         # 파일 내용 출력
file [파일명]        # 파일 정보 확인
more [파일명]        # 페이지 단위로 파일 보기
ls -l [파일명]       # 파일 상세 정보 및 권한 확인

파일 타입 구분:

  • -: 일반 파일
  • d: 디렉토리


5. 파일 조작 명령어


복사 (Copy)

1
2
3
4
5
6
# 파일 복사
cp [원본] [대상]
cp [원본] [대상]/[새이름]

# 디렉토리 복사
cp -r [원본] [대상]

이동/이름변경 (Move)

1
2
3
4
5
6
# 파일 이동
mv [원본] [대상]
mv [원본] [대상]/[새이름]

# 디렉토리 이동
mv [원본] [대상]

삭제 (Remove)

1
2
3
4
5
6
7
8
# 파일 삭제
rm [파일명]

# 디렉토리 삭제
rm -r [디렉토리명]

# 강제 삭제
rm -rf [대상]


6. Vi 에디터


모드

  • 명령모드: 기본 모드
  • 입력모드: i, a, o 등으로 진입

주요 명령

1
2
3
4
5
6
7
8
/[검색어]     # 검색
n            # 다음 검색 결과
N            # 이전 검색 결과
:[줄번호]     # 특정 줄로 이동
dd           # 현재 줄 삭제
[숫자]dd      # 지정 줄 수만큼 삭제
:wq          # 저장 후 종료
:q!          # 강제 종료


7. 사용자 및 권한


사용자 관리

1
2
useradd [사용자명]    # 사용자 생성
exit                 # 현재 세션 종료

/etc/passwd 구조

1
root:x:0:0:root:/root:/usr/bin/zsh

순서대로:

  1. 계정 이름
  2. 비밀번호 (x = 숨김, 실제는 /etc/shadow)
  3. UID (User ID)
  4. GID (Group ID)
  5. 사용자 설명
  6. 홈 디렉토리
  7. 기본 셸


8. 권한 (Permission)


권한 종류

  • r (read, 4): 읽기
    • 파일: 파일 내용 읽기
    • 디렉토리: 디렉토리 내용 확인
  • w (write, 2): 쓰기
    • 파일: 파일 수정
    • 디렉토리: 파일/디렉토리 생성
  • x (execute, 1): 실행
    • 파일: 파일 실행
    • 디렉토리: 디렉토리 접근(cd)

권한 표기 해석

1
-rw-r--r-- 1 root root 20 Apr 25 21:42 test
  • -: 파일 타입
  • rw-: 소유자 권한
  • r--: 그룹 권한
  • r--: 기타 사용자 권한
  • 1: 하드링크 수
  • root: 소유자
  • root: 그룹
  • 20: 파일 크기(byte)
  • Apr 25 21:42: 수정 날짜
  • test: 파일명

권한 변경 (chmod)

기호 방식:

1
2
3
chmod u+x [파일]    # 소유자에게 실행 권한 추가
chmod g-w [파일]    # 그룹에서 쓰기 권한 제거
chmod o+r [파일]    # 기타 사용자에게 읽기 권한 추가
  • u: 소유자 (user)
  • g: 그룹 (group)
  • o: 기타 사용자 (others)

숫자 방식:

1
2
3
chmod 644 [파일]    # rw-r--r--
chmod 755 [파일]    # rwxr-xr-x
chmod 777 [파일]    # rwxrwxrwx


9. 특수 권한


SetUID

1
-rwsr-xr-x
  • 파일 실행 시 소유자 권한으로 실행
  • s: 실행 권한 있음 + SetUID
  • S: 실행 권한 없음 + SetUID

SetGID

1
-rwxr-sr-x
  • 파일 실행 시 그룹 권한으로 실행
  • s: 실행 권한 있음 + SetGID
  • S: 실행 권한 없음 + SetGID

Sticky Bit

1
drwxrwxrwt
  • 공유 디렉토리에 주로 사용
  • 누구나 파일 생성 가능, 삭제는 소유자만 가능
  • 예: /tmp 디렉토리
  • t: 실행 권한 있음 + Sticky Bit
  • T: 실행 권한 없음 + Sticky Bit


10. 데이터 스트림 & 리다이렉션


표준 스트림

  • 0: 표준 입력 (stdin)
  • 1: 표준 출력 (stdout)
  • 2: 표준 에러 (stderr)

리다이렉션

출력 리다이렉션:

1
2
pwd > result.txt          # 출력을 파일로 저장 (덮어쓰기)
pwd >> result.txt         # 출력을 파일에 추가

에러 리다이렉션:

1
2
find / -name "test" 2> error.log     # 에러만 파일로 저장
find / -name "test" 2> /dev/null     # 에러 메시지 무시

파이프 (Pipe)

1
명령어A | 명령어B

명령어A의 출력을 명령어B의 입력으로 전달

예시:

1
2
3
ifconfig | grep inet
ls /bin | grep "find"
cat /etc/passwd | wc -l


11. 실무 활용 예시


시스템 파일 검색

1
find / -name "rockyou.txt.gz" 2> /dev/null

네트워크 정보 필터링

1
ifconfig | grep inet

특정 권한 파일 찾기

1
find / -perm -4000 2> /dev/null    # SetUID 파일 찾기

로그 실시간 모니터링

1
tail -f /var/log/syslog | grep error




References


This post is licensed under CC BY 4.0 by the author.