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.