Por que mudar o dono de um link simbólico no linux?


12

No linux, é possível alterar o proprietário ou o proprietário do grupo de um link simbólico (link simbólico). Fiquei me perguntando por que alguém iria querer fazer isso, já que as permissões de um link simbólico não são usadas ao acessar um arquivo por meio dele.

Só posso imaginar um caso de uso em que isso poderia ser útil: permitir que um usuário exclua um link simbólico em um diretório com bits persistentes.

Você conhece outros casos em que pode ser útil alterar o proprietário ou o proprietário do grupo de um link simbólico?

Respostas:


6

Suponha que o root esteja trabalhando em um diretório no qual Eve possa escrever. Há um arquivo fooneste diretório que precisa ser alterado para pertencer a Eve. Então tipos de raiz chown eve foo. Mas, pouco antes de o root atingir Enter, Eve é executada ln -sf /etc/passwd foo. Agora /etc/passwdpertence a Eva! Se o root puder ser executado chown -h eve foopara garantir que os links simbólicos não sejam seguidos, o maior dano possível é que algum outro arquivo no mesmo diretório foi alterado para pertencer ao Eve.

lchowntambém é conveniente quando você altera o proprietário de uma árvore de diretórios. Você não precisa se preocupar em afetar acidentalmente um arquivo fora da árvore, porque chamou chownum link simbólico.


"Se o root pode executar chown -h bob foo para garantir que não siga os links simbólicos, o maior dano que pode ser causado é que algum outro arquivo no mesmo diretório foi alterado para pertencer a Eve.". Eu acho que você quer dizer "chown -h eve foo". O outro arquivo que pode ser alterado é o link simbólico, certo?
user368507

@ user5528 O outro arquivo pode não ser um link simbólico: Eve ainda pode ser executada mv myfile fooe o root acabará alterando o proprietário de myfile. Mas myfiledeve ser um arquivo que Eve possa criar ou mover para esse diretório, não pode haver nenhum arquivo no sistema.
Gilles 'SO- stop be evil'

2
Embora interessante, e obviamente aprovada pelo solicitante, não vejo como essa resposta aborda a questão. Parece mais para explicar por que se pode usar chown -hcomo medida de precaução ao alterar a propriedade de um arquivo que não deveria ser um link simbólico, mas ainda pode ser (um caso de borda, IMO). Não explica por que alguém pode querer mudar a propriedade de um arquivo que, de fato, pretende ser um link simbólico, que é o que a pergunta foi feita.
Ivan X

Por que chownalterar o proprietário de "um arquivo fora da árvore" é tudo o que você está alterando é o proprietário do diretório?
MELAB

@Melab Quando você está mudando o proprietário de uma árvore de diretórios , ou seja, desbloqueando o utilitário chown -R, que chama a chamada do (l)chownsistema em cada entrada de diretório. Se a entrada do diretório for um link simbólico, você não deve chamar a chamada do chownsistema, pois isso afetaria o destino do link que pode estar localizado fora da árvore.
Gilles 'SO- stop be evil'

8

O Apache pode ser configurado para seguir links simbólicos apenas se o proprietário do link corresponder ao proprietário do destino. Isso pode ajudar a impedir que os usuários criem links para acesso da Web a arquivos que não possuem (por exemplo, / etc / passwd).

... então digamos que você, como root, desejava que o apache seguisse um link para exibir um determinado arquivo de log, pertencente a xymon ou algo assim, mas você não queria relaxar a segurança do apache, permitindo que ele seguisse links simbólicos, independentemente do proprietário . Em seguida, convém fazer do xymon o proprietário do link simbólico.


11
Está bem. Eu sei que não está relacionado, mas qual é o sentido desse comportamento no apache? Quero dizer, se o usuário é capaz de ler o arquivo, por que se preocupar em lê-lo a partir do acesso à web? thx
user368507

Bem, não é apenas um usuário local lendo o arquivo; se o apache puder lê-lo, potencialmente todos poderão lê-lo. E se alguma vulnerabilidade do apache permitir a criação de um link simbólico /etc/passwd, o badguy pode ter acesso de leitura a esse arquivo sem ter nenhum outro acesso local - mas seria frustrado pelo fato de o link simbólico pertencer ao apache.
Lars Rohrbach

4

A primeira resposta não parece abordar a questão, e a segunda se aplica apenas ao Apache.

Uma coisa que posso pensar no linux em geral é que apenas um usuário comum pode criar um link físico para um link simbólico se o usuário for o proprietário do link simbólico. Por que alguém gostaria de fazer esse link, eu não sei.

Outra coisa é que um usuário comum só pode alterar a propriedade do grupo de um arquivo se ele for o proprietário do arquivo (e também é um membro do grupo ao qual o arquivo está sendo adicionado.) Isso levanta a questão sobre qual propriedade do grupo o arquivo um link simbólico sim. Em uma organização, pode ser útil como uma tag para indicar qual equipe precisaria do link.

Além disso, pelo menos no Ubuntu, qualquer pessoa pode atualizar o registro de data e hora de um link simbólico. No entanto, pode haver alguns sistemas que permitem apenas o proprietário. De que serve o carimbo de data / hora para um link simbólico, não tenho certeza, mas pode fornecer algumas informações úteis sobre o quanto é usado.

Edit: Acabei de perceber outra razão pela qual a propriedade seria importante. O link pode estar dentro de um diretório fixo, onde apenas o proprietário de um arquivo pode excluí-lo ou renomeá-lo.


0

Eu tenho um programa que anexa a um arquivo de log. Esses arquivos de log são criados mensalmente, cada um com um nome diferente. Em vez de o software descobrir o nome exato do arquivo, eu uso um nome de arquivo "genérico" (por exemplo, data.log), que é um link simbólico que aponta para o arquivo atual daquele mês. Isso é automatizado em um trabalho cron.

Agora, quando um novo arquivo mensal é criado, ele precisa apontar o link simbólico para o novo arquivo. Se houver um conflito de propriedade / grupo, o software não poderá alterar o link simbólico. Portanto, você precisa de privilégios de propriedade / gravação em grupo para alterar o link simbólico.


0

Se você deseja ter um link para um arquivo na tela de abertura, o link simbólico deve estar no

"/ home / nome de usuário / área de trabalho"

diretório.

E o próprio link simbólico deve ter propriedade root: root (0: 0), caso contrário, o link não funcionará.

(Ubuntu / Debian etc.)

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.