Risoluzione dei problemi relativi all'accesso da parte di utenti non root ai file in IBM Cloud
Risolvi i problemi relativi all'accesso da parte di utenti non root ai file caricati su IBM Cloud quando utilizzi runAsUser nella distribuzione della tua app, comprese le autorizzazioni.
Virtual Private Cloud Infrastruttura classica
Hai caricato dei file nella tua istanza del servizio IBM Cloud Object Storage utilizzando la console o l'API REST. Quando provi ad accedere a questi file con un utente non root che hai definito con runAsUser nella tua distribuzione
dell'applicazione, l'accesso ai file viene rifiutato.
In Linux, un file o una directory hanno tre gruppi di accesso: Owner, Group e Other. Quando carichi un file in IBM Cloud Object Storage utilizzando la console o l'API REST, le autorizzazioni per Owner,
Group e Other vengono rimosse. L'autorizzazione di ciascun file si presenta così:
d--------- 1 root root 0 Jan 1 1970 <file_name>
Quando carichi un file utilizzando il plugin IBM Cloud Object Storage, le autorizzazioni per il file vengono conservate e non modificate.
Per accedere al file con un utente non root, quest'ultimo deve disporre delle autorizzazioni in lettura e scrittura per il file. La modifica dei permessi di un file nell'ambito della distribuzione dei pod richiede un'operazione di scrittura. IBM Cloud Object Storage non è progettato per carichi di lavoro in scrittura.
L'aggiornamento delle autorizzazioni durante la distribuzione del pod potrebbe impedire al tuo pod di passare a uno stato di Running.
Per risolvere questo problema, prima di montare la PVC nel tuo pod dell'applicazione, crea un altro pod per impostare l'autorizzazione corretta per l'utente non root.
-
Per controllare le autorizzazioni dei tuoi file nel bucket, crea un file di configurazione per il tuo pod
test-permissione denomina il filetest-permission.yaml.apiVersion: v1 kind: Pod metadata: name: test-permission spec: containers: - name: test-permission image: nginx volumeMounts: - name: cos-vol mountPath: /test volumes: - name: cos-vol persistentVolumeClaim: claimName: <pvc_name> -
Crea il pod
test-permission.oc apply -f test-permission.yaml -
Accedi al tuo pod.
oc exec test-permission -it bash -
Passa al percorso di montaggio ed elenca le autorizzazioni per i tuoi file.
cd test && ls -alOutput di esempio
d--------- 1 root root 0 Jan 1 1970 <file_name> -
Elimina il pod.
oc delete pod test-permission -
Crea un file di configurazione per il pod che utilizzi per correggere le autorizzazioni dei tuoi file e denominalo
fix-permission.yaml.apiVersion: v1 kind: Pod metadata: name: fix-permission namespace: <namespace> spec: containers: - name: fix-permission image: busybox command: ['sh', '-c'] args: ['chown -R <nonroot_userID> <mount_path>/*; find <mount_path>/ -type d -print -exec chmod u=+rwx,g=+rx {} \;'] volumeMounts: - mountPath: "<mount_path>" name: cos-volume volumes: - name: cos-volume persistentVolumeClaim: claimName: <pvc_name> -
Crea il pod
fix-permission.oc apply -f fix-permission.yaml -
Attendi che il pod passi a uno stato di
Completed.oc get pod fix-permission -
Elimina il pod
fix-permission.oc delete pod fix-permission -
Ricrea il pod
test-permissionche hai utilizzato in precedenza per controllare le autorizzazioni.oc apply -f test-permission.yaml
Verifica che i permessi dei tuoi file siano aggiornati
-
Accedi al tuo pod.
oc exec test-permission -it bash -
Passa al percorso di montaggio ed elenca le autorizzazioni per i tuoi file.
cd test && ls -alOutput di esempio
-rwxrwx--- 1 <nonroot_userID> root 6193 Aug 21 17:06 <file_name> -
Elimina il pod
test-permission.oc delete pod test-permission -
Monta la PVC nell'applicazione con l'utente non root.
Imposta runAsUser e fsGroup agli stessi valori nel tuo YAML di distribuzione.
Dopo aver impostato i permessi corretti per i file nell'istanza del servizio IBM Cloud Object Storage, non caricare file tramite la console o l'API REST. Utilizza il plugin IBM Cloud Object Storage per aggiungere file alla tua istanza del servizio.