Então eu estava brincando um pouco com as permissões no meu sistema e então notei que não há permissão especificada para enviar o arquivo para outro lugar.
Tentei, como usuário simples, o seguinte comando:
mail -a //etc/shadow [email protected]
Fiquei satisfeito ao receber uma Permission Denied
mensagem, mas ainda não está claro quais são as permissões necessárias para enviar um arquivo.
Quer dizer, eu uso o mail
comando para o protocolo de correio, mas e os outros comandos ou outros protocolos?
btw, as permissões para o shadow
arquivo eram:
-rw-r----- 1 root shadow 1759 Oct 23 2017 shadow
Não existe, porque "enviar" um arquivo não é realmente uma operação no nível do sistema de arquivos. O que o
mail
comando faz é abrir o arquivo para leitura, ler os dados e enviá-los (gravar) pelo soquete de rede (provavelmente codificado no caso de e-mail, não que isso importe). Da mesma forma, um cliente FTP,scp
, ou qualquer outro faria o mesmo, eles leriam o arquivo como de costume.Você não tem acesso de leitura a
/etc/shadow
, portanto,mail
executar com seu ID de usuário não pode abri-lo para leitura.O Linux tem a
sendfile()
chamada de sistema , que copia dados diretamente entre dois descritores de arquivo, mas isso é basicamente o mesmo que chamarread()
um ewrite()
outro fd, exceto que isso acontece dentro do kernel, então há menos sobrecarga de chamadas do sistema. Também requer que a fonte seja aberta para leitura.