Qual é a ideia por trás da rm de não remover arquivos não graváveis ​​por padrão?


13

Qual é a ideia por trás da rm de não remover arquivos não graváveis ​​por padrão? Toda vez que você deseja remover um arquivo que não é gravável para o usuário atual, mas você tem uma permissão de gravação no diretório, recebe este aviso e precisa pressionar `y 'para confirmar a exclusão:

rm: remove write-protected regular file 

Eu me pergunto por que os arquivos não graváveis ​​são tratados de maneira tão especial? Uma coisa que me vem à mente é que esses arquivos geralmente são arquivos de configuração do usuário que contêm dados secretos do usuário, como senha criptografada, para que a rm avise antes de excluí-los. Agora, qual é o verdadeiro motivo?

Respostas:


16

Isso ocorre porque o comportamento do UNIX é um pouco contra-intuitivo nesse caso. Muitas pessoas ficam surpresas quando marcam um arquivo como somente leitura e alguém é capaz de excluí-lo. Você só precisa de permissões de gravação no diretório que contém para excluir um arquivo. rmestá lhe pedindo como cortesia, caso você esperasse que apenas leitura o protegesse.

Usar -f(forçar) fará isso sem incomodá-lo. Mas use isso com cuidado.


tenha cuidado ao digitar "rm -rf *", pense.
ChuckCottrill

4
Um amigo meu se refere a isso como "Ler Correio Muito Rápido". :)
kurtm

0

Eu acho que você está certo sobre isso, porque está definido para não ser gravado. Se você estiver removendo o arquivo não gravável, estará gravando esse arquivo. Se você não quiser ser avisado, sempre poderá criar um alias, dizendo que rm é na verdade rm -f.


Acho que não entendi sua resposta corretamente. Eu me pergunto por que a rm emite esse aviso em primeiro lugar, por que os arquivos somente leitura são tratados de maneira diferente dos arquivos graváveis. Sei que quando esse aviso é exibido, me pergunto o porquê.
usar o seguinte comando

Porque se você definir algo para ser lido somente, não deve ser alterado. Isso inclui ser removido. Se você é root e diz para remover o arquivo somente leitura de qualquer maneira, ele quer confirmar que você não está cometendo um erro. Faz você repensar sua escolha.
Jeight 9/10

1
@ Jeight Isso não está realmente correto. Você não está gravando no arquivo ao excluir. Você está gravando no diretório que contém.
Kurtm 9/10

@kurtm Você está correto. Isso foi um erro de digitação, mas o raciocínio subjacente é o mesmo.
Jeight
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.