Como controlar o acesso ao diretório?

2

ajude com a pergunta. Existe um servidor no CentOS 7, ele tem um monte de usuários, cada um com seus próprios projetos. Alguns usuários têm subprojetos nos quais outros usuários trabalham, a estrutura é aproximadamente a seguinte: / home / user1 / {project1, project2} para o projeto 1/2 owner user1: user1 / home / user2 {project1, project2}

O que eu quero fazer, mas não funciona: existe um poduser1 permissível, que deve funcionar silenciosamente (rwx) com project2 do user1, mas os outros projetos desse usuário devem estar indisponíveis. Para lançar um usuário em um grupo não é bom, muitos direitos obter tudo, tentou através do ACL - é desajeitado em tudo

    
por cyber01 13.11.2017 / 12:22

1 resposta

1

Não está totalmente claro para mim o que você está pedindo, mas parece que você deseja que um usuário ( user1 ) compartilhe determinados subdiretórios (por exemplo, /home/user1/project1 ) com outros usuários ( user2 ) sem permitir acesso total ao seu diretório inicial ( /home/user1 ). Acho que a maneira padrão de conseguir isso seria criar um grupo específico de projeto para esse diretório e, em seguida, usar ACLs (Listas de Controle de Acesso) e o bit setgid para manter as permissões apropriadas e a propriedade dos arquivos nesse diretório. No seu caso, você provavelmente poderia executar os seguintes comandos:

groupadd project1

chown -R user1:project1 /home/user1/project1

chmod -R g+s /home/user1/project1

setfacl --default --modify group:project1:rwx /home/user1/project1

setfacl --modify group:project1:rwx /home/user1/project1

Você adicionaria as contas de usuário desejadas ao grupo project1 , por exemplo:

usermod -a -G project1 user2

Segue uma explicação mais detalhada.

Vamos analisar um exemplo de como poderíamos configurar o tipo de configuração que você descreveu. Todos esses comandos são executados como root.

Primeiro, vamos criar alguns usuários:

useradd -m user1
useradd -m user2

Em seguida, vamos criar um diretório de projeto no diretório inicial do primeiro usuário:

sudo -u user1 mkdir /home/user1/project1

Agora vamos criar um grupo associado a esse projeto e defini-lo como o proprietário do grupo para o diretório do projeto:

groupadd project1
chown -R user1:project1 /home/user1/project1

E vamos adicionar os dois usuários ao grupo desse projeto:

usermod -a -G project1 user1
usermod -a -G project1 user2

Agora vamos definir as permissões padrão para o diretório do projeto usando uma ACL (Access Control List):

setfacl --default --modify group:project1:rwx /home/user1/project1
setfacl --modify group:project1:rwx /home/user1/project1

E vamos também ativar o bit setgid:

chmod -R g+s /home/user1/project1

Neste ponto, tudo deve ser bom para ir. Vamos verificar as permissões no diretório do projeto:

root@host:~# ls -ld /home/user1/project1/

drwxrwsr-x+ 2 user1 project1 4096 Nov 13 12:20 /home/user1/project1/

root@host:~# getfacl /home/user1/project1

getfacl /home/user1/project1/
getfacl: Removing leading '/' from absolute path names
# file: home/user1/project1/
# owner: user1
# group: project1
# flags: -s-
user::rwx
group::r-x
group:project1:rwx
mask::rwx
other::r-x
default:user::rwx
default:group::r-x
default:group:project1:rwx
default:mask::rwx
default:other::r-x

E vamos testar a capacidade de user2 de escrever no diretório do projeto:

root@host:~# sudo -u user2 touch /home/user1/project1/testing

root@host:~# ls -l /home/user1/project1/testing
-rw-rw-r--+ 1 user2 project1 0 Nov 13 12:20 /home/user1/project1/testing
    
por 13.11.2017 / 13:27