'cat': não é possível abrir o arquivo: Permissão negada

2

Eu estou tentando copiar todo o diretório / para algum outro local. Ao fazer o cp recursivamente, ele falha em alguns arquivos como: -

/ # ls -lrt /sys/module/nf_conntrack_ipv4/uevent
--w-------    1 root     root          4096 Mar  7 06:29 /sys/module/nf_conntrack_ipv4/uevent
/ #
/ # cat /sys/module/nf_conntrack_ipv4/uevent
cat: can't open '/sys/module/nf_conntrack_ipv4/uevent': Permission denied
/ # cp /sys/module/nf_conntrack_ipv4/uevent /tmp
cp: can't open '/sys/module/nf_conntrack_ipv4/uevent': Permission denied

Se eu criar algum arquivo com apenas w de permissões e tentar copiar / cat ele, não vejo problemas. No entanto, para alguns arquivos como o mencionado acima, não consigo copiá-lo ou criá-lo, mesmo que esteja tentando como usuário root. Além disso, o estranho é que o tamanho do arquivo acima mencionado é mencionado como 4096, que é semelhante ao que temos para o diretório. Isso é algo especial?

Acho que estou perdendo alguma coisa aqui e preciso de informações para saber mais sobre esses arquivos ou esses comportamentos. Por favor, ajude-me a compreender por que não estou autorizado a cat conteúdos de tais arquivos.

    
por Rahul 07.03.2016 / 07:59

2 respostas

10

Em um sistema de arquivos regular, por exemplo ext4 , se você tiver apenas w de permissão em um arquivo, você não poderá ler ( cat ), você precisa ler ( r ) bit para isso. Observe que root pode ler qualquer arquivo, independentemente dos bits de permissão.

Agora, /sys é um ponto de montagem de sysfs especial fornecido pelo kernel do Linux, que na verdade é um sistema de arquivos virtual e funciona de maneira diferente dos sistemas de arquivos comuns. /sys contém informações relacionadas ao dispositivo do sistema.

Modificar algo em /sys alteraria diretamente a estrutura de dados interna do kernel, de forma que dependesse do kernel o que permitiria ou negaria.

Para /sys/module/nf_conntrack_ipv4/uevent , você tem apenas w bits definido para o proprietário ( root ), mesmo se você adicionar r bit para root (, o que é uma ideia muito ruim ), durante a leitura do arquivo, você obteria um erro de E / S porque, por design, o kernel não permitiria que ninguém lesse os uevents para o módulo nf_conntrack_ipv4 .

    
por heemayl 07.03.2016 / 08:14
4

Para evitar sistemas de arquivos especiais como /sys e /proc , você deve fornecer a seguinte opção para cp :

-x, --one-file-system
    stay on this file system

(citado de a página de manual )

Se você tiver vários sistemas de arquivos reais, por exemplo, / e /home , você precisará fornecer vários comandos cp .

Cuidado para não copiar de e para no mesmo local. Isso pode levar a loops infinitos, onde você faz cópias de cópias de cópias de ...

    
por Stig Hemmer 07.03.2016 / 12:08