Eu tenho arquivos criados no meu diretório pessoal com apenas permissão de leitura do usuário ( r-- --- ---
). Quero copiar este arquivo para outro diretório /etc/test/
que possua a permissão de pasta 744 ( rwx r-- r--
). Preciso permitir que o arquivo que estou copiando herde a permissão da pasta na qual ele é copiado, porque até agora, quando eu o copio, as permissões dos arquivos ainda são as mesmas ( r-- --- ---
). Eu tentei o comando setfacl, mas não funcionou? Por favor ajude.
PS. Não posso apenas chmod -r /etc/test/
porque existem muitos arquivos que serão copiados para esta pasta ao longo do tempo e não quero executar o comando chmod toda vez que um arquivo for copiado.
setfacl
comando você tentou? Qual foi a sua saída?/bin/cp
sem opções?Respostas:
Geralmente, as permissões não são propagadas pelo diretório em que os arquivos estão sendo copiados, mas novas permissões são controladas pelo usuário
umask
. No entanto, quando você copia um arquivo de um local para outro, é um caso especial, em que o usuárioumask
é essencialmente ignorado e as permissões existentes no arquivo são preservadas. Compreender esse conceito é a chave para conseguir o que deseja.Portanto, para copiar um arquivo, mas "largar" suas permissões atuais, você pode dizer
cp
para "não preservar" usando o--no-preserve=all
comutador.Exemplo
Digamos que tenho o seguinte arquivo como você.
E, como você confirmou, se apenas o copiarmos cegamente usando
cp
, obtemos o seguinte:Agora vamos repetir isso, mas desta vez diga
cp
para "remover permissões":Portanto, o arquivo copiado agora tem suas permissões definidas para 664, onde as obteve?
Se eu mudei meu
umask
para outra coisa, podemos repetir esse teste uma terceira vez e ver os efeitos que issoumask
tem sobre os não preservadoscp
:Observe que as permissões não são mais 664, mas são 640? Isso foi ditado pelo
umask
. Estava dizendo a todos os comandos que criam um arquivo para desativar os 5 bits inferiores nas permissões ... esses caras: (----wxrwx
).fonte
--no-preserve
bandeira não é padrão, presumivelmente um GNUism.