Linux 에서 파일 읽기 가능 여부 확인 방법

LinuxBeginner
지금 연습하기

소개

이 랩에서는 다양한 명령줄 도구를 사용하여 Linux 에서 파일의 읽기 가능 여부를 확인하는 방법을 배우게 됩니다. 먼저, 기본적인 test -r 명령을 사용하여 프로그래밍 방식으로 읽기 권한을 확인하고, 조건식에서의 사용법을 이해합니다.

다음으로, ls -l 명령을 탐색하여 파일 권한을 시각적으로 검사하고, 권한 문자열과 그 의미에 대한 통찰력을 얻습니다. 마지막으로, stat 명령을 자세히 살펴보고 파일의 접근 권한 및 기타 메타데이터를 포함한 상세 정보를 얻습니다. 이러한 단계를 완료함으로써 Linux 환경에서 파일의 읽기 가능성을 결정하는 실질적인 기술을 습득하게 됩니다.

test -r 로 읽기 가능 여부 테스트

이 단계에서는 -r 옵션과 함께 test 명령을 사용하여 파일에 대한 읽기 권한이 있는지 확인하는 방법을 배우게 됩니다.

test 명령은 조건식을 평가하는 내장 셸 명령입니다. 셸 스크립트에서 결정을 내리는 데 자주 사용됩니다. -r 옵션은 특히 파일이 존재하고 현재 사용자가 읽을 수 있는지 확인합니다.

이를 테스트하기 위해 간단한 파일을 만들어 보겠습니다. echo 명령을 사용하여 ~/project 디렉토리의 my_file.txt라는 파일에 텍스트를 넣습니다.

다음 명령을 입력하고 Enter 키를 누르십시오.

echo "This is a test file." > ~/project/my_file.txt

이 명령은 ~/project/my_file.txt 파일을 생성하고 문자열 "This is a test file."을 파일에 씁니다. > 기호는 echo 명령의 출력을 지정된 파일로 리디렉션합니다.

이제 test -r을 사용하여 이 파일을 읽을 수 있는지 확인해 보겠습니다. test 명령 자체는 조건이 참이면 출력을 생성하지 않습니다. 일반적으로 결과를 보기 위해 echo와 같은 다른 명령과 결합합니다.

다음 명령을 입력하고 Enter 키를 누르십시오.

test -r ~/project/my_file.txt && echo "File is readable."

&& 연산자는 "왼쪽의 명령이 성공하면 (0 종료 상태를 반환하면) 오른쪽의 명령을 실행"을 의미합니다. test -r ~/project/my_file.txt가 참이면 (파일을 읽을 수 있음을 의미), echo 명령이 실행됩니다.

다음 출력을 볼 수 있습니다.

File is readable.

이제 존재하지 않는 파일을 확인해 보겠습니다.

다음 명령을 입력하고 Enter 키를 누르십시오.

test -r ~/project/non_existent_file.txt && echo "This won't be printed."

~/project/non_existent_file.txt가 존재하지 않으므로 test -r은 0 이 아닌 종료 상태 (실패) 를 반환하고 echo 명령은 실행되지 않습니다. 이 명령의 출력은 표시되지 않아야 합니다.

test 명령은 Linux 에서 스크립팅을 위한 기본적인 도구입니다. -r과 같은 다양한 옵션을 사용하는 방법을 이해하는 것은 파일 권한 및 존재 여부를 확인한 후 작업을 시도할 수 있는 강력한 스크립트를 작성하는 데 매우 중요합니다.

다음 단계로 진행하려면 계속을 클릭하십시오.

ls -l 로 권한 확인

이전 단계에서는 test -r을 사용하여 파일의 읽기 가능 여부를 확인했습니다. 이제 -l 옵션과 함께 ls 명령을 사용하여 파일의 상세 권한을 확인해 보겠습니다.

ls 명령은 디렉토리 내용을 나열합니다. -l 옵션은 파일 유형, 권한, 하드 링크 수, 소유자, 그룹, 크기, 수정 시간 및 파일 이름을 포함하는 "long listing" 형식을 제공합니다.

이전 단계에서 생성한 my_file.txt 파일의 권한을 살펴보겠습니다. ~/project 디렉토리에 있는지 확인하십시오. pwd 명령을 사용하여 현재 디렉토리를 확인할 수 있습니다.

pwd

/home/labex/project가 표시되어야 합니다.

이제 다음 명령을 입력하고 Enter 키를 누르십시오.

ls -l my_file.txt

다음과 유사한 출력을 볼 수 있습니다.

-rw-rw-r-- 1 labex labex XX Month XX XX:XX my_file.txt

파일 유형과 권한을 나타내는 출력의 첫 번째 부분을 분석해 보겠습니다.

-rw-rw-r--

이 10 자 문자열은 파일의 권한에 대해 많은 정보를 제공합니다.

  1. 첫 번째 문자는 파일 유형을 나타냅니다.

    • -는 일반 파일임을 의미합니다.
    • d는 디렉토리임을 의미합니다.
    • l은 심볼릭 링크임을 의미합니다.
    • (다른 유형도 있지만, 이것들이 가장 일반적입니다).
  2. 다음 9 자는 세 개의 세트로 그룹화됩니다.

    • 첫 번째 세트 (rw-) 는 파일의 소유자에 대한 권한을 보여줍니다.
    • 두 번째 세트 (rw-) 는 파일이 속한 그룹에 대한 권한을 보여줍니다.
    • 세 번째 세트 (r--) 는 다른 사용자 (다른 모든 사용자) 에 대한 권한을 보여줍니다.

각 세 개의 문자 내에서:
_첫 번째 문자는 읽기 권한 (r) 을 나타냅니다. 하이픈 (-) 이 있으면 읽기 권한이 거부됩니다.
_ 두 번째 문자는 쓰기 권한 (w) 을 나타냅니다. 하이픈 (-) 이 있으면 쓰기 권한이 거부됩니다.
_ 세 번째 문자는 실행 권한 (x) 을 나타냅니다. 하이픈 (-) 이 있으면 실행 권한이 거부됩니다.

따라서 권한이 -rw-rw-r--my_file.txt의 경우:

  • 소유자 (labex) 는 읽기 (r) 및 쓰기 (w) 권한이 있지만 실행 (-) 권한은 없습니다.
  • 그룹 (labex) 은 읽기 (r) 및 쓰기 (w) 권한이 있지만 실행 (-) 권한은 없습니다.
  • 다른 사용자는 읽기 (r) 권한이 있지만 쓰기 (-) 또는 실행 (-) 권한은 없습니다.

이 출력은 소유자 (labex) 가 읽기 권한을 가지고 있음을 확인하며, 이것이 이전 단계에서 test -r이 작동한 이유입니다.

ls -l의 출력을 이해하는 것은 Linux 에서 파일 및 디렉토리를 관리하고 누가 액세스할 수 있는지 제어하는 데 필수적입니다.

계속 진행하려면 계속을 클릭하십시오.

stat 명령어로 파일 접근 정보 확인

이 단계에서는 stat 명령을 사용하여 파일의 접근, 수정 및 변경 시간과 기호 및 숫자 형식의 권한을 포함한 파일에 대한 자세한 정보를 얻습니다.

ls -l은 권한에 대한 좋은 개요를 제공하지만, stat은 파일의 메타데이터를 더 자세히 살펴봅니다.

~/project 디렉토리에서 이전에 생성한 my_file.txt 파일에 stat을 사용해 보겠습니다.

다음 명령을 입력하고 Enter 키를 누르십시오.

stat ~/project/my_file.txt

다음과 유사한 출력을 볼 수 있습니다.

  File: /home/labex/project/my_file.txt
  Size: XX          Blocks: X          IO Block: XXXX   regular file
Device: XXh/XXd Inode: XXXXXXXX    Links: X
Access: (0664/-rw-rw-r--)  Uid: (  XXXX/   labex)   Gid: (  XXXX/   labex)
Access: XXXX-XX-XX XX:XX:XX.XXXXXXXXXX +XXXX
Modify: XXXX-XX-XX XX:XX:XX.XXXXXXXXXX +XXXX
Change: XXXX-XX-XX XX:XX:XX.XXXXXXXXXX +XXXX
 Birth: -

출력의 몇 가지 주요 줄을 살펴보겠습니다.

  • File: 파일의 이름입니다.
  • Size: 파일 크기 (바이트) 입니다.
  • Access: (0664/-rw-rw-r--): 이 줄은 두 가지 형식으로 권한을 보여줍니다.
    • 0664: 이것은 권한의 숫자 (8 진수) 표현입니다. 각 숫자는 각각 소유자, 그룹 및 다른 사용자에 대한 권한을 나타냅니다.
      • 소유자에 대한 6: rwx (읽기=4, 쓰기=2, 실행=0) -> 4+2+0 = 6
      • 그룹에 대한 6: rwx (읽기=4, 쓰기=2, 실행=0) -> 4+2+0 = 6
      • 다른 사용자에 대한 4: rwx (읽기=4, 쓰기=0, 실행=0) -> 4+0+0 = 4
      • 선행 0은 종종 8 진수 표기법을 나타내는 데 사용됩니다.
    • -rw-rw-r--: 이것은 ls -l을 통해 배운 권한의 기호 표현입니다.
  • UidGid: 파일 소유자 및 그룹의 사용자 ID 와 그룹 ID, 그리고 해당 이름입니다.
  • Access, Modify, Change: 이 줄은 파일의 타임스탬프를 보여줍니다.
    • Access: 파일에 마지막으로 액세스 (읽기) 한 시간입니다.
    • Modify: 파일 내용이 마지막으로 수정된 시간입니다.
    • Change: 파일의 메타데이터 (예: 권한, 소유자, 그룹) 가 마지막으로 변경된 시간입니다.

stat 명령은 특히 스크립팅 또는 권한 문제를 해결해야 할 때 파일의 속성에 대한 자세한 정보가 필요한 경우 매우 유용합니다.

이제 Linux 에서 파일 권한 및 액세스 정보를 검사하는 세 가지 다른 방법 (test -r, ls -l, stat) 을 배웠습니다. 이것들은 명령줄에서 파일 작업을 위한 필수 도구입니다.

이 랩을 완료하려면 계속을 클릭하십시오.

요약

이 랩에서는 -r 옵션과 함께 test 명령을 사용하여 Linux 에서 파일의 읽기 가능 여부를 확인하는 방법을 배웠습니다. 파일을 생성한 다음 test -r&& 연산자와 함께 사용하여 파일의 읽기 가능 여부에 따라 조건부로 메시지를 출력하는 연습을 했습니다. 또한 test -r이 존재하지 않는 파일에 대해 false 를 반환하여 후속 명령의 실행을 방지한다는 것을 확인했습니다. 이 단계는 쉘 스크립팅에서 프로그래밍 방식으로 파일 권한을 확인하는 기본적인 방법을 보여주었습니다.