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

4

Contexto:

Estou tentando converter um pacote .deb em .rpm usando alien , 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 alien precisa root para garantir que tenha permissão para criar foo.deb arquivos root -owned para a saída foo.rpm , mas não tenho certeza.

Perguntas:

  1. Os pacotes sempre precisam de alguns arquivos root -owned?
  2. Por que eles precisam de arquivos root -owned?
  3. Se eu estiver errado, por que alien precisa de root ?
por kdbanman 28.06.2014 / 22:18

3 respostas

1

Os pacotes RPM e deb contêm arquivos dos arquivos a serem instalados (arquivos cpio no caso de rpm, tar no 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 de pós-instalação o modifique).

A maioria dos arquivos instalados pelos pacotes é de propriedade do root, porque nenhum usuário está autorizado a modificá-los.

O Alien converte pacotes descompactando o arquivo e reembalando-o (além de outras coisas, como a conversão de scripts pré / pós-instalação). Por exemplo, para converter um rpm em deb, o estrangeiro chama cpio para extrair o arquivo para um local temporário e, em seguida, tar para criar um novo arquivo. Se a descompactação não for feita com permissões de root, todos os arquivos temporários pertencerão ao usuário que estiver realizando a descompactação, portanto, quando os arquivos forem compactados no novo arquivo, eles acabarão sendo de propriedade desse usuário.

O Alien não precisa realmente ser executado como root, já que não precisa modificar nada no sistema. Fakeroot executa alien (ou qualquer outro comando ) em um ambiente onde esse comando recebe informações falsas sobre as operações do sistema de arquivos, fingindo que as operações que normalmente requerem raiz (como alterar a propriedade do arquivo) foram bem-sucedidas. Dessa forma, a descompactação é feita como raiz e define o destino correto do arquivo (no que se refere a alien e seus subprocessos) e, portanto, o reempacotamento cria o arquivo pretendido.

    
por 29.06.2014 / 01:20
3

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

run a command in an environment faking root privileges for file manipulation

Então, o fakeroot é um programa que convence o comando em questão que ele está rodando como root, o suficiente para que as permissões do arquivo sejam definidas como root onde deveriam estar. Para mais informações, consulte 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, vou postar.

link

    
por 28.06.2014 / 22:43
2

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

Crie um arquivo em seu diretório pessoal e tente alterar seu dono: -

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 possua o arquivo e tenha rw permissõ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 sudo funciona.

Como o aviso diz; a propriedade estará errada. A partir disso, podemos supor que alien altera a propriedade de alguns arquivos.

Os arquivos do sistema geralmente são de propriedade 'root' com privilégios restritivos, para que apenas usuários como você e eu não os modifiquemos ou excluamos.

Existem também outros usuários e grupos em um sistema, mas diferentemente de 'root', eles não são os mesmos entre distros. Por exemplo, sob o Fedora (e RedHat e CentOS), o servidor Apache é executado como apache e os arquivos de dados pertencem a esse usuário. Por outro lado, acredito que Apache seja executado como www-data nos sistemas Debian / Ubuntu e, consequentemente, os arquivos de dados pertencem a esse usuário. Isso significa que alien precisa alterar o proprietário dos arquivos ao converter e, para fazer isso, como você pode ver no exemplo acima, ele precisa estar em execução como 'root'.

    
por 28.06.2014 / 22:29