Ele falha porque você precisa ser o proprietário do arquivo de destino (a), o cp não substituirá a segurança básica do unix. Um usuário pode preservar seus próprios arquivos, wilmes - > wilmes, mas não pode fazer isso para outros usuários, e certamente não para root. Estou assumindo que você não está logado como root, nem como wilmes.
Nesse caso, um arquivo é de propriedade de root, o outro de wilmes. Para preservar, você deve tentar executar:
sudo cp -p b a
Links relevantes:
- " Por que o "cp -p" não copia e preserva a propriedade? "
- "cp - p preservará os tempos de alguns arquivos, mas não todos? "
- "Preservar a chave de permissão não funciona com o cp?"
Exemplo:
Crie um arquivo para raiz, um e um arquivo para um usuário padrão (joe), b.
joe@testbed:~/tmp2$ sudo touch a
joe@testbed:~/tmp2$ touch b
Verifique se as permissões estão corretas.
joe@testbed:~/tmp2$ ls -l
total 0
-rw-r--r-- 1 root root 0 Jun 22 13:51 a
-rw-r--r-- 1 joe joe 0 Jun 22 13:51 b
Tentativa de copiar o arquivo de propriedade do usuário, b, sobre o arquivo de propriedade da raiz (o que violaria as permissões):
joe@testbed:~/tmp2$ cp -p b a
cp: cannot create regular file 'a': Permission denied
Repita cópia como root, permissões preservadas:
joe@testbed:~/tmp2$ sudo cp -p b a
joe@testbed:~/tmp2$ ls -l
total 0
-rw-r--r-- 1 joe joe 0 Jun 22 13:51 a
-rw-r--r-- 1 joe joe 0 Jun 22 13:51 b
Nota: Permissão negada, não Operação não permitida . Eu imagino que você vê não permitido porque o usuário wilmes tem acesso ao arquivo, por meio de um grupo, no entanto, eles não são o proprietário , então eles não podem sobrescrevê-lo completamente.
Logicamente, você está substituindo um arquivo que pertence a outro usuário (root) e solicitando que o sistema também torne você o proprietário desse arquivo, o que seria uma falha de segurança catastrófica.
Por exemplo, e se eu viesse um usuário normal, malicious.username01
e quisesse substituir o crontab por algo como ntp que pertence ao root? Se o que você está tentando fazer funcionou, eu poderia simplesmente escrever minha própria versão mal-intencionada e simplesmente cp -p my-malicious-script /etc/cron.daily/ntp
. Isso seria terrível. Realmente muito terrível.