Що насправді зберігає прапор tar -p (зберігати дозволи)?


22

Що -pпрапор фактично зберігає під час створення та витягу тарболу? Це rwxдозволи, які він зберігає?

Коли я створив htdocs/тарбол, що належить root, його витяг на локальну машину змінив право власності з root на мого користувача.


5
Можливо, вам слід спробувати витягнути архів як корінь. Неможливо встановити дозволи для іншого користувача як звичайного користувача, тому, я думаю tar, не зможе це зробити також. Скажіть, будь ласка, чи спрацювало це
Луї Маттійссен

"місцева машина"? Поясніть, будь ласка, яку ОС має ця машина;)
Rinzwind

Також розкажіть, які файлові системи ви використовуєте. Як вихідні, так і цільові.
тердон

Джерело: Red Hat Enterprise Linux Server release 6.5 (Santiago) Ціль: Ubuntu 13.10 обоє використовуютьGPT
nicoX

Бічна примітка: tarзберігає дозволи. -pта --same-owner/ --no-same-owner(як у відповідях) - прапорці вилучення. Вони не мають ефекту під час архівування
Fr0zenFyr

Відповіді:


19

Власність та дозволи - це дві різні речі. -pПрапор зберігає дозволу . У * nix системах звичайні користувачі не можуть змінювати право власності на файл на користувача, який не є самим собою.

Як пояснено тут :

Тільки процеси з ефективним ідентифікатором користувача, рівним ідентифікатору користувача файлу, або з відповідними привілеями, можуть змінити право власності на файл. Якщо _POSIX_CHOWN_RESTRICTED діє для шляху:

  • Зміна ідентифікатора користувача обмежується процесами з відповідними привілеями.

  • Зміна групового ідентифікатора дозволено до процесу з ефективним ідентифікатором користувача, рівним ідентифікатору користувача файлу, але без відповідних привілеїв, якщо і лише тоді, коли власник дорівнює ідентифікатору користувача файлу або (uid_t) -1 і група дорівнює або до ефективного ідентифікатора групи виклику, або до одного з додаткових ідентифікаторів групи.

Обґрунтування цього чітко пояснило @Gilles у цій відповіді Unix & Linux:

Причиною цього обмеження є те, що передача файлу іншому користувачеві може призвести до того, що погані речі трапляються в нечастому, але все ж важливому випадку. Наприклад:

  • Якщо в системі увімкнено дискові квоти, Аліса могла створити файл, що записується у всьому світі, під каталог, доступний лише їй (щоб ніхто більше не міг отримати доступ до цього каталогу, що записується у світі), а потім запустити chown, щоб зробити цей файл власником іншого користувача Білла . Файл зараховується до дискової квоти Білла, навіть якщо тільки Аліса може використовувати цей файл.
  • Якщо Аліса передає файл Біллу, то немає й сліду, щоб Білл не створив цей файл. Це може бути проблемою, якщо файл містить незаконні дані або іншим чином компрометує дані.
  • Деякі програми вимагають, щоб їх вхідний файл належав певному користувачеві для автентифікації запиту (наприклад, файл містить деякі інструкції, які програма виконує від імені цього користувача). Зазвичай це не безпечна конструкція, оскільки навіть якщо Білл створив файл, що містить синтаксично правильні інструкції, він, можливо, не мав наміру виконувати їх саме в цей час. Тим не менш, дозволити Алісі створити файл з довільним вмістом і взяти його за вхід з Білла може тільки погіршити ситуацію.

Отже, навіть якщо ви використовуєте --same-ownerпрапор смоли , вам все одно потрібно буде витягнути файли, rootщоб зберегти право власності. Цей прапор увімкнено за замовчуванням для root, тому ви хочете:

sudo tar xpf foo.tgz

9

Є ще два варіанти дьогтю, які цікаві:

--same-owner
       try extracting files with the same ownership as exists in the ar‐
       chive (default for superuser)

--no-same-owner
       extract files as yourself (**default for ordinary users**)

2-я - це за замовчуванням, тому ви можете додати, --same-ownerщоб зберегти свого користувача. Вам, мабуть, доведеться це зробити sudo.

Крім цього: це буде лише робота в системах, що підтримують POSIX. І в інших операційних системах, крім Ubuntu, можливо, немає цих двох варіантів (вони не є стандартними).


3
Вони --same-ownerне працюватимуть для некоріальних користувачів, вони не матимуть права встановлювати право власності на когось, крім них самих. Це визначено POSIX .
тердон

4

Щоб зберегти власник запустити як root або використовувати прапор --same-owner поряд із прапором -p при вилученні.


3
У будь-якому випадку його потрібно запускати як root. Користувачі, що не мають root, не можуть змінити право власності на файли на інших користувачів.
тердон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.