É possível manter o bit setgid ao descompactar arquivos como usuário não-root?

2

Eu tenho uma pasta com as seguintes permissões:

drwxrws--x+ 13 myuser  www-data      4096 Mar 20 09:57 project-folder

Nesta pasta eu tenho um arquivo archive.zip com as seguintes permissões:

-rw-rw----+    1 myuser www-data  10260 Mar 20 09:56 archive.zip

Quando descompactei o arquivo, chamando unzip archive.zip , recebi a seguinte listagem de arquivos:

drwxrwx--x+    3 myuser www-data   4096 May  5  2017 folder-from-archive

Como podemos ver, o grupo de proprietários é www-data como o mesmo para a pasta pai project-folder , mas o folder-from-archive não tem o bit setgid (o s nas permissões string) e o conteúdo desta pasta não pertence ao grupo www-data :

-rw-rw----+ 1 myuser myuser 1083 May  5  2017 LICENSE
-rw-rw----+ 1 myuser myuser 2197 May  5  2017 README.md
-rw-rw----+ 1 myuser myuser  720 May  5  2017 autoload.php
-rw-rw----+ 1 myuser myuser  786 May  5  2017 composer.json
drwxrwx--x+ 3 myuser myuser 4096 May  5  2017 source

Mas quando tentei descompactar este arquivo como usuário root, as permissões e o proprietário do grupo (assim como os arquivos na pasta) estavam corretos:

drwxr-s--x+    3 root www-data   4096 May  5  2017 folder-from-archive

Arquivos na pasta folder-from-archive :

-rw-r-----+ 1 root www-data 1083 May  5  2017 LICENSE
-rw-r-----+ 1 root www-data 2197 May  5  2017 README.md
-rw-r-----+ 1 root www-data  720 May  5  2017 autoload.php
-rw-r-----+ 1 root www-data  786 May  5  2017 composer.json
drwxr-s--x+ 3 root www-data 4096 May  5  2017 source

Como podemos ver depois de descompactar pelo usuário root, a pasta herdou o bit setgid e configurou o grupo correto www-data para si e todos os arquivos que continham.

Como obter o mesmo comportamento para o usuário myuser ?

    
por koninka 20.03.2018 / 11:40

1 resposta

0

Esse comportamento foi padrão, mas depois passou a ser considerado como um problema de segurança (CVE-2005-0602).

unzip --help mostra o argumento que deve ajudar: -K keep setuid/setgid/tacky permissions . Portanto, o comando deve ser unzip -K archive.zip .

    
por mati865 20.03.2018 / 12:49