Repita depois de mim: Executar QUALQUER comando de permissão em /
sem saber exatamente o que você está fazendo é uma ótima maneira de quebrar seu sistema. Mesmo se você souber o que você está fazendo, ainda é provavelmente a coisa errada a se fazer.
No seu caso, o comando não funcionará porque é o errado para começar. Em segundo lugar, os grupos são uma construção de usuários do Linux muito válida, e impedir que os grupos acessem arquivos é realmente uma péssima idéia.
Se eu estou entendendo o seu caso corretamente, você quer bloquear usuários de recursos que eles não estão autorizados a ler. Felizmente para você, existem algumas maneiras de fazer isso, cada uma com trocas.
Opção 1: sem casca de todo (melhor caminho)
Você está usando o SSH para permitir que os usuários se conectem em um servidor seguro, certo? Por que os usuários até precisam de um shell neste caso? Basta bloquear o acesso deles ao shell e somente deixá-los túnel !
Para fazer isso, basta criar um novo grupo chamado noaccess
ou similar. Em seguida, copie e cole o arquivo abaixo em /etc/ssh/sshd_config
:
Match Group noaccess
AllowTcpForwarding yes
X11Forwarding no
Se você quiser ser ainda mais seguro por restringindo onde eles podem tunelizar , você pode adicionar o parâmetro PermitOpen
à configuração do SSH. Por exemplo, se você quiser permitir que apenas os usuários encaminhem para a porta 1337 no servidor atual, adicione PermitOpen localhost:1337
ao seu arquivo de configuração, logo abaixo da diretiva AllowTcpForwarding
, assim:
Match Group noaccess
AllowTcpForwarding yes
PermitOpen localhost:1337
X11Forwarding no
...
Por fim, defina o shell dos usuários para /bin/true
executando o comando chsh -s /bin/true <username>
. Os usuários serão chutados silenciosamente (e com força) se tentarem iniciar qualquer tipo de sessão interativa. Se você quiser incluir uma mensagem de erro "amigável", poderá criar um shell "falso" rápido e sujo que retornará uma mensagem de erro.
O SSH fica bastante irritado quando não consegue acessar um shell, então você precisa passar o argumento de linha de comando -N
para o comando OpenSSH da seguinte forma:
ssh [email protected] -N -L 3307:localhost:3306
Se você estiver usando o PuTTY, verifique se a caixa de seleção destacada está marcada:
Eu fui em frente e fiz um shell realmente simples ( não testado ) que retorna uma mensagem de erro, e também mantém a janela do terminal aberta para que -N
seja desnecessário. Você pode encontrar a fonte aqui se quiser compilá-la e usá-la. Mesmo com isso, você ainda deve usar -N
, mas não é mais necessário.
Opção 2: Deixe-os ser
Usuários no Linux já possuem um conjunto de permissões bastante aceitável. Eles podem ler arquivos que são relevantes para eles e são importantes para a funcionalidade do sistema. Ao mesmo tempo, arquivos que são "protegidos" (como chaves privadas e
/etc/shadow
) já não permitem leituras de usuários não autorizados.
Se seus usuários já forem confiáveis (e realmente estiverem trabalhando em seu sistema), essa é a melhor opção - com o custo de manter os usuários fora de onde eles não pertencem
Opção 3: Segmentação seletiva
Se a Opção 2 ainda estiver muito insegura para suas necessidades, você poderá chmod o-rwx
arquivos que não deseja que eles acessem. Exemplos destes incluem arquivos de configuração "seguros". No entanto, você deve ter muito cuidado para não perder serviços e aplicativos para os arquivos necessários para realizar seu trabalho.
Você também pode usar as Listas de controle de acesso para bloquear grupos de usuários fora dos arquivos, sem defini-los como o grupo proprietário . Eu aviso, no entanto, que isso é bastante envolvido, e abre uma maneira de permitir que os usuários "escapem" do seu conjunto confinado se encontrarem um usuário com shell que não esteja no grupo bloqueado.
Opção 4: chroot
O uso de chroot
permite que você controle exatamente o que seus usuários têm acesso. Você decide quais permissões, quais comandos e assim por diante. Este é um método muito envolvido que precisa de muito trabalho para funcionar corretamente, por isso não é recomendado para todos.
Se você estiver interessado, esta pergunta explica isso muito bem.