Действительно ли возможно сохранить бит setgid при разархивации файлов как некорневого пользователя?

У меня есть папка со следующими полномочиями:

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?

2
задан 20 March 2018 в 13:55

1 ответ

То поведение было значением по умолчанию, но позже оно начало рассматриваться как проблему безопасности (CVE-2005-0602).

unzip --help выставочный аргумент, который должен помочь: -K keep setuid/setgid/tacky permissions. Поэтому команда должна быть unzip -K archive.zip.

0
ответ дан 2 December 2019 в 07:52

Другие вопросы по тегам:

Похожие вопросы: