Исключите пользователя из использования установленных программ в масштабе всей системы

Я недавно создал нового пользователя. Я хочу позволить этому пользователю использовать только одну или две программы, но у меня есть много установленных приложений в масштабе всей системы. Существует ли простой способ исключить определенного пользователя из использования приложений (не переустанавливая все снова)?

2
задан 24 April 2014 в 08:39

3 ответа

Спасибо за Ваши ответы. Я уже достиг этого путем управления полномочиями файлов мусорного ведра программ. Я установил старый инструмент управления пользователями гнома, который позволяет управлять группами. Игры группы непроверенные для пользователя, которому не разрешают открыть определенные программы. Тогда измененная группа и полномочия файлов мусорного ведра:

sudo chgrp игры/path/to/game

sudo chmod 750/path/to/game

Теперь пользователь видит файлы на рабочем столе в Тире, но они не будут бежать за щелчком.

Поздравления

2
ответ дан 27 August 2019 в 18:28

Ниже комбинации мер можно взять, для ограничения пользователей локально в использовании определенных приложений. Они не предназначены (ни соответствие) для необслуживаемого использования, в общественных пространствах, например, но действительно создают применимый ограниченный рабочий стол. Это - главным образом комбинация мер, которая делает более трудным обойти. Кроме того, если кому-то удастся запустить "запрещенное" приложение, то оно будет зарегистрировано.

Ответ немного обширен. Установка не, и Вам помогают два сценария.

Из чего существует установка

  • Выбор программного обеспечения, сделанного недоступным из интерфейса путем редактирования их локального файла на рабочем столе сценарием (далее ниже)
  • Создание терминала, только доступного через пароль, таким образом, запущенные приложения от терминала сделан более трудным.
  • Изменение значения по умолчанию keycombination открытия терминала, вместо ctrlaltt
  • Вход использования "черного списка" программного обеспечения, которое Вы определяете, в случае, если некоторый умный пользователь мог бы превзойти Вашу установку

Как установить

Установка широкого выбора программного обеспечения, недоступного от интерфейса.

  • Войдите в систему к учетной записи пользователя, которую Вы хотите ограничить
  • Сделайте (временную) папку (неважно, где на рабочем столе, например) для редактирования некоторых файлов.
  • Обзор в каталог /usr/share/applications Выберите все (файлы на рабочем столе) приложения, Вы хотите, чтобы пользователь был исключен из (не выбирайте всех их без взгляда, некоторые из них необходимы для установки рабочего стола),
  • Скопируйте эти файлы на рабочем столе во временный каталог, который Вы создали для редактирования объема.
  • Скопируйте текст ниже, вставьте его в пустой файл, сохраните его в той же временной папке как no_openapp.py.
  • CD в каталог (!) и выполненный это с командой: python3 no_openapp.py.

Сценарий сделал несколько вещей:

1] Создайте черный список команд (для более позднего использования, посмотрите далее ниже), 2] Редактирование файлы на рабочем столе для показа сообщения вместо того, чтобы запустить приложение. Если Вы перемещаете файлы на рабочем столе в ~/.local/share/applications, на следующем входе в систему приложения не будут работать от Единицы или Тире.

#!/usr/bin/python3

import os
import getpass
import subprocess


desktopfile_dir = os.getcwd()
file_list = os.listdir(os.getcwd())
edit_subjects = [desktopfile_dir+"/"+item for item in file_list]

def create_blacklist():
    command_list = []
    for item in edit_subjects:
        with open(item) as blacklist_source:
            searchlines = blacklist_source.readlines()
        try:
            native_command = [
                line for line in searchlines if line.startswith("Exec=")
                ][0].replace("Exec=", "").replace("\n", "")
            cleaned_command = native_command.split(" ")[0]
            command_list.append(cleaned_command)
        except IndexError:
            pass

    with open(desktopfile_dir+"/blacklist.txt", "wt") as created_blacklist:
        created_blacklist.write(str(command_list))

def make_unavailable():
    for item in edit_subjects:
        try:
            with open(item, "r") as make_unav:
                lines = make_unav.readlines()
                line_range = range(0, len(lines))
                for index in line_range:
                    if lines[index].startswith("Exec="):
                        lines[index] = 'Exec=zenity --info --text="You are not allowed to use this application"\n'
                    else:
                        pass
            with open(item, "wt") as make_unav:
                for line in lines:
                    make_unav.write(line)
        except (IsADirectoryError, IndexError, PermissionError):
            pass


create_blacklist()
make_unavailable()

Ограничьте использование терминала

  • сделайте терминал доступным с паролем, как в этом сообщении.
  • если пользователь знаком с сочетанием клавиш ctrlaltt, измените комбинацию по умолчанию:

    Система> Предпочтения> Горячие клавиши> сочетания клавиш (вкладка).

В случае, если Вы имеете обход wizzkid Ваши меры, ловите его

  • В случае, если пользователю удается получить запрещенное выполнение приложения, удостоверьтесь, что Вы ловите его. для этого мы используем черный список, созданный на шаге один.
  • создайте папку на скрытом местоположении. Скопируйте "blacklist.txt", созданный на шаге одном к каталогу.
  • скопируйте текст ниже, вставьте его в пустой текстовый файл и сохраните его к тому же каталогу как черный список, как processes.py.
  • откройте окно терминала, введите crontab -e. добавьте следующую строку к crontab файлу:

    * * * * * cd /path/to/script; python3 processes.py

Черный список является списком имен процесса. Сценарий проверяет каждую минуту, работает ли одно из помещенных в черный список приложений и ведет учет в файле журнала (в том же каталоге как, где сценарий расположен). Названием файла журнала является log.txt. Дополнительно, можно заставить сценарий уничтожить запрещенное приложение (не значение по умолчанию). Чтобы заставить его уничтожить приложение (приложения), измените строку kill_apps = "no" в kill_apps = "yes" (в главном разделе sript).

#!/usr/bin/python3

import os
import datetime
import subprocess
import getpass

curr_dir = os.getcwd()
curruser = getpass.getuser()

# should forbidden applications be killed?
kill_apps = "yes"

def produce_commands_ofapp():
    with open(curr_dir+"/blacklist.txt", "r") as blacklist:
        blacklist = eval(blacklist.read())
    return blacklist

def createlist_runningprocs():
    processesb = subprocess.Popen(["ps", "-u", curruser], stdout=subprocess.PIPE)
    process_listb = (processesb.communicate()[0].decode("utf-8")).split("\n")
    return process_listb

def runsornot():
    check_blacklist = produce_commands_ofapp()
    runningprocs_list = createlist_runningprocs()
    found_matches = [item for item in check_blacklist
                       if item[:15] in str(runningprocs_list)]
    if len(found_matches) != 0:
        with open(curr_dir+"/log.txt", "a+") as logfile:
            logfile.write(str(found_matches)+" "+str(datetime.datetime.now())+"\n")
    else:
        pass
    if kill_apps == "yes":
        for application in found_matches:
            kill_forbidden(application)
    else:
        pass

def kill_forbidden(app_command):
    # get the pid length of system
    get_size = subprocess.Popen(
        ["cat", "/proc/sys/kernel/pid_max"],
        stdout=subprocess.PIPE
        )
    size = len((get_size.communicate()[0].decode("utf-8")).replace("\n", ""))
    # get the appropriate pid line & pid
    process_list = createlist_runningprocs()
    appr_pid = [
        line for line in process_list if \
        app_command[:15] in line][0][:size+1].replace(" ", "")
    # kill the found process
    subprocess.Popen(["kill", "-9", appr_pid])

runsornot()

Как сказано, установка может быть обойдена. Однако комбинация мер и то, что необходимо знать, каковы они, делают это разумной защитой в случае среднего числа usere со средним знанием о том, как управлять системой.

4
ответ дан 27 August 2019 в 18:28

Это очень, очень трудно. Я никогда не видел установки, которая близко подходит к выполнению этого и большинство раз, когда люди хотят это, я был в состоянии предоставить намного лучшие решения, потому что не было действительно никакой точки в ограничении пользователя для начала с вЂ, “В они просто не знали то, что другие опции Ubuntu имеет.

Однако Вы могли бы быть в состоянии сделать это путем выполнения всего сеанса пользователя в lxc выполнении контейнера Xspice, которые просто не имеют никаких других приложений установленными. Это будет вполне проект, но если и когда это будет работать, это должна, вероятно, быть лучшая изоляция, которую Вы могли получить. Эта идея основана на сообщении в блоге Serge Hallyn, недавно найденным на Планете Ubuntu, и Вы, конечно, захотите считать его: http://s3hh.wordpress.com/2014/04/18/xspice-in-containers/

Это сложно, на основе новых технологий, которые еще даже не выпущены, я не знаю никого, кто на самом деле попробовал его за эти виды целей †“, но в теории, это должно работать.:)

я, конечно, рекомендовал бы исследовать другие способы выполнить истинную цель, которая, скорее всего, на самом деле не предотвращает использование приложений, но чего-то еще.

0
ответ дан 27 August 2019 в 18:28

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

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