View a markdown version of this page

Autorizzazioni POSIX nei file S3 - Amazon Simple Storage Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Autorizzazioni POSIX nei file S3

I file system POSIX richiedono proprietà e autorizzazioni su ogni file. Amazon S3 archivia i dati come oggetti con accesso controllato da policy IAM e bucket policy e non archivia nativamente la proprietà o gli attributi di autorizzazione dei file. S3 Files colma questa differenza archiviando i metadati POSIX, inclusi i permessi del proprietario, del gruppo e dei file, come metadati definiti dall'utente su ogni oggetto S3. Quando crei o modifichi un file tramite S3 Files, il servizio scrive automaticamente tutti i metadati delle autorizzazioni. Quando un oggetto viene scritto nel bucket S3 all'esterno del file system, ad esempio tramite la console Amazon S3, la AWS CLI AWS o l'SDK, non esistono metadati POSIX su quell'oggetto. S3 Files assegna a tali oggetti un valore predefinito di root:root proprietà e 644 autorizzazioni, che consente agli utenti non root di leggere il file ma non di scrivervi. Se queste impostazioni predefinite soddisfano i requisiti di accesso, non è richiesta alcuna azione. Se l'applicazione lo richiede, è possibile sovrascrivere le autorizzazioni predefinite su tali oggetti. Questo tutorial illustra come applicare le autorizzazioni personalizzate.

In che modo S3 Files archivia i metadati POSIX

S3 Files memorizza le informazioni POSIX come metadati definiti dall'utente su ciascun oggetto. Le seguenti chiavi di metadati controllano la proprietà e le autorizzazioni:

Chiave per i metadati Description Valore di esempio
x-amz-meta-file-owner ID utente POSIX (UID) 1000
x-amz-meta-file-group ID di gruppo POSIX (GID) 1000
x-amz-meta-file-permissions Tipo di file e bit di autorizzazione (ottali) 0100644

Quando un oggetto non ha metadati POSIX, S3 Files applica le seguenti impostazioni predefinite:

  • File: root:root proprietà con autorizzazioni () 0644 -rw-r--r--

  • Elenchi: root:root proprietà con 0755 autorizzazioni () drwxr-xr-x

In base a queste impostazioni predefinite, tutti gli utenti possono leggere i file e navigare tra le directory, ma solo il proprietario (root) può scrivere. Per impostazione predefinita, i file non sono eseguibili.

Impostazione dei metadati POSIX su oggetti esistenti

Utilizzate la seguente procedura per applicare la proprietà e le autorizzazioni POSIX agli oggetti già esistenti nel bucket.

Passaggio 1: Identifica l'UID e il GID dell'utente di destinazione

Per questo esempio, l'utente di destinazione è ec2-user con UID 1000:

$ id ec2-user
uid=1000(ec2-user) gid=1000(ec2-user) groups=1000(ec2-user)

Fase 2: Aggiornare i metadati degli oggetti utilizzando copy-object

Il aws s3api copy-object comando copia l'oggetto al suo posto con i metadati aggiornati. Sostituisci BUCKET_NAME e OBJECT_KEY con i tuoi valori.

L'--metadata-directive REPLACEopzione sostituisce tutti i metadati definiti dall'utente sull'oggetto. Include --content-type per preservare il tipo di contenuto dell'oggetto, perché lo REPLACE reimposta al valore predefinito (). binary/octet-stream Se utilizzate altri campi di metadati, includeteli nel --metadata parametro.

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"}'

Fase 3: Verifica che i metadati siano stati applicati

Esegui il comando seguente per confermare i metadati:

aws s3api head-object --bucket BUCKET_NAME --key OBJECT_KEY

La risposta include i metadati 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" } }

Passaggio 4: verifica le autorizzazioni sul file system S3

$ ls -ltr /mnt/s3files/
-rw-r--r--. 1 ec2-user ec2-user 7214 May 18 14:43 s3.png

Il file è ora di proprietà di ec2-user e non richiede più l'accesso come root.

Impostazione dei metadati POSIX sui nuovi caricamenti

Puoi includere i metadati POSIX quando carichi oggetti nel tuo bucket.

Usare aws s3 cp

aws s3 cp localfile.txt s3://BUCKET_NAME/localfile.txt \ --metadata '{"file-owner":"1000", "file-group":"1000", "file-permissions":"0100644"}'

Usare 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"}'

Verifica i metadati sull'oggetto caricato

aws s3api head-object --bucket BUCKET_NAME --key localfile.txt

Riferimento ai valori di autorizzazione

La tabella seguente elenca i valori di autorizzazione POSIX comuni e i relativi casi d'uso.

Valore ottale Modalità file Caso d’uso
0100644 -rw-r--r-- File standard: proprietario read/write, altri di sola lettura
0100664 -rw-rw-r-- File condiviso: proprietario e gruppo read/write, altri di sola lettura
0100755 -rwxr-xr-x Eseguibile: accesso completo del proprietario, altri leggono ed eseguono
0100666 -rw-rw-rw- World-writable file: tutti gli utenti possono leggere e scrivere
0040755 drwxr-xr-x Cartella standard: accesso completo del proprietario, altri leggono e navigano

Best practice

Carica i file tramite il file system S3 ogni volta che è possibile. S3 Files archivia automaticamente la proprietà e le autorizzazioni del file come metadati degli oggetti, quindi non sono necessari passaggi aggiuntivi. Quando carichi direttamente nel bucket S3, includi i metadati POSIX nel comando upload per garantire che la proprietà e le autorizzazioni corrette siano impostate fin dall'inizio.