Como configuro um diretório compartilhado no Linux?

5

Eu tenho um servidor linux que quero usar para compartilhar arquivos entre usuários da minha empresa. Os usuários acessarão a máquina com o sftp ou shell seguro.

Aqui está o que eu tenho:

cd /home
ls -l
drwxrwsr-x  5 userA         staff      4096 Jul 22 15:00 shared
(other listings omitted)

Eu quero que todos os usuários do grupo de funcionários possam criar, modificar, excluir qualquer arquivo e / ou diretório na pasta compartilhada. Eu não quero que ninguém mais tenha acesso à pasta.

Eu tenho:

  1. Adicionamos os usuários ao grupo pessoal modificando o / etc / group e rodando o grpconv para atualizar o / etc / gshadow

  2. Executar chown -R userA.staff / home / shared

  3. Execute chmod -R 2775 / home / shared

Agora, os usuários do grupo podem criar novos arquivos, mas não podem abrir os arquivos existentes no diretório para edição. Eu suspeito que isso se deva ao ID do grupo primário associado a cada usuário, que ainda está definido para ser o grupo criado quando o usuário foi criado. Então, o PGID do usuário 'userA' é 'userA'.

Prefiro não alterar o grupo primário de usuários para 'equipe' se puder ajudar, mas se for a opção mais fácil, eu consideraria isso.

E, uma variação em um tema, eu gostaria de fazer a mesma coisa com outro diretório, mas também permitir que o usuário do apache leia os arquivos no diretório e os sirva.

Qual é a melhor maneira de configurar isso?

    
por JR Lawhorne 23.07.2009 / 22:25

3 respostas

5

O que você realmente parece correto. Você tem o bit setgid definido no diretório, portanto, os novos arquivos criados devem herdar o grupo staff . Eles ainda permanecem de propriedade do criador, no entanto. Eu suspeito que o problema é que o umask para seus usuários é o padrão para 022 ou mesmo 077 , o que significa que novos arquivos que eles criam não terão a permissão de gravação em grupo por padrão. A propriedade do usuário / grupo está correta, mas as permissões do grupo não permitem que outros membros do grupo gravem (ou talvez até leiam) os arquivos.

Escolha um usuário no grupo staff e defina o umask para 002 ou 007 , o que significa que os novos arquivos serão graváveis pelo proprietário e pelo grupo. Eu suspeito que isso corrija o problema:

bash$ umask
0022
bash$ umask 002
bash$ umask
0002

Além disso, você observou que não deseja que ninguém fora do grupo staff tenha acesso ao diretório. Você deve modificar as permissões do diretório para 2770 para conseguir isso, caso contrário, o staff não conseguirá ler (mas não modificar) os arquivos no diretório.

Para a última pergunta sobre o usuário apache , a maneira mais fácil é provavelmente adicionar esse usuário ao grupo staff .

    
por 23.07.2009 / 22:44
0

Concordo com suas descobertas. Sobre o Daemon do sistema de arquivos FUSE. Eu reescrevi o procedimento sobre como fazer com que esse compartilhamento local entre os usuários seja feito facilmente no link caso você ainda esteja em um labirinto.

    
por 11.09.2009 / 18:00
0

O problema é que o deamon do sftp não pega os scripts de login e aparece com uma umask que não permite gravar no grupo.

Para contornar isso, crie um script que defina o umask e, em seguida, execute o servidor sftp: cat / usr / lib / openssh / sftp-server-prot umask 02 exec / usr / lib / openssh / sftp-server

Em seguida, edite ssh / sshd_config para usar o script de wrapper acima: Subsistema sftp / usr / lib / openssh / sftp-server-prot

Em seguida, reinicie o sshd.

    
por 18.06.2010 / 14:46