Как я могу ограничить или ограничить доступ к приложению?

Мой сын получил новый ноутбук это прошлое рождество, прежде всего, для использования в его новой школе... И теперь, когда у него есть свой собственный ноутбук, его топят, чтобы установить Пар.

Но жена хочет, чтобы я удалил Пар, потому что ноутбук, прежде всего, для школьного использования... Я не сделал бы этого, если я не имею к.

Существует ли способ, которым я могу ограничить или иначе ограничить доступ для Пропаривания? Возможно, пароль на самом Паре, или времена набора, в течение которых это может быть выполнено?

Идеально, это должно быть что-то довольно простое для использования, потому что моя работа часто держит меня отдельно от дома (и компьютеры и телекоммуникации и...) в течение долгих промежутков времени и пока моя жена не так удобна вокруг компьютеров, как я, легче использовать далеко, намного лучше.

Конечно, существует что-то там, которое может достигнуть этой задачи?

17
задан 29 January 2016 в 09:47

4 ответа

Установите ограничение по времени на процессе или приложении

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

Решение ниже

Такой маленький фоновый сценарий. Это ограничивает использование в день к определенному числу минут, для установки в заголовке сценария. После того, как настроенный (который не является слишком трудным) это работает очень легкий, и никакое дополнительное действие не необходимо впоследствии.

Сценарий

#!/usr/bin/python3
import subprocess
import os
import sys
import time

#--- set the time limit below (minutes)
minutes = 1
#--- set the process name to limit below
app = "gedit"

uselog = "/opt/limit/uselog"
datefile = "/opt/limit/currdate"

def read(f):
    try:
        return int(open(f).read().strip())
    except FileNotFoundError:
        pass

currday1 = read(datefile)

while True:
    time.sleep(10)
    currday2 = int(time.strftime("%d"))

    # check if the day has changed, to reset the used quantum
    if currday1 != currday2:
        open(datefile, "wt").write(str(currday2))
        try:
            os.remove(uselog)  
        except FileNotFoundError:
            pass

    try:
        # if the pid of the targeted process exists, add a "tick" to the used quantum
        pid = subprocess.check_output(["pgrep", app]).decode("utf-8").strip()
        n = read(uselog)
        n = n + 1 if n != None else 0
        # when time exceeds the permitted amount, kill the process
        if n > minutes*6: 
            subprocess.Popen(["kill", pid])
        open(uselog, "wt").write(str(n))
    except subprocess.CalledProcessError:
        pass

    currday1 = currday2

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

  1. На Вашем рабочем столе (или где-либо еще), создайте названную папку: limit
  2. Скопируйте сценарий в пустой файл, сохраните его как limit_use (никакое расширение) в папке и делают это исполняемым файлом
  3. Редактирование в заголовке сценария имя процесса к пределу и максимальное количество позволенных минут. В примере:

    #--- set the time limit below (minutes)
    minutes = 1
    #--- set the process name to limit below
    app = "gedit"
    
  4. Скопируйте папку в каталог /opt:

    cp -r /path/to/limit /opt
    
  5. Теперь редактирование /etc/rc.local заставить сценарий выполнить его как root на запуске:

    sudo -i gedit /etc/rc.local
    

    Незадолго до строки

    exit 0
    

    другая строка:

    /opt/limit/limit_use &
    

Именно

Когда кто-то пытается уничтожить фоновый сценарий:

enter image description here

(действие, не позволенное)

Объяснение; как это работает

  • Однажды в 10 секунд, сценарий смотрит, если целенаправленный процесс работает. Если так, это "добавляет" одну "точку" к общему использованию, чтобы быть зарегистрированным в файле (/opt/limit/uselog). Если ежедневный предел достигнут, сценарий больше не позволяет процессу работать, уничтожая его, если он существует.
  • На дневном изменении (дата зарегистрирована в файле, таким образом, перезагрузка не поможет), файл журнала удален, позволив новое количество времени использования расти.
  • Так как сценарий работает, загружаются, от rc.local только пользователь (пользователи) с sudo полномочиями может остановить сценарий, даже затем, только если пользователь знает имя процесса.

Остановите сценарий

В случае, если требуется остановить сценарий, используйте команду:

sudo kill "$(pgrep limit_use)"

Но снова, Вам был бы нужен sudo пароль, чтобы сделать так.




Править

Хотя сценарий выше должен обеспечить довольно безопасный способ ограничить использование приложения, как упомянуто @Bytecommander, он может быть превзойден, хотя не очень легко. Комбинация с мерой ниже сделает его очень вряд ли, что это произойдет, если Ваш сын не будет знать установку и вполне испытан с Linux/Ubuntu.

Дополнительная мера

Немного далее от "простого решения", но все еще не слишком трудный для установки дополнительная мера ниже. Если наш подозреваемый преступник узнал бы, что от сценария называют /etc/rc.local, сумел бы стать корнем и удалить строку в /etc/rc.local, или смог бы остановить сценарий тот путь, мы можем столкнуть его со следующей проблемой: экран теряет сознание, после входят в систему. Кроме того, решение проверяет, бежит ли фоновый сценарий спустя 5 минут после перезапуска, теряя сознание если нет.

Дополнительной мерой является запуск - проверка если строка /opt/limit/limit_use & присутствует в /etc/rc.local, и проверка после 5 минут, если сценарий все еще работает. Так как сценарий работает от (скрытый от Приложений Запуска) средство запуска в /etc/xdg/autostart будет довольно трудно узнать то, что происходит, если Вы не знаете, как это сделано. Комбинация этих двух мер делает его вряд ли, Ваш сын узнает, и если он сделает, то вероятно, ничто не остановит его.

Как настроить

Включены два простых шага:

  1. Скопируйте код ниже в пустой файл, сохраните его как blackout.desktop на Вашем рабочем столе:

    [Desktop Entry]
    Name=not allowed
    Exec=/bin/bash -c "sleep 15 && /usr/local/bin/blackout.py"
    Type=Application
    Terminal=false
    NoDisplay=true
    

    Скопируйте файл в /etc/xdg/autostart:

    sudo cp /path/to/blackout.desktop /etc/xdg/autostart
    
  2. Скопируйте сценарий ниже в пустой файл, сохраните его как blackout.py на Вашем рабочем столе сделайте это исполняемым файлом и скопируйте его в /usr/local/bin:

    cp /path/to/blackout.py /usr/local/bin
    

    Сценарий

    #!/usr/bin/env python3
    import subprocess
    import time
    
    def dim_screen():
        screen = [
            l.split()[0] for l in subprocess.check_output(["xrandr"]).decode("utf-8").splitlines()\
            if " connected" in l
            ]
        for scr in screen:
            subprocess.Popen(["xrandr", "--output", scr, "--brightness", "0"])
    
    if not "/opt/limit/limit_use &" in open("/etc/rc.local").read():
        dim_screen()
    
    time.sleep(300)
    
    try:
        pid = subprocess.check_output(["pgrep", "limit_use"]).decode("utf-8").strip()
    except subprocess.CalledProcessError:
        dim_screen()
    

Объяснение

Средства запуска в /etc/xdg/autostart запустит приложение (в этом случае дополнительная проверка защиты-) для всех пользователей. Это могло быть перезаписано локально, но необходимо знать, что проверка работает. Путем помещения строки NoDisplay=true в наше средство запуска это не появится локально в Startup Applications, таким образом не зная это существует, это вряд ли будет обнаружено.

Кроме того, у Вашего сына есть только 15 секунд для обнаружения (затем, экран закрашивается черной краской), таким образом, у него была бы серьезная проблема, если он не genious, имеет большой опыт с Ubuntu и творческим умом.

2
ответ дан 23 November 2019 в 02:26

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

И конечно мы также хотим, чтобы они изучили, как использовать их компьютер разумным способом, включая то, как использовать его не только для работы, но также и для досуга. Это включает игры и просмотр роликов.

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

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

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

  • Говорите с ними для обучения их, как и когда использовать компьютеры для досуга, и когда использовать их для школы. Это - постоянно продолжающееся, довольно утомительное продвижение процесса к бесконечным обсуждениям и аргументам. Но это - то, что мы чувствуем, единственная вещь, которая прослужит в долгосрочной перспективе.
  • Никакие права администратора на их учетной записи. Это - временная вещь. Мы действительно знаем, что они смогут вставить себя sudo группа рано или поздно. План состоит в том, что они попросят у нас этого вместо того, чтобы делать это в бегах.
  • Сделайте контракт в течение ясно определенных вычислительных времен. Они должны знать то, что для и сколько времени им разрешают использовать их машины. Они должны изучить, как развестись на этот раз для школы и для досуга.
  • Твердый блок весь Интернет в течение часов сна.

Для упрощения выполнения контракта на использовании компьютера для обоих детей и нас, мы установили следующие ограничения:

  • Используйте защищенный паролем маршрутизатор, который позволяет ограничение доступа в Интернет на комбинации аппаратных средств (MAC) и основание расписания. Пока они не знают о спуфинге MAC, это будет работать вполне хорошо. Это также ограничит доступ через их смартфоны и планшеты. Это, конечно, не будет работать, если была открытая беспроводная сеть в Вашем районе.
  • Установите сервер SSH на компьютерах ребенка для отключения в случае, если они потерялись в своих собственных намерениях. Это для экстренных случаев, мы рады, что имели не нужный очень.
  • Установленный черный список DNS (через маршрутизатор, не компьютер!), который должен блокировать доступ к худшему.

Блокирование доступа в Интернет эффективно отключит игры, если для той игры будет нужен доступ в Интернет, такой как Пар, Minecraft или другие gamig серверы. Это однако будет недействительно для игр убегающая строка.

4
ответ дан 23 November 2019 в 02:26

Это может быть достигнуто при помощи сценариев оболочки.

Первый сценарий должен уничтожить Steam как только это выполняется:

#!/bin/bash

while true
do
    pkill steam
    sleep 1
done

exit 0

Сохраните его как /path/to/anyname.sh и добавьте его к списку приложений запуска.

То, что сделает этот сценарий, - то, что он проверит любой открытый названный процесс steam каждую секунду и если это находит кого-либо затем, что это уничтожит его.

Но, Вам нужно решение где steam может быть выполнен в определенном праве времени так, чтобы Ваш сын мог играть в игры во время того интервала. Чтобы сделать это, необходимо записать другой сценарий:

#!/bin/bash

    echo "pkill anyname.sh" | at 10:00

exit 0

Сохраните его как /path/to/anyname2.sh и также добавьте это к своему списку приложений запуска.

Этот сценарий уничтожит первый сценарий в 10:00 часы. Так, когда Ваш сын работает Steam в 10:00 часы. Он сможет играть его теперь.

Третий сценарий должен повторно инициировать первый сценарий в другом моменте времени так, чтобы он уничтожил Steam после того, как временной интервал и Ваш сын не смогут проиграть игры Steam больше.

#!/bin/bash

    echo "bash /path/to/anyname.sh" | at 12:00

exit 0

Сохраните его как /path/to/anyname3.sh и добавьте его к своему списку приложений запуска.

Удостоверьтесь, что сохранили те пути скрытыми, так, чтобы Ваш сын не узнавал.

0
ответ дан 23 November 2019 в 02:26

Почему бы не использовать новую Учетную запись пользователя (через Параметры настройки системы). Это - единственный один метод на Linux для "полномочий".

  1. Новый пользователь "SteamUser" не должен быть в sudoers (просто ограниченная учетная запись).
  2. Затем создайте вторую учетную запись под названием "Суперадминистратор" и сделайте ее учетной записью sudoers (корневой доступ). Но сохраните его пароль только с Вами.
  3. Затем удалите учетную запись своего сына из sudoers. (sudo группа). Затем эта учетная запись не будет иметь корневого доступа, она не сможет установить или удалить программное обеспечение, изменить настройки в масштабе всей системы.
  4. Войдите в свою "Суперадминистраторскую" учетную запись и владение изменения паровых двоичных файлов и паровой игровой папки, чтобы препятствовать тому, чтобы они работали любым кроме "SteamUser". Это включает удаление read+write+execute доступ от любого кроме "SteamUser"

Немного примечаний..

  • Нет никакой способности оставить корневой доступ с учетной записью Вашего сына, иначе управление полномочиями обойдено легко с chown/chmod.
  • Другие предложения на основе фоновых сценариев являются просто нестабильной путаницей. Это означает, что они не обещают. Однако их легко настроить, возможно.
  • Пути к папкам для передачи "SteamAccount": /home/son/.steam и конечно двоичный файл /usr/games/steam
  • Для проигрывания пара пароль "SteamUser" требуется (необходимо будет войти с "SteamUser" и ими в выполненный пар. Можно попытаться искать методы, чтобы истечь сессия через какое-то время с блокировкой его, предотвратить проигрывание слишком долгое время. Я не уверен, существуют ли инструменты как этот, но технически возможно установить ограничения по времени, но для сессий, не программ.
0
ответ дан 23 November 2019 в 02:26

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

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