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


83

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 de entusiastas do cinema . Onde devo colocar os arquivos dos filmes?

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

  • /home/movies-enthusiasttambém não é apropriado, porque o entusiasta do cinema é um grupo, não um usuário;

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

  • /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.


6
Votado para menção à ESF! Este usuário * nix e administrador de sistemas casual de 20 anos não o conheciam. Obrigado!
CPRitter

Respostas:


72

Não use

  • /usré para dados somente leitura compartilháveis. Os dados aqui devem ser alterados apenas por razões administrativas (por exemplo, a instalação de novos pacotes).
  • /opt geralmente é para programas independentes ou que precisam ser isolados do restante do sistema por algum motivo (programas honeypot de baixa e média interação, por exemplo).
  • /varé para "arquivos cujo conteúdo é esperado para mudar continuamente durante a operação normal do sistema - como logs, arquivos em spool e arquivos de email temporários". Eu gosto de pensar assim: se seus dados não parecerem resumidos corretamente em uma lista, geralmente eles não pertencem /var( no entanto, existem exceções a isso).

Usar

  • /homeé para diretórios pessoais do usuário. Alguns veem esse diretório como uma área para arquivos de grupo também. O FHS observa que "em sistemas grandes (especialmente quando os diretórios / home são compartilhados entre muitos hosts usando o NFS), é útil subdividir os diretórios pessoais do usuário. A subdivisão pode ser realizada usando subdiretórios como / home / staff, / home / convidados, / casa / estudantes etc. "
  • /srvé um local aceitável e frequentemente preferido para arquivos de grupo. Eu geralmente uso esse diretório para arquivos compartilhados em grupo pelo motivo mencionado na resposta de Chris Down ; Vejo o compartilhamento de arquivos em grupo como um serviço que o servidor fornece.

Consulte a página de manual hier (7) ( man hier) para obter mais informações sobre a finalidade de cada diretório descrito pela ESF.


1
Suponho que, em um caso mais genérico, pode-se usar o /srv/datadiretório para arquivos de dados.
218 Victor Yarema #

4
+1 por mencionar man hier. Eu não sabia que existia.
Zach Boyd

Obrigado, informações e referências muito úteis para um novo usuário do Linux.
Shivam 12/12

28

Na minha opinião, o lugar certo é /srv/movies-enthusiast. Um "serviço" não precisa ser um daemon ou programa, apenas um serviço que o sistema fornece (como poder levar seus filmes para lá). Aqui está uma citação da ESF :

/ srv contém dados específicos do site que são servidos por este sistema.

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


Suponho que, em um caso mais genérico, pode-se usar o /srv/datadiretório para arquivos de dados.
218 Victor Yarema #

11

O FHS ( Filesystem Hierarchy Standard ) especifica um layout para "Desenvolvedores de distribuição Unix, desenvolvedores de pacotes e implementadores de sistema" a serem seguidos para não prejudicar seu espaço de nome.

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

Como os caminhos escolhidos não são definidos no FHS, a distribuição ou os pacotes de terceiros não devem tocá-los. Como tal, você deve ler o ESF para saber quais caminhos podem ser usados ​​por softwares compatíveis (o índice indicará a maioria do que você precisa saber).

Por exemplo, eu uso pessoalmente /avonde armazeno meu conteúdo audiovisual, /srcpara código fonte e /datapara dados indefinidos (como imagens de máquinas virtuais, imagens de CD, chroots, pacotes salvos, etc.).


Eu pessoalmente uso / data para todos esses arquivos, depois / data / movies para conteúdo audiovisual, / data / src para código fonte, / data / music. tudo em um só lugar (hierárquico).
meduz

Seguir ou seguir os padrões de muitas vezes uma boa idéia, mesmo que você não seja um desenvolvedor de desenvolvimento, desenvolvedor de distribuição ou desenvolvedor de sistema.
Felipe Alvarez

Adicionar um novo diretório não é contra o FHS; na verdade, eu argumentaria que, em algum momento, não é necessário criar novos diretórios para permanecer em conformidade com a FHS ! A ESF menciona especificamente que qualquer pergunta que não precise ser coordenada entre várias partes está fora do escopo desse padrão. Portanto, tentar atender a todas as eventuais necessidades dentro de um dos diretórios definidos pelo FHS é obrigado a criar situações em que os arquivos são colocados nos diretórios onde não deveriam estar.
precisa saber é o seguinte

7

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

Particularmente, se esse é o objetivo principal deste sistema, eu apenas criaria

/ entusiasta de filmes

Se houver outros "grupos" similares, 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

Perguntas a considerar: Você vai dedicar um ponto de montagem para esse fim?

Você já considerou softlinks?

De qualquer forma, não há regras. Se você deseja tornar um usuário o custodiante e conceder ao restante acesso a este espaço do projeto, fique à vontade para hospedá-lo no diretório inicial do usuário. Ou crie um espaço de nome / home / shared / *. Você é seu próprio chefe.

Oh, uma coisa: faça o que fizer, documente. Ele precisa se tornar parte da recuperação do sistema, verificações diárias, backups, etc. É necessário observar importantes configurações (por exemplo, participações em grupos, conjuntos de permissões, ajustáveis ​​fs para desempenho e qualquer outra coisa que não seja padrão)


1

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

Se for uma caixa suspensa, verifique se ela é setgid e pegajosa. Verifique também se as pessoas que o usam possuem uma umask útil. No entanto, não use o wheel, como fiz no exemplo dos modos de acesso a arquivos. Não tire 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

1

É importante lembrar que o ESF soluciona problemas 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 todas as situações que você possa ter: o posicionamento local de arquivos locais é um problema local ( FHS 3.0, seção 1.1 ).

Portanto, você pode tecnicamente colocar seu moviesdiretório em qualquer lugar, desde que não seja contrário às convenções da ESF . Ainda assim, sua pergunta era sobre o local mais apropriado ; portanto, consideremos algumas respostas comuns (ordenadas entre as mais preferidas e as menos preferidas, considerando seu caso de uso específico):

  • /<someprefix>/<groupname>ou /media/<volumename>/<groupname>: Sinceramente, não sei por que essa opção tem má reputação no mundo Linux, mas vamos deixar isso claro: esse é realmente o seu sistema, e a ESF diz que você está livre de criar novos diretórios no nível raiz desde que pois você não entra em conflito com nada para o qual haja semântica bem estabelecida. Você pode, por exemplo, criar um diretório /groupsou /sharedorganizar arquivos neles como achar melhor. Eu sei que alguns administradores preferem tê-los um pouco isolados do resto do sistema de arquivos, então montam um volume distinto (ou seja, abaixo /media/<volumename>/<groupname>). Ambos estão bem e ambos são compatíveis com a ESF, realmente.

  • /srv/<groupname>ou /srv/<someprefix>/<groupname>: De acordo com a ESF, /srvcontém dados específicos do site que são atendidos por este sistema . A ESF continua explicando que a metodologia usada para nomear subdiretórios de / srv não é especificada . Pela minha experiência pessoal, a maioria dos administradores que exploram o /srvdiretório continua com um subdiretório por cliente, por site ou por projeto e depois coloca os diretórios de dados nesse nível. Como você o estrutura, o/srvé perfeitamente aceitável armazenar arquivos para serem compartilhados entre vários usuários, se você puder considerar razoavelmente que o compartilhamento desses arquivos constitui um serviço por si só. Pergunte a si mesmo: "faria sentido, eventualmente, compartilhar esses arquivos através de SMB / NFS / AFS / GIT / ...?" Nesse caso, considere razoavelmente que seu diretório é um serviço local de compartilhamento de arquivos e, portanto, armazene-os dentro de um subdiretório /srv, mesmo que não haja um daemon realmente servindo esses arquivos em outros sistemas.

  • /home/<groupname>ou /home/<some-prefix>/<groupname>: A ESF 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 todo diretório /homeseja 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, eu já vi 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, usuários reais teriam seus diretórios em /home/students/<studentid>, /home/teachers/<username>ou /home/staff/<username>, enquanto o material compartilhado seria, por exemplo, ser colocado em/home/workgroup/<workgroupname>. Às vezes, eles também seriam uma subdivisão de departamento; ainda assim, você entendeu a idéia. Para ser sincero, pessoalmente não gosto dessa estratégia, mas facilita um pouco as coisas quando /homeé distribuída entre vários servidores (por exemplo, via NFS), razão pela qual tende a ser preferida em organizações muito grandes.


0

Eu pessoalmente optaria por / usr / share / movies-entusiasta ou / opt / movies-entusiasta


0

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


0

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

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

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

O uso de uma partição separada tem o benefício adicional de que, se for preenchido, não comprometerá o meu sistema como faria se estivesse armazenado em / ou / home.

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

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.