Como eu uso o Linux Groups para restringir a leitura, gravação, execução de acesso por outros usuários a um diretório?

0

ATUALIZAÇÃO: Eu descobri o que eu queria fazer no final. Veja aqui: link

Estou super confuso com esta resposta aqui: link

Diz:

The user will need read/execute rights to execute any command (ls, login shell, etc), so you can't easily take all rights away.

Usually it's enough to make sure they can't mess with the home directories of other users. To do this, put the user into a new group (like "untrusted"), chown his home directory and revoke the group and other rights on all home directories: chmod go-rwx /home/*/

Mas eu não entendo o que ele está dizendo. Alguém por favor me ajude. Aqui está o que eu tenho até agora, com algumas das minhas perguntas em negrito abaixo:

Na íntegra:

  1. Faça um novo usuário chamado "convidado": sudo adduser guest
  2. Crie um novo grupo chamado "não confiável": sudo groupadd untrusted
  3. Adicione o usuário "convidado" ao grupo "não confiável": sudo usermod -a -G untrusted guest
  4. Garantir que o usuário "convidado" agora faça parte do grupo "não confiável": groups guest

    • A saída é:

      guest : guest untrusted

    • Isso significa que o usuário "convidado" faz parte dos grupos "convidado" e "não confiável". Bom.

  5. Assuma a propriedade de quaisquer diretórios aos quais você deseja que "convidado" tenha acesso. Observe que, como usamos adduser acima, o convidado já tem acesso à pasta inicial "/ home / guest". No entanto, dar ao usuário "guest" de outros diretórios pode ser feito da seguinte forma : sudo chown -hR guest /any/directory/you/want/guest/to/own
  6. ??? (eu fiz o acima até agora corretamente ???) - Eu ainda quero que outros super usuários possam ver os arquivos dos convidados. Qual é o objetivo de tornar o grupo "não confiável" de qualquer maneira? Não vejo como isso muda nada.
  7. Revogue a leitura, gravação e execução (rwx) Grupo e Outros direitos em todos os outros diretórios home: ??? Se eu faço chmod go-rwx /home/*/ , então outros sudoers não conseguem nem ler os diretórios dos hóspedes - não é isso que eu quero! - Eu só quero que o convidado não consiga ler os diretórios dos outros, não exatamente o contrário, embora Eu faço um guest2 ele não deve poder ver os diretórios do guest1, nem o guest1 conseguir ver os diretórios do guest2, mas os sudoers devem poder ver os diretórios do guest1 e guest2.
por Gabriel Staples 07.12.2016 / 06:23

2 respostas

1

Eu não sei por que você precisaria de um grupo "não confiável" se você tivesse apenas um "convidado" (e você deveria ter apenas um convidado, geralmente). O grupo "guest" pode ser usado como "não confiável". De qualquer forma, vou tentar ser breve com uma explicação para apontar na direção certa:

??? (did I do the above so far correctly???) --I still want other super users to be able to see guest's files.

Qualquer pessoa que tenha efetuado login na conta "root" pode fazer isso. Use su -c "do something" ou sudo do something . Para fazer login como root, use su root (ou apenas su , como padrão, com root sem args) ou sudo -i (mas saiba que o login como root é desencorajado para usuários novatos).

What's the point of making the "untrusted" group anyway? I don't see how it changes anything.

Precisamente. No entanto, digamos, em um servidor de arquivos, pode ser muito útil ter grupos específicos para propósitos de acesso específicos. Os ambientes de desenvolvimento e teste podem se beneficiar da execução de processos com menos privilégios, testando binários não confiáveis (embora as cadeias sejam melhores para isso). Geralmente, ter um usuário não confiável pode ser útil na empresa, mas não em uma área de trabalho ou estação de trabalho. Pode haver muito mais casos de uso, por isso, antes dessas divagações, vou parar com isso e deixar o resto para a sua leitura.

Revoke the read, write, and execute (rwx) Group and Other rights on all other home directories: ??? If I do chmod go-rwx /home/*/, then other sudoers can't even read guest's directories--that's not what I want!--I just want guest to not be able to read others' directories

Não, claro que não. Revogar o acesso g (grupo) vai atrapalhar as coisas nesta instância e não atingir seus objetivos (para evitar que os hóspedes mexam na casa de outros usuários). Leia esta breve explicação:

A natureza padrão de adicionar um novo usuário via adduser é:

  1. Novo usuário criado com o ID do grupo principal correspondente.
  2. O novo usuário recebe uma pasta pessoal, geralmente / home / USERNAME / para a qual esse usuário tem privilégios de rwx.
  3. Por padrão, nenhum outro privilégio é concedido e nenhum grupo suplementar é atribuído ao usuário (ouço algumas configurações, mas não é um comportamento "baunilhado").
  4. Portanto, basta criar o usuário para obter tudo o que você declarou que deseja alcançar . Em outras palavras, comece de novo excluindo o usuário e o diretório pessoal do usuário e não altere nada até saber o que, se necessário, precisa ser alterado. Você pode ver os grupos da conta depois de criá-lo com id USER . Assim, você pode remover todos os grupos em que o convidado não deveria estar se o seu sistema tiver um comportamento padrão estranho.

I just want guest to not be able to read others' directories

Por padrão, o convidado pode ler somente outros arquivos. Se você deseja tornar os arquivos privados (visíveis somente para o proprietário, grupo e root), chmod -R o-rwx do diretório. O 'o' significa "outro" ou "mundo". Este sinalizador se refere a qualquer um que não seja o proprietário do arquivo ou um membro do grupo que possui o arquivo (com a exclusão do root, que é basicamente seu Usuário Todo-Poderoso). 'o-x' é necessário para garantir que as listagens de diretório não possam ser feitas, pois os diretórios são executáveis (fora do escopo)

Take ownership of any directories you want "guest" to have access to. Note that since we used adduser above, guest already has access to his "/home/guest" home folder. However, giving user "guest" of other directories can be done as follows: sudo chown -hR guest /any/directory/you/want/guest/to/own

Não. Se você quiser compartilhar pastas, crie um novo grupo chamado "shareful" (isso é uma piada porque você deve ser "cuidadoso") e adicione todos os usuários que compartilharão o diretório com esse grupo ( usermod -aG shareful myuser ). Em seguida, coloque a propriedade do grupo da referida pasta para o grupo de compartilhamento ( chown -R :shareful /this/path/ ) e chmod as permissões para que o grupo tenha rwx ( chmod -R g+rwx /this/path ). Neste ponto, você começará a querer investigar umask, mas isso está fora do escopo deste post.

Abaixo está um link para as informações do umask, mas primeiro, eu acho que você precisa reler as permissões básicas do arquivo * NIX (os dois primeiros links).

Permissões de arquivo: (Wikipedia) link (UNIX.com) link

Linux e umask: (Fonte desconhecida) link

Espero que isso esclareça as coisas pelo menos o suficiente para alcançar o que você quer.

    
por 07.12.2016 / 11:45
1

Ao ler sua pergunta, parece que você está apenas interessado em permissões nos diretórios /home , e não em outras formas de restringir as permissões dos usuários. Nesse caso, você está perto.

Sudoers

Primeiro, não precisa se preocupar com os sudoers. Eles não obedecem as permissões de arquivo que você vê. Veja como tentar:

mkdir test
touch test/test_file
ls test  # works!

chmod 000 test
ls test       # can't open directory, permission denied
sudo ls test  # works!

Permissões

Agora vamos recapitular rapidamente as permissões de arquivo. Se você fizer ls -l , verá que a maioria dos diretórios tem drwxr-xr-x permissões. Isso se traduz em:

  • Usuário - permissão do rwx
  • Grupo - permissão de rx
  • Outros - permissão rx
  • O d significa apenas que esse "arquivo" é um diretório. Lembre-se de que você precisa executar permissões para listar o conteúdo de um diretório.

Se essas permissões estiverem em /home/guest , as permissões "Outros" permitirão que qualquer pessoa liste o conteúdo desse diretório. Então você quer isso:

chown guest:guest /home/guest  # Change owner and group of directory to guest
chmod 750 /home/guest

Faça login nas contas guest1 e guest2 e experimente!

Números chmod de fantasia

rwx cada corresponde a um bit. Convertendo números binários (base 2) para números que os humanos usam (base 10) você obtém:

  • r - 4
  • w - 2
  • x - 1

Assim

  • rwx = 7
  • rx = 5
por 07.12.2016 / 07:03