Retirar a permissão de leitura / gravação / execução de um usuário

1

Portanto, tenho um usuário que pode ir em /etc e ler arquivos como httpd.conf .

Eu gostaria de negar a esse usuário o acesso a qualquer local crítico, como /etc , /var e assim por diante.

Qual seria a melhor maneira de fazer isso? Eu realmente não quero modificar minha permissão inteira de pasta / arquivo apenas para um usuário.

    
por user2205928 28.03.2013 / 06:34

3 respostas

3

Você pode querer configurar uma cadeia chroot em < href="http://olivier.sessink.nl/jailkit/"> Jailkit .

O jail ch anges a raiz , como em / , para o novo caminho.

Como um exemplo simples como começo.

Primeiro, você provavelmente desejaria ter o diretório chroot em um diretório separado partição - de tal forma que o usuário não pode preencher sua partição do sistema.

Mas, por simplicidade:

  1. Crie o diretório chroot:

    # mkdir /usr/chroot_test
    # cd /usr/chroot_test
    
  2. Crie diretórios do sistema:

    # mkdir bin etc home lib var
    
  3. Adicione algumas ferramentas básicas:

Aqui, pode-se usar ldd para encontrar dependências.

# ldd /bin/bash
linux-gate.so.1 =>  (0xb774d000)
libtinfo.so.5 => /lib/libtinfo.so.5 (0xb770a000)
libdl.so.2 => /lib/libdl.so.2 (0xb7705000)
libc.so.6 => /lib/libc.so.6 (0xb755a000)
/lib/ld-linux.so.2 (0xb774e000)

Copie-os para o lib de chroot:

# cp /lib/{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux.so.2} lib/

Agora digite chroot

# chroot /usr/chroot_test
bash-4.2# ls
bash: ls: command not found
bash-4.2# pwd
/
bash-4.2# exit
exit

OK. Trabalho. Adicione mais algumas ferramentas:

# sed '/=>/!d;/=>\s*(/d;s/.*=>\s*\([^ ]*\) .*//' < <(ldd /bin/{ls,cat,vi}) | sort -u)

... copy

Etc.

Em seguida, adicione o login do chroot ( link ).

Mas, como mencionado, o uso de jailkit pode ser simplificado: link .

    
por 28.03.2013 / 06:53
4

Você pode usar as listas de controle de acesso a arquivos para remover permissões de usuários específicos. O comando é setfacl, que define (cria) uma ACL em um arquivo.

Exemplo de uso:

root@host:/tmp# date > f1
root@host:/tmp# ls -l f1
-rw-r--r-- 1 root root           30 Mar 28 12:12 f1
root@host:/tmp# setfacl -m u:johan:0 f1
root@host:/tmp# ls -l f1
-rw-r--r--+ 1 root root          30 Mar 28 12:12 f1

Observe o símbolo + após as permissões. Ele informa que o arquivo tem um conjunto de ACLs. A opção de comando setfacl -m informa para criar / modificar uma ACL. O argumento "u: johan: 0" faz com que a entrada de usuário para o usuário "johan" seja definida como "0", que é uma abreviação para o modo de permissões "0 0 0", equivalente a "--- --- - - "para os conjuntos de permissões tradicionais" rwx rwx rwx ".

root@host:/tmp# getfacl f1
# file: f1
# owner: root
# group: root
user::rw-
user:johan:---
group::r--
mask::r--
other::r--

root@host:/tmp# cat f1
Thu Mar 28 12:12:07 SAST 2013
root@host:/tmp# exit

Após a saída, os comandos têm as permissões do usuário especificado, por exemplo, "johan"

johan@host:/tmp> cat f1
cat: f1: Permission denied

Agora, tendo dito tudo isso, tenha muito cuidado . A remoção indiscriminada do acesso de / etc causará todos os tipos de falhas e os usuários provavelmente não conseguirão efetuar login. Muitas funções do sistema leem, com as permissões do usuário conectado, vários arquivos de configuração em / etc. No entanto, impedir o acesso de usuários de arquivos individuais específicos é perfeitamente aceitável.

    
por 28.03.2013 / 11:22
0

Os arquivos que você está tão preocupado são significados para serem publicamente acessíveis. Os dados realmente confidenciais estão bloqueados. Sim, o Unix é (por design e histórico) um sistema bastante aberto.

Se você está tão preocupado com esse usuário, apenas bloqueie-o. Um usuário que você não confia não tem lugar nas suas máquinas.

Ou vá checar com seu paranoidista, talvez ele esteja ficando fora de controle.

    
por 28.03.2013 / 13:05