Conceder acesso a um arquivo ou diretório para outro usuário, mas nem todos os usuários no Ubuntu

4

Como permitir que um usuário - mas não todos - acessem arquivos de outro usuário no Ubuntu?

Eu tenho um diretório /home/alice/dir de propriedade de alice :

$ cd /home/alice
$ ls -l
drwxr-x---  2 alice alice       4096 Feb 10 21:24 dir

, ou seja, o dono alice e o grupo alice têm acesso de leitura / execução. É claro que /home e /home/alice são legíveis / executáveis para todos ( drwxr-xr-x ), que é a configuração padrão para o Ubuntu.

Eu quero permitir que o usuário bob acesse este diretório, mas qualquer outro usuário eve não deve ter acesso.

O que eu fiz até agora foi:

$ sudo adduser bob alice

e agora

$ getent group alice
alice:x:1001:bob

agora, bob está no grupo alice .

No entanto, ainda bob não pode acessar o diretório:

$ whoami
bob
$ cd /home/alice
$ pwd
/home/alice
$ ls -l
drwxr-x---  2 alice alice       4096 Feb 10 21:24 dir
$ groups bob
bob : bob alice
$ cd dir
bash: cd: test: Permission denied

O que há de errado?

Os usuários foram criados com

sudo adduser alice
sudo adduser bob
sudo adduser eve

Ubuntu 14.04. Eu acho que o ACL não é usado, e eu não quero usá-los - eu acho que o que eu quero deve ser perfeitamente viável sem o ACL.

    
por Alexander Gelbukh 11.02.2015 / 09:34

1 resposta

3

A maneira de fazer isso, conforme descrito na pergunta, está correta:

$ sudo adduser bob alice

No entanto, você não verá as alterações imediatamente: todos os processos e serviços em execução no momento devem ser reiniciados para que eles vejam as alterações.

Isso ocorre porque, quando você atualiza os grupos, as permissões dos processos e serviços em execução no momento, incluindo o shell, não são atualizadas. Portanto, no meu caso, groups (o shell atual foi iniciado por bob antes dos grupos serem alterados) e groups bob (permissões atuais do usuário bob ) mostraram resultados diferentes:

$ whoami
bob
$ groups bob # current membership of bob
bob alice
$ groups     # shell run by bob BEFORE the groups changed
bob
$ cd /home/alice/dir
bash: cd: test: Permission denied

Então eu tive que fechar o shell, e até mesmo fechar o túnel (eu estava conectado à caixa do Ubuntu através de um túnel SSH) e abrir um novo shell (depois eu me conectei ao SSH novamente) e então vi

$ whoami
bob
$ groups bob
bob alice
$ groups     # current shell run by bob AFTER the groups changed
bob alice
$ cd /home/alice/dir
$ pwd
/home/alice/dir

Se bob for um serviço, como apache2 (em execução no usuário www-data ), esse serviço será reiniciado!

    
por 11.02.2015 / 10:54