У меня есть папка со следующими полномочиями:
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
не имеет бита setgid ( 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
?
То поведение было значением по умолчанию, но позже оно начало рассматриваться как проблему безопасности (CVE-2005-0602).
unzip --help
выставочный аргумент, который должен помочь: -K keep setuid/setgid/tacky permissions
. Поэтому команда должна быть unzip -K archive.zip
.