No meu servidor eu tenho diretório /srv/svn
.
É possível definir esse diretório para ter várias propriedades de grupo, por exemplo devFirmA
, devFirmB
e devFirmC
?
O ponto é que eu quero subversion
controlar a versão, gerenciar vários usuários em vários repositórios e não sei como mesclar /srv/svn
, o diretório raiz dos repositórios, permissões. Eu tenho, por exemplo, três empresas FirmA
, FirmB
e FirmC
. Agora, dentro /srv/svn
Eu criei três diretórios, FirmA
, FirmB
, FirmC
e dentro deles eu criei repositório para cada projeto e agora eu não sei como estabelecer esquema de permissão uma vez que todos elementes interior /srv/svn
são de propriedade root:root
, que não é ok, ou sou eu errado?
permissions
group
subversion
KernelPanic
fonte
fonte
Respostas:
Esse é um problema extremamente comum, se eu o entender com precisão, e o encontro constantemente. Se eu usasse ACLs para todos os problemas triviais de agrupamento, teria toneladas de sistemas incontroláveis. Eles estão usando as melhores práticas quando você não pode fazê-lo de outra maneira, não nesta situação. Este é o método que eu recomendo fortemente.
Primeiro, você precisa definir seu umask como 002, para que um grupo possa compartilhar consigo mesmo. Normalmente, crio um arquivo como
/etc/profile.d/firm.sh
oe adiciono um comando de teste com o umask.[ $UID -gt 10000 ] && umask 002
Em seguida, você precisa definir os diretórios para seus respectivos grupos,
Finalmente, você precisa definir o bit SGID corretamente, para que o grupo sempre permaneça no que você definiu. Isso impedirá que um arquivo gravado seja definido como o GID do gravador.
Agora, finalmente, se você deseja impedir que os diretórios sejam acessados por outros usuários.
fonte
svnadmin
:sudo usermod -a -G FirmA,FirmB,FirmC svnadmin
Isso será adicionadosvnadmin
a todos esses grupos. Como os arquivos em todos esses grupos têm a opção 'gravação em grupo' ativada (vocêchmod 664
fez isso), você e o firmX serão os únicos gravadores de arquivos pertencentes ao firmX.find /srv/svn/FirmA -type f -print0 | xargs -0 chmod ug+rw,o+r,o-wx
Você pode ter apenas um grupo como proprietário .
No entanto, usando as listas de controle de acesso, você pode definir permissões para outros grupos.
Verifique se você tem a ACL instalada emitindo o comando
getfacl
. Se o seu sistema não tiver ACL instalado, instale as ferramentas de linha de comando que estão noacl
pacote com:sudo apt-get install acl
Com
getfacl
você pode ler as informações da ACL de um diretório ou outro arquivo e comsetfacl
você pode adicionar grupos a um arquivo.Por exemplo:
Adiciona o grupo
devFirmB
com r ead, w rito, e x permissões ecute para o diretório/srv/svn
.Se você também deseja que os arquivos criados nesse diretório sejam de propriedade de vários grupos, defina a ACL como a ACL padrão. A
X
entrada do grupo padrão significa "permitir execução se executável pelo proprietário (ou qualquer outra pessoa)".fonte
Não é possível ter um arquivo de propriedade de vários grupos Linux com permissões tradicionais do Unix. (No entanto, é possível com a ACL .)
Mas você pode usar a seguinte solução alternativa e criar um novo grupo (por exemplo, chamada
devFirms
) que irá incluir todos os usuários dos gruposdevFirmA
,devFirmB
edevFirmC
.Você cria novos grupos de usuários com:
Primeiro, você pode precisar instalar
id-utils
para obter olid
comando:Em seguida, você pode executar a seguinte linha de código para copiar facilmente todos os usuários de
SOURCEGROUP
paraTARGETGROUP
. É claro que você deve executar o comando uma vez para cada grupo que deseja copiar. Não se esqueça de substituir os marcadores com letras maiúsculas pelos nomes reais dos grupos.Portanto, no seu caso, você teria que executar o comando (todas as linhas de uma vez):
Observe que esses comandos copiam apenas todos os usuários que são membros atuais dos grupos de origem. Todo usuário adicionado posteriormente também precisará ser adicionado manualmente ao seu grupo comum com o
adduser
comando Apenas substitua mais uma vez os espaços reservados maiúsculos pelo nome real do usuário e do grupo (devFirms
):Agradecemos a Justin Ethier por sua resposta no Unix e Linux.SE: Adicionar todos os usuários de um grupo a outro grupo?
fonte
Não, isso não é possível.
Cada arquivo (e também diretórios) pode ter apenas um usuário e um grupo.
fonte
Para fornecer direitos diferentes para vários grupos ou usuários, use os seguintes comandos (Testado no RHEL 6 e 7):
Para tornar o novo proprietário do grupo:
Para verificar as configurações atuais da ACL:
fonte