Como posso desativar o emulador de terminal para determinados usuários?

1

Como evitar que usuários específicos usem o emulador de terminal?!

Faço um truque escrevendo um script em .bashrc , que solicita ao usuário que digite uma senha para poder usar o emulador de terminal.

Mas esse truque não é o método perfeito para alguns usuários avançados que sabem como resolver esse problema.

Para isso, estou procurando um método para impedir que usuários específicos usem emulador de terminal, esses usuários são apenas usuários normais sem a permissão sudo .

Alguma sugestão?!

    
por Maythux 01.01.2014 / 15:45

2 respostas

3

Crie um grupo para usuários autorizados a usar terminais, digamos terminalusers . Encontre o programa do terminal (use which ), por exemplo, xterm . Altere sua propriedade de acordo:

chown root:terminalusers /usr/bin/xterm

Permitir a execução para o proprietário e o grupo. Negar para os outros:

chmod 750 /usr/bin/xterm

Nesse ponto, usar xterm não será possível, a menos que você seja root ou seja um membro do grupo terminalusers (adicione-se a ele e você poderá usar xterm ). Aplique configurações semelhantes para outros emuladores de terminal ( gnome-terminal é o seu principal, suponho). Agora, este é apenas outro truque : ele bloqueia emuladores de terminal, não terminais (diferença sutil, de fato).

Em um ambiente UNIX, os terminais são as interfaces principais do sistema. É muito provável que bloqueá-los perturbe muitos aplicativos, não apenas os de linha de comando. O bloqueio de emuladores de terminal, em vez disso, não é nada além de uma solução alternativa. Com boas permissões, lembre-se de que nada de ruim pode acontecer com sua máquina a partir de um terminal de usuário: ele tem privilégios de root para atrapalhar as coisas.

Nota : com xterm , isso é dito para causar problemas com utmp .

    
por John WH Smith 01.01.2014 / 15:56
1

Especialmente se o usuário "segmentado" não tiver sudo privilégios, a solução abaixo é bastante "à prova d'água". Ele pode ser usado não apenas para bloquear usuários do terminal, mas ( qualquer usuário) do uso de qualquer aplicação.

O que é

A solução existe de um script de plano de fundo simples e muito leve que você pode usar de maneira flexível para bloquear usuários de aplicativos.
O script é iniciado na inicialização de /etc/rc.local (veja mais abaixo)

O script

#!/usr/bin/env python3
import subprocess
import time

data = [
    ["jacob", "gedit", "thunderbird", "gnome-terminal"],
    ["William", "gedit"],
    ]

def user_appcheck(userdata):
    try:
        user = userdata[0]; apps = userdata[1:]
        applist = subprocess.check_output(["ps", "-u", user]).decode("utf-8").splitlines()
        matches = sum([[l.split()[-1] for l in applist if app in l] for app in apps], [])
        for match in matches:
            subprocess.Popen(["pkill", match])
    except:
        pass

while True:
    for userdata in data:
        user_appcheck(userdata)
    time.sleep(4)

Como usar

  1. copie o script abaixo em um arquivo vazio, salve-o como users_apps.py em um local onde os usuários "normais" não possam editar o arquivo.
  2. Na seção principal do script, defina o (s) usuário (s) e seus aplicativos bloqueados no formato:

    ["<username>", "<application>"],
    

Para um único usuário, o bloqueio de gedit e gnome-terminal , por exemplo,

    data = [
        ["jacob", "gedit", "gnome-terminal"],
        ]
  1. Adicione uma linha a /etc/rc.local :

    /bin/bash -c "python3 /path/to/users_apps.py&"
    
  2. Teste-o executando /etc/rc.local
    NB teste-o com uma aplicação não essencial da sua conta de usuário:

    /etc/rc.local
    

    Se você se bloqueou, não poderá executar o aplicativo; pode apenas abrir num piscar de olhos, mas irá fechar imediatamente.

Não há muito a ser feito sobre isso se um usuário não tiver sudo permissions:)

    
por Jacob Vlijm 29.05.2015 / 21:37