Можно ли сохранить бит setgid при распаковке файлов в качестве пользователя без полномочий root?

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

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?

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

2 ответа

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

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

0
ответ дан 17 July 2018 в 18:28

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

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

0
ответ дан 23 July 2018 в 19:16
  • 1
    Я знаю об этом варианте, но он не работает. Я уже пробовал это с помощью myuser unzip -K archive.zip, это вывод ls -l команды `drwxrwx - x + 3 myuser www-data 4096 5 мая 2017 проекта-папки. Таким образом, нет разрешений setgid. Но почему он работает для root без этой опции? – koninka 20 March 2018 в 16:42
  • 2
    Я думаю, -K по умолчанию для пользователя root. Так или иначе, это работает для меня: paste.ubuntu.com/p/WZMMJcxMgq – mati865 21 March 2018 в 17:57
  • 3
    Ваш пример неверен. У вас должен быть другой владелец и владелец группы, также у вас должен быть установлен бит setgid в корневой папке (chmod g+s folder) и наследовать его после разархивирования (цель наследует группу владельцев корневой папки, группа владельца отличается для владельца пользователя , а распакованный каталог также должен иметь бит setgid. – koninka 22 March 2018 в 05:47

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

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