Dica: tenha um diretório compartilhado entre vários usuários no Linux

terminal

Hoje volto com outra dica que, pessoalmente, uso muito: ser capaz de ter um diretório compartilhado entre vários usuários em um Linux. Eu os coloquei em uma situação, com minha esposa em casa, nós dois usamos o mesmo PC com Arch Linux mas cada um com seu próprio usuário. Então, percebemos o problema com aquelas pastas que compartilhamos como música ou fotos, já que cada uma tinha seus próprios arquivos, duplicando coisas.

Foi então que pensamos fazer uma pasta compartilhada, mas esse é o problema das permissões. Se a pasta é minha ela não vê, se o arquivo é criado por mim, ela não apaga e assim por diante. No início, o patch era dar 777 permissões para esses arquivos toda vez que editávamos algo para o outro acessar até encontrarmos a solução, Permissões de grupo!

O que são permissões de grupo?

Isso é o melhor, atribuir a esse diretório compartilhado e todo o seu conteúdo um grupo especial com permissões de leitura e gravação, com o qual todos os membros do grupo terão acesso ao referido diretório. Isso permite que, simplesmente adicionando nossos usuários àquele grupo, já possamos interagir naquele diretório.

E como faço para configurá-lo?

Esta é a melhor parte e continuo contando como fiz isso com minha esposa. A primeira coisa é criar esse diretório, que no exemplo chamarei de «compartilhado".

sudo mkdir /home/compartido

Eu crio dentro de / home e fora de nossas contas, para evitar que os diretórios superiores se incomodem com suas próprias permissões. Agora devemos criar o grupo, que colocaremos «compartilhado»

sudo groupadd compartidos

E atribuímos este grupo ao diretório que criamos antes e também alteramos as permissões, de forma que tudo o que criamos dentro, sejam diretórios ou arquivos, também pertença a este grupo.

sudo chgrp -R compartidos /home/compartido
sudo chmod g+s dirname

Além disso, temos que adicionar nossos usuários a ele. Então devemos repetir este comando para cada um:

sudo usermod -G compartido sebastian
sudo usermod -G compartido mimujer

Até agora, temos o diretório «/ home / shared»Que pertence ao grupo«compartilhado«, Com o que todos os utilizadores membros do mesmo podem aceder e tudo o que se cria no directório, pertencerá ao grupo com o que qualquer um de nós os poderá ver.

Agora precisamos apenas de um último passo, que pode ser opcional, mas é mudar o umask dos usuários, para garantir que cada novo arquivo que criamos seja modificável pelos outros membros do grupo. Isso afeta todo o usuário, não apenas o diretório, então eles precisam ver se funciona para eles ou não. No meu caso, como só eu e minha esposa usamos o sistema, isso não nos incomoda e nos atribuímos um umask de 002, o que significa que todo arquivo criado começa com 775 permissões.

Editando o umask

Para editar o umask, em cada usuário você deve editar o arquivo .profile ou .bashrc que está dentro da casa do usuário e modificar o valor de umask pelo número desejado. Se a opção não estiver lá, devemos adicioná-la.

Você também pode editar o arquivo / etc / profile para que a mudança afete todos os usuários

Então, no console, colocamos:

sebastian@multivacs ~> vim .profile

E veremos algo assim:

vi-perfil2

Então, vamos para a linha que diz umask, pressionamos a letra i para editar e remover o # para remover o comentário. Mudamos o número para 002. Se a linha não aparecer, eles devem adicioná-la.

Assim que terminar, pressionamos a tecla Esc para sair do modo de edição e então escrevemos :+q+w. O que nos faz salvar as alterações e sair do Vi.

Será semelhante a esta imagem:

vi-perfil

E é isso! Se eles fecharem sua sessão de usuário e reabri-la, as alterações serão realizadas, então o diretório compartilhado estará funcionando.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   elav. dito

    Ótima dica.

  2.   KZKG ^ Gaara dito

    Genial.

    Alguns anos atrás eu vi a necessidade de fazer isso sozinho, o que eu não sabia era o umask ... ao invés disso coloquei uma tarefa no crontab 🙂

    Obrigado pela dica

    1.    Talskarth dito

      Sim, o crontab também é bom. O que você colocou para atribuir 775 permissões ao conteúdo?

  3.   rawBasic dito

    Ótima dica .. ..salve se necessário;) ..

  4.   Luis dito

    Ok, você cria a pasta / home / shared e atribui o grupo "shared" a ela, mas

    A qual usuário esta pasta pertence? Ou seja, quem é o dono? Eu, a outra pessoa ou o usuário root cuja conta está desabilitada desde que uso o sudo?

    Por outro lado, encontro-me com o seguinte problema: Os arquivos que eu crio não podem ser excluídos pela outra pessoa e os arquivos que a outra pessoa cria não posso excluir eu mesmo.

    O que eu fiz de errado?

    1.    Talskarth dito

      Ao criar a pasta com o sudo, você deve deixar o root como proprietário. Você também pode modificar isso com o comando chown para atribuir outro usuário.

      Por outro lado, verifique se os arquivos que você cria o fazem com 775 permissões (o que dá umask 002). Se eles não tiverem essas permissões, pode haver algumas configurações incorretas.

      Da mesma forma, vale esclarecer que o umask afeta cada novo arquivo que é criado no diretório, mas se mover ou copiar conteúdo de outro local, as permissões originais são mantidas e não aquelas que definimos para o diretório.

      1.    Luis dito

        Ei Tem razão.

        Estive procurando e o problema é causado por aquela última coisa que você diz: Ao mover um arquivo de outro local para a pasta compartilhada, as permissões originais são mantidas.

        Existe uma solução para isso?

        Eu poderia usar pérolas.

      2.    Talskarth dito

        Nesse caso, a melhor coisa seria colocar um crontab como KZKG ^ Gaara disse, no qual você poderia colocar um comando para atribuir o grupo e as permissões ao conteúdo da pasta a cada X vez.
        Isso quer dizer algo assim no crontab:
        sudo chgrp -R compartidos /home/compartido/*
        chmod -R 775 /home/compartido/*

        Para tudo novo, vá para o grupo Compartilhado com permissões 775.

      3.    Talskarth dito

        Ignore o * no final de cada linha, estava pensando em outra coisa quando coloquei 😛

      4.    Luis dito

        Amigo obrigado.

  5.   ernesto dito

    Postagem muito boa, mas prefiro ter uma partição separada, na qual posso colocar tudo o que desejo compartilhar. Tenho um generoso disco de 500 GB, no qual utilizo 100 GB com Linux e uma partição de 400 GB (ntfs) na qual estão todas as músicas, fotos, etc ... No meu pc somos dois usuários e cada um pode acessar a partição ntfs e colocar e remover o que quisermos, quando quisermos. Se eu não quiser compartilhar nada, tenho alguns itens em meu nome de usuário. 🙂

    1.    Luis dito

      Já é outra maneira de fazer, mas o problema não é onde colocar os arquivos, mas sim configurar as permissões e controlar o acesso dos diferentes usuários.

      Você pode tê-lo em uma partição NTFS, correto, mas você também tem fragmentação, mais lento que EXT4 e menos segurança, embora se for bom para você tê-lo dessa forma é igualmente válido.

  6.   chuva dito

    OK! Boa dica, mas eu ainda adicionaria uma tarefa para alterar as permissões de 775 dos novos arquivos a cada login, e resolver o problema de arquivos movidos de outra pasta.
    Além disso, muito obrigado por compartilhar!

  7.   Joaquin dito

    Interessante, obrigado!

  8.   anônimo dito

    Estou levantando algo relativo ao grupo de compartilhamento primário de algumas distribuições GNU / Linux. Algumas distros criam o usuário com os usuários do grupo primário e não usando um grupo primário igual ao nome do usuário.
    A diferença é que usando os usuários do grupo primário, por padrão, tudo está sendo compartilhado com os usuários do grupo ao qual todos os usuários criados nessa distro pertencerão, se em vez disso forem criados com o mesmo grupo do nome do usuário, por padrão não nada será compartilhado.

    Exemplo:
    $ ls -l /home/user/*.txt
    -rw-r - r– 1 carlos carlos 126 25 de março de 2012 notes.txt

    $ ls -l /home/user/*.txt
    -rw-r - r– 1 usuários carlos 126 25 de março de 2012 notes.txt

    Eu não recomendo usar os usuários do grupo primário, melhor criar seu próprio grupo primário ao criar o usuário.

    #groupadd carlos
    # useradd -g carlos -G lp, wheel, uucp, audio, cdrom, cdrw, usb, lpadmin, plugdev -m -s / bin / bash carlos

    O -g carlos indica o uso do grupo pai carlos.
    Você pode mudar o grupo primário de um usuário com # usermod -g, mas isso não mudará o grupo primário de todos os arquivos e pastas que já estão em / home / carlos, você terá que mudar todos eles.

    Exemplo: mude os usuários do grupo primário de usuário carlos para o grupo primário carlos e, em seguida, mude
    todas as permissões de arquivo e pasta do usuário carlos para que permaneçam de carlos carlos.

    #groupadd carlos
    #usermod -g usuários carlos
    # cd / home
    # chown -R carlos: carlos carlos

    Com relação ao compartilhamento, você pode criar um usuário chamado compartilhado com seu grupo primário compartilhado e, para que não haja problemas de permissão ao copiar, primeiro você altera o usuário
    com "$ su - shared" então o que você deseja é copiado para / home / shared, com isso as permissões do que é copiado passam a ser do usuário compartilhado.
    Se já houver arquivos de cópia pertencentes a outros usuários e grupos primários, você deve alterar todos eles.

    # cd / home
    # chown -R shared: shared shared

    Resta apenas algo no limbo, que eu não sei fazer para copiar graficamente como o usuário compartilhado, ou seja, sem ter que fazer $ su - shared

  9.   anônimo dito

    Copiar graficamente foi uma coisa muito boba, hehe, eu utilizo o pcmanfm aqui no openbox, mas você pode usar o gerenciador de arquivos que você tem ou deseja, ele só é executado como usuário compartilhado e não como usuário root.

    $ su - compartilhado
    $pcmanfm
    $ golfinho
    $mc
    etc etc

    1.    Talskarth dito

      Eu estava prestes a responder a isso. Se não, o outro é um crontab que muda o dono dos arquivos a cada x vez com um
      chown -R compartido:compartido compartido

  10.   Hugo dito

    Parece-me que o comando "usermod -G the new group the user" basicamente muda o grupo do usuário para "the new group". Para adicionar um usuário existente a um novo grupo, acho que o correto seria "usermod -aG elnuevogrupo elusuario"

    Outra coisa é que vejo aqui que várias pessoas recomendam fazer um "chmod -R 775", mas isso não afeta apenas os diretórios, mas também todos os arquivos (tornando-os executáveis), o que apresenta um risco desnecessário. Melhor fazer algo como «find / home / shared -type d -print0 | xargs -0 chmod 755 "e se necessário com os arquivos você pode fazer algo semelhante, mas usando" -type f "e concedendo permissão 664.

    Finalmente, uma maneira de fazer com que várias contas tenham acesso a um arquivo ou pasta, independentemente de quem seja o proprietário ou grupo, é usando o comando "setfacl" que está no pacote acl (se bem me lembro). Seu uso é bem explicado na página do manual.

  11.   unai martin dito

    Eu tenho o seguinte problema. Criei 4 usuários (web1, web2, web3, web4) e desejo criar uma pasta de grupo de acesso para os usuários do grupo web. Quando crio o arquivo .htaccess sei que tenho que colocar require valid-user, mas se eu colocar require valid-user web1 web2 web3 web4 para que eles possam acessar a pasta com sua senha, quando tento acessar a pasta ele me pede o usuário e senha de cada um. Como faço para solicitar apenas o nome de usuário e senha de quem deseja entrar? porque se presume que um não sabe a senha do outro.

  12.   Gustavo F. Paredes dito

    Olá.

    O 4º terminal deve ter o plural "compartilhado":

    sudo usermod -G compartilhado sebastian

    sudo usermod -G compartilhou minha mulher

    Saudações.

    Gustavo

  13.   Ivan dito

    Felicidades :

    Estamos migrando do Windows Server para o CentOs 6 e ainda estamos em processo de adaptação. Minha consulta: Existe uma interface gráfica no CentOs para compartilhar pastas e dar acesso aos usuários para modificar, editar e / ou excluir arquivos?, Ou devo fazer todo o procedimento acima.

    Obrigado pela ajuda.

    1.    Rafael dito

      Também estou instalando um centos 6 e quero usá-lo com samba que me permite compartilhar arquivos de linux e windows, sei um pouco, não uso muito linux, mas no trabalho me perguntam como faço para compartilhar pastas mas em modo gráfico ??.

  14.   Ricardo dito

    Oi. Por favor me ajude! ... Acontece que ao fazer isso em minha mente de usuário Linux, agora perdi privilégios. Não consigo executar nada parecido com o sudo. Recebo a seguinte mensagem "Com licença, o usuário" nome de usuário "não está autorizado a executar" command_to_run "como root em" nome de usuário ""

    Acho que quando mudei meu usuário para o grupo compartilhado, tirei os privilégios, e agora como faço para restaurá-los ???

  15.   Projeto de lei dito

    Ei, amigo, há alguma maneira de fazer o mesmo, mas compartilhando arquivos com outras pessoas na LAN da Internet

  16.   Fabiano dito

    Para isso você deve usar o SAMBA como Servidor de Arquivos. Felicidades

  17.   David dito

    Oi. Quando cheguei ao comando sudo chmod g + s dirname, ele me disse que o arquivo ou diretório não existe. Você sabe qual é o problema?

  18.   Javier Quiroga Almeida dito

    Como faço para criar um grupo em outro grupo?

  19.   Rodrigo Hernán Ramos dito

    A linha:
    sudo usermod -G compartilhado sebastian

    deveria ser:
    sudo usermod -a -G compartilhado sebastian

    a primeira forma remove o resto dos grupos do usuário.
    e se você está suado, você perde seus privilégios