links simbólicos com base no ID do usuário

1

Eu estou querendo saber como criar no linux algo como o link simbólico, que apontará diretórios diferentes para usuários diferentes que o visualizam. Eu estava procurando por muito tempo para ele e encontrei algo chamado hlfsd - Claro links simbólicos comuns não podem fazer isso, porque eles se baseiam em "coisas" do kernel, mas eu tenho encontrou algo que pode resolver este problema.

Mas, existe alguma solução "melhor" - qualquer coisa que me dê um arquivo semelhante a um link, que aponte para diretórios diferentes baseados em f.e. id do usuário?

Basicamente, o que eu quero fazer:

Vamos considerar que temos um servidor com estrutura de arquivos A/{a1 a2}/{b1 b2}/{c1 c2} Dentro dessas pastas, existem arquivos grandes e não devem ser copiados pela rede. Vamos dizer que o usuário U1 quer acessar esses arquivos, então ele pode fazer o symlink (até aí tudo bem).

O problema é, quando ele quer acessar essa estrutura e ele quer copiar localmente apenas, por exemplo, A/a1/b1/c1 . É claro que podemos fazer muitos symlinks localmente, que apontarão para essas pastas no servidor, mas então não temos ninguém muito importante para mim - quando alguém, por exemplo, adiciona a pasta A/a1/b1/c3 , então esse usuário, que estava vinculado a esta estrutura de arquivos e tem A/a1/b1/c1 localmente, não verá as alterações, porque todos os seus links foram criados manualmente.

    
por wdanilo 04.12.2010 / 02:17

2 respostas

1

O FreeBSD costumava ter algum tratamento especial de links simbólicos, eu acho chamado de links simbólicos variadic (embora uma pesquisa no Google desse termo não encontre o que eu queria). A idéia de que você não faz links simbólicos para um caminho específico, mas uma string que pode ter substituições.

Você não só está estressado porque o Linux não suporta isso, mas é mais difícil implementar por usuário do que você pensa. Em * BSD, foi feito para fazer links simbólicos para strings simples que o kernel conheceria, como a arquitetura (ou seja, i686 vs. x86_64). Então um symlnik de / opt / someapp / bin = > / opt / someapp / $ {arch} / bin faz algum sentido. Mas você quer fazer por usuário. Lembre-se que links simbólicos são resolvidos no kernel, e o kernel não sabe seu nome ou diretório home. Ele conhece o seu userid, e é sobre isso. Ele teria que ir e voltar para o modo de usuário para obter qualquer informação sobre você. Não é impossível, mas muito complicado. Então, como os programas setuid funcionariam?

Em resumo, eu sei o que você quer dizer, saber o que você quer, mas é improvável que você chegue lá. Talvez confira o fusível e veja se eles têm alguma coisa que você possa usar.

Não é bem o que você disse, mas talvez você possa fazer isso com o controle de origem. O ClearCase (payware) costumava ter um módulo do kernel que faria a maior parte do que você deseja, não tendo certeza se ainda faz isso. Mesmo sem um módulo de sistema de arquivos do kernel, você provavelmente pode dividir o controle de fonte distribuído em 60-70% do que você deseja.

    
por 14.03.2011 / 21:37
0

A solução simples que vejo é que em cada pasta há uma pasta oculta .realfiles na qual pastas reais são e pastas no servidor como A/a1 ou A/a1/b2 são links simbólicos para a pasta acima A, então A/a1 é symlink para ../MOUNT/.realfiles/a1 e A/a1/b2 é um link simbólico para ../MONTAGEM/.realfiles / a1 / .realfiles / b1.

Agora, basicamente, o MOUNT no servidor é symlink para A. mas se for possível alterar os links por usuário, para cada usuário a pasta MOUNT apontará para outro diretório, então poderemos alterar alguns links como nós queremos.

(Eu conheço esta situação especial, mas eu fiz melhor para explicar isso bem)

    
por 04.12.2010 / 04:54