Estou configurando um ambiente em que estou concedendo a vários usuários acesso SSH em meu servidor. Eles são todos confiáveis, mas eu quero encurralá-los em um segmento do sistema de arquivos. Eu criei os usuários assim:
adduser username -ingroup groupname
que funciona bem o suficiente. Quando eu fizer login como um deles, posso fazer isso e obter as respostas certas:
$id -r -u -n
username
$id -r -g -n
groupname
Eu mudei o grupo principal da minha própria conta de usuário para groupname
fazendo isso:
$usermod myuser groupname
Eu fiz o logout e voltei a entrar. Agora os arquivos que eu gostaria que o grupo pudesse acessar estão aqui:
$ls -l / | grep groupname
drwxr-xr-x 3 root groupname 4.0K 2012-03-26 20:20 groupfiles
$cd /groupfiles
$ls -l
drwxrwxr-x 2 root groupname 4.0K 2012-03-26 20:32 project
As permissões são por design, os membros do grupo não podem alterar arquivos / pastas em /groupfiles
, mas podem adicionar, editar e excluir em /groupfiles/project
O problema que estou tendo é que, quando faço isso, recebo o grupo errado:
$touch test
$ls -l test
-rw-rw-r-- 1 myuser myuser 0 2012-03-26 20:58 test
$id -r -g -n
groupname
Eu preciso fazer com que os arquivos criados pelo vim, touch, etc tenham o grupo correto. Estou ciente de newgrp()
e setgid
bits. Estes são não o que estou procurando. Isso funciona bem para os novos usuários que criei, , mas não funciona para o meu usuário. Não tenho certeza do que aconteceu, mas está funcionando bem agora. Acabei de deixar esta questão para futuros consertadores.