Por que a propriedade do arquivo é importante em um pacote RPM ou DEB?

Por que a propriedade do arquivo é importante em um pacote RPM ou DEB?

Contexto:

Estou tentando converter um .debpacote para .rpmusarestrangeiro, eu uso este comando:

$ alien -r foo.deb

mas reclama assim:

> Warning: alien is not running as root!
> Warning: Ownerships of files in the generated packages will probably be wrong.

Acho que tudo o que é aliennecessário rooté garantir que ele tenha permissão para criar arquivos de propriedade foo.debde rootpara a foo.rpmsaída, mas não tenho certeza.

Questões:

  1. Os pacotes sempre precisam de alguns rootarquivos de propriedade?
  2. Por que eles precisam rootde arquivos de propriedade?
  3. Se eu estiver errado, por que alienneed root?

Responder1

Use fakeroot. alien não precisa de root para manipular alguns bits. A descrição de uma linha na página de manual do fakeroot resume-o adequadamente:

execute um comando em um ambiente falsificando privilégios de root para manipulação de arquivos

Portanto, fakeroot é um programa que convence o comando em questão de que ele está sendo executado como root, o suficiente para que as permissões do arquivo sejam definidas como root onde deveriam estar. Para mais informações, veja man fakeroot.

A mensagem de erro que você recebeu infelizmente é enganosa.

Em poucas palavras, faça

fakeroot alien ...

Aqui está um relatório de bug onde o autor do alienígena, Joey Hess, discute a necessidade de usar o fakeroot. Provavelmente não é o melhor link. Se eu encontrar algo melhor, postarei.

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=16289

Responder2

Porque alterar a propriedade de um arquivo requer privilégios de 'root'; não porque os arquivos necessariamente precisem pertencer ao 'root' - embora muitos sejam.

Crie um arquivo em seu diretório pessoal e tente alterar seu proprietário: –

touch test.txt
ls -l test.txt
-rw-rw-r--. 1 gareth gareth 0 Jun 28 21:24 test.txt
chown nobody. test.txt
chown: changing ownership of ‘test.txt’: Operation not permitted

Embora eu seja o proprietário do arquivo e tenha rwpermissões, não posso alterar o proprietário.

sudo chown nobody. test.txt
ls -l test.txt
-rw-rw-r--. 1 nobody gareth 0 Jun 28 21:24 test.txt

Mas executá-lo como root usando sudofunciona.

Como diz o aviso; propriedade será errada. A partir disso, podemos assumir que isso alienaltera a propriedade de alguns arquivos.

Os arquivos do sistema geralmente pertencem ao 'root' com privilégios restritivos para que meros usuários como você e eu não os alteremos ou excluamos.

Existem também outros usuários e grupos em um sistema, mas diferentemente do 'root' eles não são os mesmos em todas as distros. Por exemplo, no Fedora (e RedHat e CentOS) o Apacheservidor web é executado apachee os arquivos de dados pertencem a esse usuário. Por outro lado, acredito que Apachefunciona como www-datanos sistemas Debian/Ubuntu e, consequentemente, os arquivos de dados são de propriedade desse usuário. Isso significa que aliené necessário alterar o proprietário dos arquivos durante a conversão e para isso, como você pode ver no exemplo acima, ele precisa estar rodando como ‘root’.

Responder3

Os pacotes RPM e deb contêm arquivos dos arquivos a serem instalados (cpioarquivos no caso de rpm,alcatrãono caso de deb). Esses arquivos contêm metadados sobre cada arquivo, incluindo seu nome, data de modificação, usuário e grupo proprietário e permissões. Quando um pacote é instalado, cada arquivo acaba tendo a propriedade descrita no arquivo (a menos que um script pós-instalação o modifique).

A maioria dos arquivos instalados por pacotes são de propriedade do root, porque nenhum usuário está autorizado a modificá-los.

Alien converte pacotes descompactando o arquivo e reembalando-o (bem como outras coisas, como converter scripts pré/pós-instalação). Por exemplo, para converter um rpm em um deb, alien chama cpiopara extrair o arquivo para um local temporário e, em seguida, tarpara construir um novo arquivo. Se a descompactação não for feita com permissões de root, todos os arquivos temporários serão de propriedade do usuário que está descompactando, portanto, quando os arquivos forem compactados no novo arquivo, eles acabarão sendo de propriedade desse usuário.

Na verdade, o Alien não precisa ser executado como root, pois não precisa modificar nada no sistema.Raiz falsaexecuta alien (ou qualquer outro comando) em um ambiente onde esse comando recebe informações falsas sobre operações do sistema de arquivos, fingindo que as operações que normalmente requerem root (como alterar a propriedade do arquivo) foram bem-sucedidas. Desta forma, a descompactação é feita como root e define a propriedade correta do arquivo (no que aliendiz respeito aos seus subprocessos) e assim a reembalagem cria o arquivo pretendido.

informação relacionada