Conforme discutido em Noções básicas sobre permissões e tipos de arquivo do UNIX , cada arquivo tem configurações de permissão ("modo de arquivo") para:
- o proprietário/usuário ("
u
"), - o grupo do proprietário ("
g
"), e - todos os outros ("
o
").
Pelo que entendi, o proprietário de um arquivo sempre pode alterar as permissões do arquivo usando chmod
. Assim como qualquer aplicativo em execução sob o proprietário.
Qual é o motivo para restringir as permissões do próprio proprietário se ele sempre pode alterá-las?
O único uso que posso ver é a proteção contra exclusão ou execução acidental , que pode ser facilmente superada, se pretendido.
Uma pergunta relacionada foi feita aqui: Existe uma razão pela qual as permissões de 'proprietário' existem? As permissões de grupo não são suficientes? Ele discute por que as permissões do proprietário não podem ser substituídas por um grupo fictício que consiste em um único usuário (o proprietário). Em contraste, aqui estou perguntando sobre o propósito de ter permissões para o proprietário em princípio , não importa se elas são implementadas por meio de um " u
" octal separado ou um grupo separado + ACLs.
Existem várias razões para reduzir as permissões do proprietário (embora raramente para menos do que as do grupo).
O mais comum é não ter permissão de execução em arquivos que não devem ser executados. Muitas vezes, scripts de shell são fragmentos destinados a serem originados de outros scripts (por exemplo, seu
.profile
) e não fazem sentido como processos de nível superior. A conclusão do comando oferecerá apenas arquivos executáveis, portanto, as permissões corretas ajudam nos shells interativos.A substituição acidental de um arquivo é um risco substancial - pode acontecer por meio da digitação incorreta de um comando ou ainda mais facilmente em programas GUI. Uma das primeiras coisas que faço ao copiar arquivos da minha câmera é torná-los (e o diretório que os contém) não graváveis, de modo que todas as edições que eu fizer sejam cópias, em vez de sobrescrever o original.
Às vezes é importante que os arquivos nem sejam legíveis. Se eu atualizar meu Emacs e tiver problemas com pacotes locais em meu
~/lisp
diretório, eu os desabilito seletivamente (comchmod -r
) até que ele possa iniciar com sucesso; então posso torná-los legíveis um de cada vez enquanto corrijo problemas de compatibilidade.Um conjunto correto de permissões para usuário indica intencionalidade . Embora o usuário possa alterar as permissões, programas bem comportados não farão isso (pelo menos, não sem perguntar primeiro). Em vez de pensar nas permissões como restringindo o usuário , pense nelas como restringindo o que os processos do usuário podem fazer em um determinado momento.
Você parece estar perdendo um ponto bastante importante aqui: processos bem comportados não modificam as permissões dos arquivos aos quais eles têm acesso.
ls
não tornará aleatoriamente um diretório para o qual você aponta legível apenas para poder listar o conteúdo do diretório.ssh
não 'conserta' as permissões~/.ssh
ou os arquivos que ele contém se estiverem errados, ele simplesmente se recusará a ser executado. E geralmente é seguro assumir que qualquer programa que você provavelmente usará se comporta bem dessa maneira.Isso significa que quais permissões são definidas em um determinado arquivo para o proprietário geralmente são honradas (a menos que você seja o usuário root ou de alguma outra forma seja capaz de curto-circuitar as verificações de DAC (como
CAP_DAC_OVERRIDE
no Linux), porque programas sãos apenas confie no kernel para verificar as permissões) e, portanto, geralmente é útil proteger um determinado arquivo contra modificação ou execução acidental. E embora isso possa ser superado com relativa facilidade, o usuário precisa explicitamente fazer algo para superá-lo . IOW, funciona como mais uma etapa de confirmação para indicar que 'Sim, eu realmente quero fazer isso.'.Mais genericamente, porém, como as permissões do proprietário geralmente são respeitadas, há várias coisas úteis que você pode fazer com elas:
.desktop
arquivos XDG como não confiáveis).Na maioria das vezes, faço isso para evitar a exclusão/modificação acidental, como você sugeriu. Às vezes, no entanto, faço isso para poder realizar modificações em lote em todos os arquivos/diretórios em uma determinada árvore, exceto aqueles que "protegi".
Permissões de proprietário restritas são úteis em ambientes restritos, onde o usuário não tem acesso a ferramentas que alteram permissões.
O exemplo clássico são os servidores FTP anônimos. Você pode criar um diretório "caixa de depósito" onde o proprietário tenha permissões de gravação, mas não permissões de leitura. Isso permite que usuários anônimos carreguem arquivos, mas não listem os arquivos que outros usuários enviaram. Enquanto isso, o diretório seria legível por seu grupo, então colocaríamos os usuários que têm permissão para recuperar do diretório nesse grupo. Se o servidor FTP não fornecer um
chmod
comando, os usuários anônimos não poderão substituir isso e dar a si mesmos permissão para listar o diretório.