S3 Files의 POSIX 권한
POSIX 파일 시스템에는 모든 파일에 대한 소유권 및 권한이 필요합니다. Amazon S3는 데이터를 IAM 정책 및 버킷 정책으로 액세스를 제어하는 객체로 저장하며 기본적으로 파일 소유권 또는 권한 속성을 저장하지 않습니다. S3 Files는 소유자, 그룹, 파일 권한을 포함한 POSIX 메타데이터를 각 S3 객체에 사용자 정의 메타데이터로 저장하여 이러한 차이를 연결합니다. S3 Files를 통해 파일을 생성하거나 수정하면 서비스가 자동으로 모든 권한 메타데이터를 씁니다. 예를 들어 Amazon S3 콘솔, AWS CLI 또는 AWS SDK를 통해 파일 시스템 외부의 S3 버킷에 객체를 쓰면 해당 객체에는 POSIX 메타데이터가 존재하지 않습니다. S3 Files는 이러한 객체에 root:root 소유권 및 644 권한의 기본값을 할당하므로 비루트 사용자는 파일을 읽을 수 있지만 쓸 수는 없습니다. 이러한 기본값이 액세스 요구 사항을 충족하는 경우 별도의 조치가 필요하지 않습니다. 애플리케이션에 필요한 경우 해당 객체에 대한 기본 권한을 재정의할 수 있습니다. 이 자습서에서는 사용자 지정 권한을 적용하는 방법을 안내합니다.
S3 Files가 POSIX 메타데이터를 저장하는 방법
S3 Files는 POSIX 정보를 각 객체에 사용자 정의 메타데이터로 저장합니다. 다음 메타데이터 키는 소유권 및 권한을 제어합니다.
| 메타데이터 키 | 설명 | 예시 값 |
|---|---|---|
x-amz-meta-file-owner |
POSIX 사용자 ID(UID) | 1000 |
x-amz-meta-file-group |
POSIX 그룹 ID(GID) | 1000 |
x-amz-meta-file-permissions |
파일 유형 및 권한 비트(8진수) | 0100644 |
객체에 POSIX 메타데이터가 없는 경우 S3 Files는 다음 기본값을 적용합니다.
파일:
0644권한이 있는root:root소유권(-rw-r--r--)디렉터리:
0755권한이 있는root:root소유권(drwxr-xr-x)
이러한 기본값에서는 모든 사용자가 파일을 읽고 디렉터리를 탐색할 수 있지만 소유자(루트)만 쓸 수 있습니다. 파일은 기본적으로 실행할 수 없습니다.
기존 객체에 POSIX 메타데이터 설정
다음 절차를 따라 버킷에 이미 존재하는 객체에 POSIX 소유권 및 권한을 적용합니다.
1단계: 대상 사용자의 UID 및 GID 식별
이 예제에서 대상 사용자는 UID가 1000인 ec2-user입니다.
$ id ec2-user uid=1000(ec2-user) gid=1000(ec2-user) groups=1000(ec2-user)
2단계: copy-object를 사용하여 객체 메타데이터 업데이트
aws s3api copy-object 명령은 업데이트된 메타데이터와 함께 객체를 제자리에 복사합니다. BUCKET_NAME 및 OBJECT_KEY를 선택한 값으로 바꿉니다.
--metadata-directive REPLACE 옵션은 객체의 모든 사용자 정의 메타데이터를 대체합니다. REPLACE는 콘텐츠 유형을 기본값(binary/octet-stream)으로 재설정하므로 객체의 콘텐츠 유형을 보존하려면 --content-type을 포함합니다. 다른 메타데이터 필드를 사용하는 경우 해당 필드를 --metadata 파라미터에 포함시킵니다.
aws s3api copy-object \ --bucket BUCKET_NAME \ --key OBJECT_KEY \ --copy-source BUCKET_NAME/OBJECT_KEY \ --metadata-directive REPLACE \ --content-type CONTENT_TYPE \ --metadata '{"file-owner":"1000", "file-group":"1000", "file-permissions":"0100644"}'
3단계: 메타데이터가 적용되었는지 확인
메타데이터를 확인하려면 다음 명령을 실행합니다.
aws s3api head-object --bucket BUCKET_NAME --key OBJECT_KEY
응답에는 POSIX 메타데이터가 포함됩니다.
{ "AcceptRanges": "bytes", "LastModified": "Mon, 18 May 2026 14:43:00 GMT", "ContentLength": 7214, "ETag": "\"abc123...\"", "ContentType": "image/png", "Metadata": { "file-owner": "1000", "file-group": "1000", "file-permissions": "0100644" } }
4단계: S3 파일 시스템에 대한 권한 확인
$ ls -ltr /mnt/s3files/ -rw-r--r--. 1 ec2-user ec2-user 7214 May 18 14:43 s3.png
이제 파일은 ec2-user가 소유하며 더 이상 루트 액세스가 필요하지 않습니다.
새 업로드에서 POSIX 메타데이터 설정
버킷에 객체를 업로드할 때 POSIX 메타데이터를 포함할 수 있습니다.
aws s3 cp 사용
aws s3 cp localfile.txt s3://BUCKET_NAME/localfile.txt \ --metadata '{"file-owner":"1000", "file-group":"1000", "file-permissions":"0100644"}'
aws s3api put-object 사용
aws s3api put-object \ --bucket BUCKET_NAME \ --key localfile.txt \ --body localfile.txt \ --metadata '{"file-owner":"1000", "file-group":"1000", "file-permissions":"0100644"}'
업로드된 객체의 메타데이터 확인
aws s3api head-object --bucket BUCKET_NAME --key localfile.txt
권한 값 참조
다음 표에는 일반적인 POSIX 권한 값 및 해당 사용 사례가 나와 있습니다.
| 8진수 값 | 파일 모드 | 사용 사례 |
|---|---|---|
0100644 |
-rw-r--r-- |
표준 파일: 소유자 읽기/쓰기, 기타 사용자 읽기 전용 |
0100664 |
-rw-rw-r-- |
공유 파일: 소유자 및 그룹 읽기/쓰기, 기타 사용자 읽기 전용 |
0100755 |
-rwxr-xr-x |
실행 파일: 소유자 전체 액세스, 기타 사용자 읽기 및 실행 |
0100666 |
-rw-rw-rw- |
World-writable 파일: 모든 사용자가 읽고 쓸 수 있음 |
0040755 |
drwxr-xr-x |
표준 디렉터리: 소유자 전체 액세스, 기타 사용자 읽기 및 탐색 |
모범 사례
가능하면 S3 파일 시스템을 통해 파일을 업로드합니다. S3 Files는 자동으로 파일의 소유권 및 권한을 객체 메타데이터로 저장하므로 추가 단계가 필요하지 않습니다. S3 버킷에 직접 업로드할 때는 업로드 명령에 POSIX 메타데이터를 포함시켜 처음부터 올바른 소유권 및 권한이 설정되도록 합니다.