kali linux로 배우는 linux

구워먹는 삼겹살·2025년 4월 12일
0

Kali Linux로 배우는 Linux 기초 명령어

📚 리눅스 명령어 & 개념

리눅스에서 파일 권한을 설정할 때, setuid, setgid, 스티키 비트와 같은 특별한 비트들이 있습니다. 이 비트들은 파일이나 디렉토리의 동작을 제어합니다.

1.1 setuid

  • setuid 비트가 설정된 파일은 실행 시 해당 파일의 소유자 권한으로 실행됩니다.
  • 예시: rwsr-xr-x
    • s: setuid 비트가 설정되었음을 의미합니다.
    • 설정: chmod u+s file_name

1.2 setgid

  • setgid 비트가 설정된 파일은 실행 시 해당 파일의 그룹 권한으로 실행됩니다.
  • 예시: rwxs--x--x
    • s: setgid 비트가 설정되었음을 의미합니다.
    • 설정: chmod g+s file_name

1.3 스티키 비트 (Sticky Bit)

  • 스티키 비트는 디렉토리에서 사용되며, 디렉토리 내 파일을 소유자만 삭제할 수 있도록 제한합니다.
  • 예시: rwxrwxrwt
    • t: 스티키 비트가 설정되었음을 의미합니다.
    • 설정: chmod +t directory_name

📄 권한 변경 (chmod)

리눅스에서 파일이나 디렉토리의 권한을 변경할 때 chmod 명령어를 사용합니다. 권한은 소유자(user), 그룹(group), 기타 사용자(others)로 구분되며, 각 사용자에게 읽기(read), 쓰기(write), 실행(execute) 권한을 설정할 수 있습니다.

2.1 chmod u, g, o 사용

  • u: 소유자 (user)
  • g: 그룹 (group)
  • o: 기타 사용자 (others)

예시:

  • chmod u+x file_name: 소유자에게 실행 권한 추가
  • chmod g-w file_name: 그룹에게 쓰기 권한 제거
  • chmod o=r file_name: 기타 사용자에게 읽기 권한만 부여

2.2 비트 숫자 권한 설정

  • r = 4, w = 2, x = 1입니다.
  • 예시:
    • chmod 755 file_name: 소유자: 읽기, 쓰기, 실행 (7), 그룹: 읽기, 실행 (5), 기타 사용자: 읽기, 실행 (5)
    • chmod 644 file_name: 소유자: 읽기, 쓰기 (6), 그룹: 읽기 (4), 기타 사용자: 읽기 (4)

2.3 대문자와 소문자의 차이점

  • 파일 권한에서 대문자소문자는 다르게 해석됩니다. 대문자는 잘못된 권한 설정을 나타내거나 권한을 사용할 수 없는 상태를 의미할 수 있습니다.
    • 소문자 t: 스티키 비트가 설정되어 있으며, 파일의 소유자만 해당 파일을 삭제할 수 있습니다.
    • 대문자 T: 스티키 비트가 설정되었지만, 파일 소유자에게도 삭제 권한이 없는 상태입니다. 즉, 소유자조차도 삭제할 수 없습니다.
      • 예시: rwxrwxrwt는 소유자만 삭제할 수 있지만, rwxrwxr-T는 소유자조차도 삭제할 수 없습니다.

2.4 다른 대문자 권한

  • 대문자 S: setuid 또는 setgid 비트가 설정되었으나, 실행 권한이 없는 상태입니다. 즉, 파일을 실행할 수 없지만 해당 비트는 설정된 상태입니다.
    • 예시: rwSr-xr-x: setuid 비트가 설정되었지만, 실행 권한이 없으므로 실행할 수 없습니다.
  • 대문자 S (setgid): 이와 유사하게, setgid 비트가 설정되었으나 실행 권한이 없을 때도 대문자 S로 표시됩니다.
    • 예시: rw-S--x--x: setgid 비트가 설정되었으나 실행 권한이 없어 실행할 수 없습니다.

🖥️ 입력, 출력, 에러 데이터 스트림 (fd)

리눅스에서 각 프로세스는 표준 입력(stdin), 표준 출력(stdout), 표준 에러(stderr)라는 세 가지 기본 데이터 스트림을 사용합니다.

  • stdin: 0번 파일 디스크립터 (입력)
  • stdout: 1번 파일 디스크립터 (출력)
  • stderr: 2번 파일 디스크립터 (에러 출력)

3.1 리다이렉션 (>)

  • >는 출력 리다이렉션을 의미합니다. 명령어의 출력을 파일로 보낼 수 있습니다.
  • 예시: echo "Hello, World!" > output.txt (출력 내용을 output.txt 파일에 저장)

3.2 입력 리다이렉션 (<)

  • <는 입력 리다이렉션을 의미합니다. 파일의 내용을 명령어로 입력할 수 있습니다.
  • 예시: sort < input.txt (input.txt 파일 내용을 정렬하여 출력)

3.3 에러 리다이렉션 (2>)

  • 2>는 표준 에러 출력을 리다이렉션합니다.
  • 예시: ls non_existent_file 2> error.log (에러 메시지를 error.log 파일로 저장)

🔍 grep와 파이프라인 (Pipeline)

grep은 텍스트 파일에서 특정 문자열을 검색하는 명령어입니다. 파이프라인(|)을 사용하면, 명령어의 출력을 다른 명령어의 입력으로 연결할 수 있습니다.

4.1 grep 사용 예시

  • grep "pattern" file_name: 파일에서 "pattern"을 검색

4.2 파이프라인 사용 예시

  • cat file_name | grep "pattern": 파일의 내용을 출력하고, "pattern"이 포함된 줄만 출력
  • 파이프라인(|)은 명령어의 출력을 다른 명령어의 입력으로 전달합니다. 예를 들어, cat file_name의 출력을 grep 명령어로 전달하여, 파일 내에서 특정 패턴을 찾을 수 있습니다.

0개의 댓글