Как отключить эмулятор терминала для определенных пользователей?

Как запретить определенным пользователям использовать эмулятор терминала?!

Я придумываю трюк, написав в .bashrc скрипт, который просит пользователя ввести пароль, чтобы иметь возможность использовать эмулятор терминала.

Но этот прием не идеален для некоторых опытных пользователей, которые знают, как работать над этим приемом.

Для этого я ищу способ запретить конкретным пользователям использовать эмулятор терминала вообще, эти пользователи являются обычными пользователями без разрешения sudo.

Есть предложения?!

1
задан 29 May 2015 в 17:54

2 ответа

Создайте группу для пользователей, которым разрешено использовать терминалы, скажем, terminalusers. Найдите программу терминала (используйте which), например, xterm. Измените его владельца соответственно:

chown root:terminalusers /usr/bin/xterm

Разрешить выполнение для владельца и группы. Запретить другим:

chmod 750 /usr/bin/xterm

На этом этапе использование xterm будет невозможно, если вы не являетесь пользователем root или членом группы terminalusers (добавьте себя в него, и вы будете в состоянии использовать xterm). Примените аналогичные настройки для других эмуляторов терминала (я полагаю, gnome-terminal - ваш основной). Теперь это еще один трюк : он блокирует эмуляторы терминалов, а не терминалы (на самом деле, небольшая разница).

В среде UNIX терминалы являются основными интерфейсами системы. Блокировка их может очень беспокоить многие приложения, не только командной строки. Вместо этого блокирование эмуляторов терминала - всего лишь обходной путь. При наличии хороших разрешений помните, что с вашим компьютером из пользовательского терминала не может случиться ничего плохого: требуются привилегии суперпользователя, чтобы все испортить.

Примечание : с xterm это, как говорят, вызывает проблемы с utmp.

0
ответ дан 29 May 2015 в 17:54

Особенно, если Ваш "целенаправленный" пользователь имеет нет sudo полномочия, решение ниже довольно "водонепроницаемо". Это может использоваться не только, чтобы заблокировать пользователей от терминала, но и (любой пользователь) от использования любого приложения.

Каково это

Решение существует простого и очень легкого фонового сценария, который можно использовать гибким способом заблокировать пользователей из приложений.
Сценарий запускается на запуске с /etc/rc.local (см. далее ниже),

Сценарий

#!/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)

Как использовать

  1. скопируйте сценарий ниже в пустой файл, сохраните его как users_apps.py в месте, где "нормальные" пользователи не могут отредактировать файл.
  2. В главном разделе сценария, набор пользователь (пользователи) и их заблокированные приложения в формате:

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

Для отдельного пользователя, блокируясь gedit и gnome-terminal например.

    data = [
        ["jacob", "gedit", "gnome-terminal"],
        ]
  1. Добавьте строку к /etc/rc.local:

    /bin/bash -c "python3 /path/to/users_apps.py&"
    
  2. Тестовый прогон это путем выполнения /etc/rc.local
    NB тестируют его с не - существенное приложение от Вашей учетной записи пользователя:

    /etc/rc.local
    

    При блокировании себя Вы не должны мочь запустить приложение; это могло бы просто открыться во флэш-памяти, но сразу закроется.

Нет очень, чтобы делаться с этим, если пользователь не имеет sudo полномочия :)

1
ответ дан 29 May 2015 в 17:54

Другие вопросы по тегам:

Похожие вопросы: