Estou recebendo um erro de permissão negada no CentOS 6.10 de 64 bits
Por favor, note que o "#" indica um prompt de usuário no nível da raiz.
# cd /tmp
# chmod 777 file*
# /bin/ls -l file*
-rwxrwxrwx 1 apache apache 824 Sep 17 17:15 file_00.dat
-rwxrwxrwx 1 apache apache 824 Sep 17 17:15 file_01.dat
-rwxrwxrwx 1 apache apache 824 Sep 17 17:15 file_02.dat
-rwxrwxrwx 1 apache apache 824 Sep 17 17:15 file_03.dat
-rwxrwxrwx 1 apache apache 824 Sep 17 17:15 file_04.dat
-rwxrwxrwx 1 apache apache 824 Sep 17 17:15 file_05.dat
-rwxrwxrwx 1 apache apache 824 Sep 17 17:15 file_06.dat
-rwxrwxrwx 1 apache apache 824 Sep 17 17:15 file_07.dat
-rwxrwxrwx 1 apache apache 824 Sep 17 17:15 file_08.dat
-rwxrwxrwx 1 apache apache 824 Sep 17 17:15 file_09.dat
-rwxrwxrwx 1 apache apache 824 Sep 17 17:15 file_10.dat
-rwxrwxrwx 1 apache apache 824 Sep 17 17:15 file_11.dat
-rwxrwxrwx 1 apache apache 824 Sep 17 17:15 file_12.dat
-rwxrwxrwx 1 apache apache 824 Sep 17 17:15 file_13.dat
-rwxrwxrwx 1 apache apache 824 Sep 17 17:15 file_14.dat
-rwxrwxrwx 1 apache apache 1 Sep 17 17:15 file_15.dat
# cat file* > file.dat
cat: file_00.dat: Permission denied
cat: file_02.dat: Permission denied
# /bin/ls -l file.dat
-rw-rw-r-- 1 root root 10713 Sep 17 17:32 file.dat
O tamanho do arquivo completo é 10713, que é 824 * 13 + 1, significando que ele foi copiado com sucesso todos os arquivos, exceto os arquivos "00" e "02". Uma cópia bem-sucedida deve ter 12361 bytes, 824 * 15 + 1. No entanto, não há nada diferente nesses dois arquivos, exceto que a máquina se recusa a deixar que eu os leia.
O comando "chmod 777" é redundante, apenas para enfatizar a situação. Antes de executar esse comando, as permissões estavam todas no formato "-rw-r - r--", o que ainda significa que eu não deveria receber um erro de permissão negada.
Não há "." sobre as permissões, então, teoricamente, o Selinux não deveria estar envolvido, mas mesmo que esteja envolvido, por que ele está escolhendo apenas dois arquivos?
Posso repetir o processo que cria esses arquivos e escolher um conjunto diferente de arquivos para ficar ilegível.
Alguém tem uma explicação e correção para isso?
ATUALIZAÇÃO:
Eu modifiquei o processo que cria os arquivos. Anteriormente, estava recebendo os dados de um cliente JavaScript que quebrou um arquivo XLSX em partes para permitir o upload de planilhas de tamanho grande. O servidor receberia os fragmentos como base64, decodificaria cada fragmento para binário e salvaria em um arquivo temporário para ser concatenado em um arquivo XLSX final.
O que ele faz agora é salvar cada bloco temporário como base64 (100% ASCII). Depois que todos os fragmentos são carregados, ele lê cada arquivo, então o decodifica para binário e o acrescenta ao arquivo XLSX final.
Funciona bem. Acho que vamos deixar assim.
Como teste, escrevi um programa rápido de 3 linhas para ler um dos blocos base64, decodificá-lo para binário e salvá-lo. Então eu tentei ler o resultado. Adivinha? Permissão negada no arquivo binário.
Então, aparentemente, o que torna o arquivo ilegível é algum padrão de dados dentro do arquivo.
Usar este método resolve o problema, mas eu ainda gostaria de saber como um padrão de dados binários dentro de um arquivo cria um erro de "Permissão negada" no fora .