我有一个具有以下权限的文件夹:
drwxrws--x+ 13 myuser www-data 4096 Mar 20 09:57 project-folder
archive.zip
在此文件夹中,我有一个具有以下权限的档案:
-rw-rw----+ 1 myuser www-data 10260 Mar 20 09:56 archive.zip
当我通过调用解压档案时,unzip archive.zip
我得到了以下文件列表:
drwxrwx--x+ 3 myuser www-data 4096 May 5 2017 folder-from-archive
我们可以看到,所有者组www-data
与父文件夹相同project-folder
,但folder-from-archive
没有设置组ID位(s
权限字符串中的)并且此文件夹的内容不属于组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
但是,当我尝试以 root 用户身份解压该存档时,权限和组所有者(以及文件夹中的文件)是正确的:
drwxr-s--x+ 3 root www-data 4096 May 5 2017 folder-from-archive
文件夹中的文件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
我们可以看到,通过 root 用户解压后,文件夹继承了 setgid 位,并www-data
为其自身和所有包含的文件设置了正确的组。
如何让用户获得相同的行为myuser
?
答案1
该行为是默认行为,但后来开始被视为安全问题(CVE-2005-0602)。
unzip --help
显示有帮助的参数:-K keep setuid/setgid/tacky permissions
。因此命令应该是unzip -K archive.zip
。