Qual é o diretório mais apropriado para colocar arquivos compartilhados entre usuários?

70

Ou: onde posso colocar arquivos pertencentes a um grupo?

Suponha que haja dois usuários em um sistema Unix: joe e sarah . Ambos são membros do grupo entusiasta de filmes . Onde devo colocar seus arquivos de filmes?

  • /home/{joe,sarah}/movies não são apropriados porque esses diretórios pertencem a joe / sarah , não ao grupo deles;

  • /home/movies-enthusiast também não é apropriado, porque filmes entusiastas é um grupo, não um usuário;

  • /var/movies-enthusiast pode ser uma opção, mas não tenho certeza se isso é permitido pelo FHS;

  • /srv/movies-enthusiast também pode ser uma opção, no entanto, os filmes não são arquivos exigidos pelos serviços do sistema.

por user16538 31.03.2013 / 18:49

9 respostas

63

Não use

  • /usr é para dados somente leitura compartilháveis. Os dados aqui devem ser alterados apenas por motivos administrativos (por exemplo, a instalação de novos pacotes).
  • /opt é geralmente para programas que são autocontidos ou precisam ser isolados do resto do sistema por algum motivo (programas honeypot de interação baixa e média, por exemplo).
  • /var é para "arquivos cujo conteúdo deve mudar continuamente durante a operação normal do sistema - como logs, arquivos em spool e arquivos temporários de e-mail." Eu gosto de pensar em assim: se seus dados não aparecerem corretamente em uma lista, eles geralmente não pertencem a /var (embora haja exceções para isso).

Use

  • /home é para diretórios iniciais do usuário. Alguns vêem esse diretório como uma área para arquivos de grupo também. O FHS realmente observa que, "em sistemas grandes (especialmente quando os diretórios / home são compartilhados entre muitos hosts usando NFS) é útil subdividir os diretórios home dos usuários. Subdivisão pode ser realizada usando subdiretórios como / home / staff , / home / guests, / home / students, etc. "
  • /srv é um local aceitável e frequentemente preferido para arquivos de grupos. Eu geralmente uso esse diretório para arquivos compartilhados por grupos pelo motivo mencionado na resposta do Chris Down; Eu vejo o compartilhamento de arquivos de grupo como sendo um serviço que o servidor fornece.

Veja a página man hier (7) ( man hier ) para maiores informações sobre o propósito de cada diretório descrito pelo ESF.

    
por 31.03.2013 / 20:52
25

Na minha opinião, o lugar certo é /srv/movies-enthusiast . Um "serviço" não precisa ser um daemon ou programa, ele só precisa ser um serviço que o sistema forneça (por exemplo, conseguir seus filmes lá). Aqui está uma citação da ESF :

/srv contains site-specific data which is served by this system.

Eu definitivamente acho que seu uso se enquadra nessa definição e fornece um serviço.

    
por 31.03.2013 / 18:54
10

O Padrão de Hierarquia do Sistema de Arquivos (FHS) especifica um layout para "desenvolvedores de distribuição Unix, desenvolvedores de pacotes e implementadores de sistema" para aderir a fim de não fazer uma bagunça de seu namespace .

Como é o seu namespace, você deve escolher qualquer nome que julgar adequado. Se você achar que /groups/movies-enthusiast faz sentido, você deve colocá-lo lá. Se você gosta de nomes de caminhos curtos porque eles são mais fáceis de digitar, /g/movies-enthusiast (ou talvez /g/m-e ) seria adequado.

Como os caminhos escolhidos não estão definidos no FHS, os pacotes de distribuição ou de terceiros não devem tocá-los. Como tal, você deve ler o FHS para saber quais caminhos podem ser usados pelo software compatível (o índice dirá a você mais do que você precisa saber).

Por exemplo, eu pessoalmente uso /av para onde eu armazeno meu conteúdo audiovisual, /src para código fonte e /data para dados indefinidos (como imagens de máquinas virtuais, imagens de cd, chroots, pacotes salvos, etc).

    
por 01.04.2013 / 10:16
7

Não há nada errado em criar um novo ponto de montagem ou diretório para essa finalidade a partir da raiz.

Particularmente, se este for o objetivo principal deste sistema, eu criaria

/ movies-enthusiast

Se houver outros "grupos" semelhantes, posso ou não preferir hospedá-los juntos, por exemplo

/data/movies-entusiast
/data/next-group
etc

ou

/share/movies-enthusiast
/share/next-idea
etc

Questões a considerar: Você vai dedicar um ponto de montagem para esse propósito?

Você já considerou softlinks?

Em qualquer caso, não há regras. Se você quiser tornar um usuário o custodiante e conceder acesso a este espaço do projeto, sinta-se à vontade para hospedá-lo no diretório pessoal do usuário. Ou crie um espaço de nome / home / shared / *. Você é seu próprio patrão.

Ah, uma coisa: faça o que fizer, documente. Ele precisa se tornar parte da recuperação do sistema, verificações diárias, backups, etc. Detecções importantes da configuração precisam ser observadas (por exemplo, associações a grupos, conjuntos de permissões, sintonizadores fs para desempenho e qualquer outra coisa que não seja padrão)

    
por 04.04.2013 / 10:09
1

O FHS também é para facilitar a administração, por isso gostaria de usar o / srv por esse motivo, embora não seja o que eu fiz. Tenha retrospectiva perfeita embora. Eu uso / export / srv porque está no NAS.

Se for uma caixa suspensa, certifique-se de que esteja setgid e sticky. Também garanta que aqueles que o usam tenham uma umask útil. No entanto, não use roda como eu fiz no exemplo dos modos de acesso a arquivos. Não tira o eXecute ou você terá uma surpresa O_o.

bash-3.2$ mkdir movies
bash-3.2$ sudo chmod 03771 movies
Password:
bash-3.2$ ls -ld movies/
drwxrws--t 2 andrewb wheel 68 Apr  4 17:09 movies/
bash-3.2$ umask 026
bash-3.2$ touch movies/junk
bash-3.2$ ls -l movies/
total 0
-rw-r----- 1 andrewb wheel 0 Apr  4 17:09 junk
    
por 04.04.2013 / 11:21
0

Eu pessoalmente optar por / usr / share / movies-enthusiast ou / opt / movies-enthusiast

    
por 31.03.2013 / 20:13
0

Eu sugiro criar um diretório separado como / opt / movies, definir permissões apropriadas de usuário e grupo para eles e também você pode usar o disco quota para evitar o consumo total de disco.

    
por 01.04.2013 / 10:44
0

Isso é tanto um comentário quanto uma resposta (então, por favor, não me desanime por isso!), mas é muito longo para caber em um comentário.

Eu faço duas coisas, as quais evitam o problema que você está enfrentando.

1) Eu faço uma partição separada de todo o espaço livre no disco do meu sistema e rotulo o espaço para dados. É aí que todos os meus arquivos de mídia atuais e outros dados vão. Ele é montado automaticamente como / media / dataspace e eu coloco qualquer coisa que é "data" em um diretório chamado "data" para separá-lo de coisas como arquivos de trabalho, vms ou imagens iso que não quero fazer backup de rotina.

Usar uma partição separada tem o benefício adicional de que, se ela for preenchida, não comprometerá meu sistema como se fosse armazenado em / ou / home.

2) Eu coloquei a maioria dos meus dados / mídia, especialmente coisas que eu não estou usando "agora", em outra unidade física (USB no meu caso com um notebook). Isso facilita o backup e facilita a conexão a outro computador, caso seja necessário.

    
por 06.04.2013 / 00:23
0

É importante lembrar que o FHS aborda questões em que os canais de arquivos precisam ser coordenados entre várias partes, como sites locais, distribuições, aplicativos, documentação, etc. ; o FHS não tenta definir regras para cada situação que você possa ter: colocação local de arquivos locais é um problema local ( FHS 3.0, seção 1.1 ).

Portanto, você pode colocar tecnicamente o diretório movies em qualquer lugar, contanto que não vá contra as convenções do FHS. Ainda assim, sua pergunta foi sobre o lugar mais apropriado , então vamos considerar algumas respostas comuns (ordenadas de forma mais preferida para as minhas menos preferidas, considerando seu caso de uso específico):

  • /<someprefix>/<groupname> ou /media/<volumename>/<groupname> : Eu honestamente não sei por que essa opção tem uma má reputação no mundo Linux, mas vamos deixar isso claro: esse é realmente o seu sistema , e o FHS diz que você está livre de criar novos diretórios no nível da raiz, desde que você não entre em conflito com nada para o qual há uma semântica bem estabelecida. Você poderia, por exemplo, criar um diretório /groups ou /shared e organizar os arquivos como achar melhor. Eu sei que alguns administradores preferem que estes sejam um pouco isolados do resto do sistema de arquivos, então eles montam um volume distinto (por exemplo, em /media/<volumename>/<groupname> ). Ambos estão bem e ambos são complacentes com a FHS, na verdade.

  • /srv/<groupname> ou /srv/<someprefix>/<groupname> : de acordo com o FHS, /srv contém dados específicos do site que são servidos por este sistema . A FHS continua explicando que a metodologia usada para nomear subdiretórios de / srv não é especificada . Da minha experiência pessoal, a maioria dos administradores que exploram o diretório /srv continua com um subdiretório por cliente, por site ou por projeto e, em seguida, coloca diretórios de dados nesse nível. No entanto, você o estrutura, o /srv é perfeitamente aceitável para armazenar arquivos a serem compartilhados entre vários usuários, se você puder razoavelmente considerar que o compartilhamento desses arquivos constitui um serviço por si só. Pergunte a si mesmo: "Faz sentido compartilhar esses arquivos por meio do SMB / NFS / AFS / GIT / ...?" Se assim for, então você pode razoavelmente considerar que seu diretório é um serviço de compartilhamento de arquivos local e, portanto, armazená-los dentro de um subdiretório de /srv , mesmo que não haja um daemon servindo esses arquivos em outros sistemas.

  • /home/<groupname> ou /home/<some-prefix>/<groupname> : O FHS diz: /home é um conceito bastante padrão, mas é claramente um sistema de arquivos específico do site . Não há absolutamente nenhum requisito de que cada diretório em /home seja o nome de um usuário real, e é aceitável ter subdiretórios para grupos, embora seja necessária precaução para evitar possíveis conflitos entre um grupo e um usuário. Ainda assim, tenho visto essa estratégia usada em várias configurações grandes (principalmente universidades) com alguma estratégia de compartimentação para evitar a possibilidade de conflito; por exemplo, os usuários reais teriam seus diretórios pessoais em /home/students/<studentid> , /home/teachers/<username> ou /home/staff/<username> , enquanto o compartilhamento seria, por exemplo, colocado em /home/workgroup/<workgroupname> . Às vezes eles também seriam uma subdivisão de departamento; Ainda assim, você entendeu a ideia. Para ser honesto, eu pessoalmente não gosto dessa estratégia, mas torna as coisas um pouco mais fáceis quando /home é distribuído entre vários servidores (por exemplo, via NFS), e é por isso que ele tende a ser preferido em organizações muito grandes.

por 26.09.2018 / 23:08