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