Por que não posso alterar as permissões dos arquivos aos quais tenho acesso?

5

Estou logado em um servidor como usuário "ubuntu" e tenho arquivos que se parecem com isso:

-rw-rw-r-- 1 www-data www-data 33150 2012-06-04 22:17 file-a.png
-rw-rw-r-- 1 www-data www-data 36371 2012-06-04 22:15 file-b.png
-rw-rw-r-- 1 www-data www-data 41439 2012-06-04 22:16 file-c.png

O usuário do ubuntu é um membro do grupo www-data:

groups ubuntu

produz

ubuntu : ubuntu www-data

Então, não devo ser capaz de alterar outras permissões desde que eu tenha acesso ao arquivo? Eu não sou um especialista no material do usuário / grupo. Então isso está me deixando perplexo.

Estou tentando executar:

chmod o-r *

Eu percebo que posso fazer isso com sudo, facilmente, mas estou tentando entender por que não posso modificar os arquivos sem sudo.

    
por Erik 07.06.2012 / 18:20

2 respostas

8

Somente o proprietário de um arquivo pode alterar suas permissões

Como jackweirdy comentou, apenas o proprietário de um arquivo (ou root ) pode alterar as permissões do arquivo. Ser um membro de um grupo que tenha algum tipo de acesso ao arquivo não lhe dá a capacidade de alterar as permissões do arquivo.

A idéia é que um arquivo é de propriedade de um usuário (seja esse usuário representa uma pessoa real ou não), e esse usuário é quem decide quem obtém acesso ao arquivo. Permissões para acesso por usuários (que não são o proprietário) no grupo-proprietário do arquivo são controladas pelo usuário que possui o arquivo. Se alguém no proprietário do grupo do arquivo pudesse alterar as permissões do arquivo, esse modelo de segurança seria quebrado.

Por exemplo, considere estas permissões, como na sua situação específica:

-rw-rw-r--

O proprietário pode ler e gravar o arquivo, mas não pode executá-lo. Os usuários do proprietário do grupo, além do proprietário do arquivo, também podem ler e gravar o arquivo, mas não executá-lo. Outros só podem ler o arquivo.

Suponha que www-data (ou alguém com a capacidade de executar comandos como www-data ou root ) defina essas permissões com a intenção de impedir que outros usuários do proprietário do grupo executem o arquivo. Se outros usuários do proprietário do grupo pudessem alterar as permissões, eles poderiam ser executados:

chmod g+x file-a.png

E então eles ganhariam a capacidade de executar o arquivo. Tal habilidade tornaria as permissões de grupo inúteis.

Por outro lado, a razão para as permissões de usuário, mesmo que o usuário seja o proprietário do arquivo, não é para restringir o proprietário a fazer nada com o arquivo, mas para proteger o usuário de fazer coisas com o arquivo que ele usa. t quer para fazer. Por exemplo, arquivos que não são programas, ou que podem ser programas, mas que acabam de ser obtidos de uma fonte não confiável, como a Internet, tendem a ter o bit de execução definido como 0, mesmo para o proprietário, em benefício próprio. Nesse caso, é útil e necessário que o proprietário possa alterar isso.

Um problema separado em permitir que membros do proprietário do grupo (que não são o proprietário) alterem as permissões é que essa é uma habilidade separada que não é contabilizada por r , w ou x . Mesmo que o grupo tenha lido, escrito e executado, as permissões não significariam necessariamente que deveriam ser capazes de alterar as permissões. (Por exemplo, suponha que você tenha um arquivo em que o proprietário não seja membro do proprietário do grupo. Se os membros do proprietário do grupo puderem alterar as permissões, poderão privar o proprietário das permissões. O proprietário pode alterar isso de volta. .mas isso ainda quebraria todas as tarefas automatizadas que o usuário tinha programado para usar o arquivo.)

Permitindo que as pessoas se tornem proprietárias

Quando um arquivo pertence a um usuário como www-data , que não representa nenhuma pessoa real, convém permitir que algumas pessoas executem ações como esse usuário. sudo não facilita apenas permitir que usuários selecionados executem comandos como root . Também facilita permitir que usuários selecionados executem o comando como outros usuários especificados. Você pode configurar tudo para que todos no grupo www-data tenham a capacidade de executar comandos como o usuário www-data , incluindo a alteração de permissões em arquivos de propriedade de www-data . (Certifique-se de entender as implicações disso. Dependendo de como o sistema está configurado, os usuários em www-data podem agendar tarefas para serem executadas como www-data e poderão fazer qualquer coisa em qualquer arquivo propriedade de www-data e para qualquer processo executado como www-data .

Consulte man sudoers para obter informações sobre como configurar isso. Se você decidir que quer fazer isso e tiver problemas, poderá postar uma pergunta diferente sobre isso.

Permitindo que não-proprietários alterem as permissões do arquivo?

Acho que é possível permitir que alguns usuários que não possuem um arquivo alterem algumas ou todas as permissões do arquivo, usando Listas de controle de acesso . Eu mal usei o ACL no Ubuntu. Se você estiver interessado em fazer isso, talvez queira postar outra pergunta perguntando se é possível e, em caso afirmativo, como fazê-lo.

    
por Eliah Kagan 07.06.2012 / 19:08
1

Basicamente, suas permissões estão permitindo que o usuário www-data ou qualquer usuário dentro do grupo de dados www somente leitura e acesso de gravação. Somente o proprietário pode alterar as permissões de grupo de um arquivo ou diretório e para um dos quais o usuário é separado.

Na sua situação, o Ubuntu não pode alterar as permissões porque o Ubuntu não possui esses arquivos, e não tem o direito de fazê-lo, somente www-data ou root pode mudar isso.

    
por ash 07.06.2012 / 18:56