Зачем конвертеру инопланетных пакетов нужны права root?

927
kdbanman

При попытке конвертировать .debпакет в .rpmиспользование иностранца, я использую эту команду:

$ alien -r foo.rpm 

но жалуется так:

> Warning: alien is not running as root! > Warning: Ownerships of files in the generated packages will probably be wrong. 
  1. Как владельцы файлов отличаются при запуске от имени пользователя root и обычного пользователя?

  2. Почему владение файлами в пакете имеет значение?

0
Я подозреваю, что нужен root, чтобы вы могли применить надлежащие права доступа к новому файлу, чтобы они соответствовали источнику. Ƭᴇcʜιᴇ007 9 лет назад 3
@ techie007 Спасибо, что поделились своими подозрениями! Я не думаю, что владение архивом `.rpm` имеет значение. Точнее говоря, не назначаются ли права доступа к файлу менеджером пакетов, когда он читает эту информацию из файла спецификации `.rpm` в процессе извлечения и установки? kdbanman 9 лет назад 0

1 ответ на вопрос

2
blackhat.blade

Deb-пакеты Debian - это простые вещи, все файлы, которые собирается установить пакет, хранятся в архиве.

Этот архив содержит полное дерево файлов, а также их права доступа и данные о владельце. Во время установки архив извлекается в корневую файловую систему как есть.

Пример

Пакет fping содержит архив со следующими файлами:


 /usr/bin/fping /usr/bin/fping6 /usr/share/doc/fping/README /usr/share/doc/fping/changelog.Debian.gz /usr/share/doc/fping/changelog.gz /usr/share/doc/fping/copyright /usr/share/lintian/overrides/fping /usr/share/man/man8/fping.8.gz /usr/share/man/man8/fping6.8.gz 

Права доступа и данные о владельце (владелец почти всегда является пользователем root) берется только из архива.

Имея это в виду, невозможно извлечь архив с правильным сохранением прав собственности, не имея привилегий суперпользователя. Без какого-либо знания внутренней работы rpm и Alien, я бы предположил, что Alien извлекает исходный архив во время конвертации.

Отвечая на ваши вопросы:

Как владельцы файлов отличаются при запуске от имени пользователя root и обычного пользователя?

Обычные пользователи могут создавать только те файлы, которые принадлежат им самим, и не могут менять владельца файлов.

Почему владение файлами в пакете имеет значение?

Может быть, это так, а может и нет. Помните: не имея root, файлы будут принадлежать uid, который преобразовал пакет. Хотя не рекомендуется использовать двоичные файлы непривилегированного пользователя для установки в / usr / bin, это может сработать. Но он сломается, когда установленный материал должен быть владельцем root.

Вернемся к примеру, fping должен быть установлен как root для работы -> пакет сломан из-за неправильного владения.

Можно извлечь информацию о владельцах и разрешениях из файловых архивов, поэтому этот ответ не имеет смысла, если только мы не предполагаем ленивое программирование. Я держу пари, что это просто потому, что менеджеры пакетов довольно сложны, и трудно получить «переведенный» пакет надежно, не предоставляя доступ более высокого уровня, чем у обычных пользователей. Heptite 9 лет назад 0
@ Heptite Что вы подразумеваете под "извлекать" информацию о праве собственности? Как при * чтении * отображается информация типа `ls -l`? Alien фактически создает файлы для выходного файла `.rpm`. Нужно ли создавать их с соответствующими разрешениями внутри самого `.rpm`, или проблема с разрешениями файлов решается, когда * менеджер пакетов * читает манифест пакета для правильного извлечения файлов? kdbanman 9 лет назад 0
Когда RPM связывает пакет, он считывает владельца файла и разрешения и сохраняет их в архиве. На самом деле вы можете увидеть владельца и разрешения _с архивом без установки, выполнив `rpm -qlvp package.rpm`. Это означает, что технически вы можете перепаковать файлы из архива в другой архив (от `rpm` до` deb`), даже не устанавливая их в файловой системе. Я хочу сказать, что должна быть еще одна причина, почему инопланетянин не делает этого (и нуждается в полномочиях корня), чем то, что говорит этот ответ. Heptite 9 лет назад 0
Я не думаю, что есть жесткие требования для прав суперпользователя при переупаковке в целом. Вероятно, это деталь реализации Alien, предполагающая, что он извлекает пакет во временный каталог, а затем перепаковывает содержимое. blackhat.blade 9 лет назад 0

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