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

LinuxBeginner
지금 연습하기

소개

이 랩에서는 다양한 방법을 사용하여 Linux 에서 파일의 쓰기 가능 여부를 확인하는 방법을 배우게 됩니다. 먼저, test -w 명령을 사용하여 쓰기 가능성을 빠르게 확인하고 쉘 스크립팅에서 이 명령의 사용법을 이해하는 것으로 시작합니다.

다음으로, ls -l 명령을 사용하여 파일 권한을 자세히 확인하고, 출력을 해석하여 소유자, 그룹 및 기타 권한을 이해합니다. 마지막으로, stat 명령을 사용하여 파일 액세스 정보를 보다 포괄적으로 검사합니다.

test -w 로 쓰기 가능 여부 테스트

이 단계에서는 -w 옵션과 함께 test 명령을 사용하여 파일 또는 디렉토리에 쓰기 권한이 있는지 확인하는 방법을 배우겠습니다. Linux 에서 파일 권한은 파일을 읽고, 쓰고, 실행할 수 있는 사용자를 결정하므로 이해하는 것이 중요합니다.

test 명령은 조건을 확인하고 0 (true) 또는 1 (false) 의 종료 상태를 반환하는 내장 쉘 명령입니다. -w 옵션은 특히 현재 사용자가 파일 또는 디렉토리에 쓰기 가능한지 확인합니다.

~/project 디렉토리에 간단한 파일을 만들어 보겠습니다. 존재하지 않는 경우 빈 파일을 만드는 touch 명령을 사용합니다.

아직 해당 디렉토리에 있지 않다면 프로젝트 디렉토리로 이동합니다.

cd ~/project

이제 my_test_file.txt라는 파일을 만듭니다.

touch my_test_file.txt

ls 명령을 사용하여 파일이 생성되었는지 확인할 수 있습니다.

ls

출력에 my_test_file.txt가 나열되어야 합니다.

이제 test -w 명령을 사용하여 이 파일에 쓸 수 있는지 확인해 보겠습니다. 결과를 보기 위해 echo 명령과 결합합니다.

test -w my_test_file.txt && echo "Writable" || echo "Not writable"

이 명령을 자세히 살펴보겠습니다.

  • test -w my_test_file.txt: my_test_file.txt가 쓰기 가능한지 확인합니다.
  • && echo "Writable": test 명령이 true (종료 상태 0) 를 반환하면 && 연산자는 다음 명령을 실행하여 "Writable"을 출력합니다.
  • || echo "Not writable": test 명령이 false (종료 상태 1) 를 반환하면 || 연산자는 다음 명령을 실행하여 "Not writable"을 출력합니다.

홈 디렉토리에서 labex 사용자로 파일을 만들었으므로 쓰기 권한이 있어야 하며, 출력은 다음과 같아야 합니다.

Writable

test -w 명령은 파일에 쓰기를 시도하기 전에 권한을 확인하여 잠재적인 오류를 방지하기 위해 쉘 스크립트에서 자주 사용됩니다.

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

ls -l 로 권한 확인

이 단계에서는 ls -l 명령을 사용하여 파일 및 디렉토리에 대한 자세한 정보 (권한 포함) 를 확인합니다. 이 명령은 Linux 시스템에서 누가 무엇에 액세스할 수 있는지 이해하는 데 필수적입니다.

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

~/project 디렉토리에 있는지 확인합니다.

cd ~/project

이제 ls -l 명령을 실행하여 이 디렉토리의 파일 세부 정보를 확인합니다. 이전 단계에서 생성한 my_test_file.txt 파일이 표시됩니다.

ls -l

출력은 다음과 유사합니다.

-rw-rw-r-- 1 labex labex    0 Month Day HH:MM my_test_file.txt

파일 권한을 나타내는 출력의 첫 번째 부분을 자세히 살펴보겠습니다.

-rw-rw-r--

이 10 자 문자열은 파일 유형과 다른 사용자에 대한 권한에 대해 알려줍니다.

  1. 첫 번째 문자 (이 경우 -) 는 파일 유형을 나타냅니다.
    • -: 일반 파일
    • d: 디렉토리
    • l: 심볼릭 링크 (Symbolic link)
    • 기타...
  2. 다음 9 자는 세 개의 세트로 그룹화됩니다.
    • 첫 번째 세트 (rw-): 파일 소유자의 권한.
    • 두 번째 세트 (rw-): 파일이 속한 그룹의 권한.
    • 세 번째 세트 (r--): 기타 (시스템의 다른 모든 사용자) 의 권한.

각 세 개의 문자 내에서:

  • r: 읽기 권한 (파일 내용 보기 또는 디렉토리 내용 나열 허용).
  • w: 쓰기 권한 (파일 수정 또는 디렉토리 내에서 파일 생성/삭제 허용).
  • x: 실행 권한 (파일을 프로그램으로 실행하거나 디렉토리에 진입 허용).
  • -: 권한이 부여되지 않음을 나타냅니다.

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

  • 소유자 (labex) 는 읽기 (r) 및 쓰기 (w) 권한을 갖습니다.
  • 그룹 (labex) 은 읽기 (r) 및 쓰기 (w) 권한을 갖습니다.
  • 다른 사용자는 읽기 (r) 권한만 갖습니다.

이 출력은 이전 단계에서 test -w 명령이 labex 사용자에 대해 "Writable"을 반환한 이유를 확인합니다. 즉, 소유자 (labex) 가 쓰기 권한 (w) 을 가지고 있기 때문입니다.

ls -l 출력을 이해하는 것은 Linux 에서 파일 및 권한을 관리하는 데 기본입니다.

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

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

이 단계에서는 stat 명령을 사용하여 파일 또는 파일 시스템에 대한 자세한 정보를 얻습니다. ls -l은 간략한 개요를 제공하는 반면, stat은 액세스, 수정 및 변경 시간을 포함하여 파일 메타데이터에 대한 훨씬 더 포괄적인 정보를 제공합니다.

~/project 디렉토리에 있는지 확인합니다.

cd ~/project

이제 이전에 생성한 my_test_file.txt 파일에 대해 stat 명령을 사용해 보겠습니다.

stat my_test_file.txt

출력은 매우 자세하며 다음과 유사할 수 있습니다.

  File: my_test_file.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: ---h/---d       Inode: ---         Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 5000/   labex)   Gid: ( 5000/   labex)
Access: YYYY-MM-DD HH:MM:SS.SSSSSSSSS +ZZZZ
Modify: YYYY-MM-DD HH:MM:SS.SSSSSSSSS +ZZZZ
Change: YYYY-MM-DD HH:MM:SS.SSSSSSSSS +ZZZZ
 Birth: -

stat에서 제공하는 몇 가지 주요 정보 조각을 살펴보겠습니다.

  • File: 파일 이름.
  • Size: 바이트 단위의 파일 크기.
  • Access: (0664/-rw-rw-r--): 이 줄은 8 진수 (0664) 및 기호 (-rw-rw-r--) 형식으로 권한을 보여줍니다. 이는 ls -l로 확인한 권한과 일치합니다.
  • Uid: ( 5000/ labex): 파일 소유자의 사용자 ID (UID) 및 사용자 이름.
  • Gid: ( 5000/ labex): 파일 그룹의 그룹 ID (GID) 및 그룹 이름.
  • Access: 파일에 마지막으로 액세스 (읽기) 한 시간.
  • Modify: 파일 내용이 마지막으로 수정된 시간.
  • Change: 파일 메타데이터 (예: 권한, 소유권 등) 가 마지막으로 변경된 시간.
  • Birth: 파일 생성 시간 (모든 파일 시스템에서 사용 가능하지 않을 수 있음).

stat 명령은 ls -l보다 파일의 속성에 대한 더 자세한 정보를 제공합니다. 정확한 타임스탬프 또는 다양한 형식의 파일 소유권 및 권한에 대한 자세한 정보가 필요한 경우 특히 유용합니다.

특정 정보를 얻기 위해 옵션과 함께 stat을 사용할 수도 있습니다. 예를 들어, 8 진수 형식으로 액세스 권한만 보려면 다음을 수행합니다.

stat -c "%a" my_test_file.txt

이 명령은 -c 옵션을 사용하여 사용자 지정 형식을 지정합니다. "%a"는 8 진수 형식의 액세스 권한에 대한 형식 지정자입니다. 출력은 다음과 같아야 합니다.

664

이는 전체 stat 출력에 표시된 8 진수 권한 0664와 일치합니다 (선행 0 은 종종 생략됨).

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

요약

이 랩에서는 test -w 명령을 사용하여 Linux 에서 파일이 쓰기 가능한지 확인하는 방법을 배웠습니다. 이 명령은 쓰기 권한을 결정하는 간단하고 효과적인 방법이며, 오류를 방지하기 위해 셸 스크립팅에서 자주 사용됩니다. 파일을 생성한 다음 test -w&&|| 연산자와 결합하여 파일이 쓰기 가능한지 여부를 표시하는 연습을 했습니다.

또한 파일 소유권, 그룹 및 권한에 대한 자세한 정보를 사람이 읽을 수 있는 형식으로 제공하는 ls -l 명령을 사용하여 파일 권한을 확인하는 방법도 살펴보았습니다. 마지막으로, 액세스, 수정 및 변경 타임스탬프를 포함하여 파일 상태에 대한 보다 포괄적인 정보를 제공하는 stat 명령을 사용하여 파일 액세스 세부 정보를 검사하는 방법을 배웠습니다.