• bjhaid's avatar
    Opt out of chowning and chmoding from kubectl cp. · 44bed94f
    bjhaid authored
    `kubectl cp` relies on tar to extract the copied file/directory in the
    container, tar by default attempts to chown/chmod the extracted file
    after extraction if the user is the "superuser"(root)
    
    ```
    --same-owner
    try extracting files with the same ownership as exists in the archive
    (default for superuser)
    -p, --preserve-permissions, --same-permissions
    extract information about file permissions (default for superuser)
    ```
    
    This fails in environment where the container runs as root but is not
    granted the OWNER or CHOWN capability.
    
    Before this patch below was the behavior of `kubectl cp`
    
    ```
    kubectl cp README.md foo-67b6fcbd4c-qjlt6:/tmp
    tar: README.md: Cannot change ownership to uid 1000, gid 1000: Operation
    not permitted
    tar: Exiting with failure status due to previous errors
    command terminated with exit code 2
    kubectl exec -it foo-67b6fcbd4c-qjlt6 -- ls -l /tmp/README.md
    -rw------- 1 1000 1000 3179 Oct  7 22:00 /tmp/README.md
    ```
    
    After this patch
    
    ```
    kubectl cp -x a foo-67b6fcbd4c-qjlt6:/
    kubectl exec -it foo-67b6fcbd4c-qjlt6 -- ls -l /tmp/README.md
    -rw-r--r-- 1 root root 3179 Oct  7 22:00 /tmp/README.md
    ```
    44bed94f
Name
Last commit
Last update
..
api Loading commit data...
apis Loading commit data...
auth Loading commit data...
capabilities Loading commit data...
client Loading commit data...
cloudprovider Loading commit data...
controller Loading commit data...
credentialprovider Loading commit data...
features Loading commit data...
fieldpath Loading commit data...
generated Loading commit data...
kubeapiserver Loading commit data...
kubectl Loading commit data...
kubelet Loading commit data...
kubemark Loading commit data...
master Loading commit data...
printers Loading commit data...
probe Loading commit data...
proxy Loading commit data...
quota Loading commit data...
registry Loading commit data...
routes Loading commit data...
scheduler Loading commit data...
security Loading commit data...
securitycontext Loading commit data...
serviceaccount Loading commit data...
ssh Loading commit data...
util Loading commit data...
version Loading commit data...
volume Loading commit data...
watch/json Loading commit data...
windows/service Loading commit data...
.import-restrictions Loading commit data...
BUILD Loading commit data...
OWNERS Loading commit data...