Мой сын получил новый ноутбук это прошлое рождество, прежде всего, для использования в его новой школе... И теперь, когда у него есть свой собственный ноутбук, его топят, чтобы установить Пар.
Но жена хочет, чтобы я удалил Пар, потому что ноутбук, прежде всего, для школьного использования... Я не сделал бы этого, если я не имею к.
Существует ли способ, которым я могу ограничить или иначе ограничить доступ для Пропаривания? Возможно, пароль на самом Паре, или времена набора, в течение которых это может быть выполнено?
Идеально, это должно быть что-то довольно простое для использования, потому что моя работа часто держит меня отдельно от дома (и компьютеры и телекоммуникации и...) в течение долгих промежутков времени и пока моя жена не так удобна вокруг компьютеров, как я, легче использовать далеко, намного лучше.
Конечно, существует что-то там, которое может достигнуть этой задачи?
С маленьким фоновым сценарием можно установить ограничение по времени на процессе или приложении.
Пока Ваш пользователь не знает пароля администратора, он не превзойден слишком легко.
Такой маленький фоновый сценарий. Это ограничивает использование в день к определенному числу минут, для установки в заголовке сценария. После того, как настроенный (который не является слишком трудным) это работает очень легкий, и никакое дополнительное действие не необходимо впоследствии.
#!/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
limit
limit_use
(никакое расширение) в папке и делают это исполняемым файломРедактирование в заголовке сценария имя процесса к пределу и максимальное количество позволенных минут. В примере:
#--- set the time limit below (minutes)
minutes = 1
#--- set the process name to limit below
app = "gedit"
Скопируйте папку в каталог /opt
:
cp -r /path/to/limit /opt
Теперь редактирование /etc/rc.local
заставить сценарий выполнить его как root
на запуске:
sudo -i gedit /etc/rc.local
Незадолго до строки
exit 0
другая строка:
/opt/limit/limit_use &
Именно
Когда кто-то пытается уничтожить фоновый сценарий:
(действие, не позволенное)
/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
будет довольно трудно узнать то, что происходит, если Вы не знаете, как это сделано. Комбинация этих двух мер делает его вряд ли, Ваш сын узнает, и если он сделает, то вероятно, ничто не остановит его.
Включены два простых шага:
Скопируйте код ниже в пустой файл, сохраните его как 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
Скопируйте сценарий ниже в пустой файл, сохраните его как 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 и творческим умом.
На основе моего собственного опыта, ограничивающего доступ к компьютерным играм, одна из наиболее сложных задач в обучении наших детей. Конечно, мы порождаем, хотят, чтобы они использовали свои компьютеры главным образом для школы, но это в большой степени конфликтует с намерениями ребенка. Они будут ненавидеть нас за предоставление им аппаратные средства, применимые для школы только.
И конечно мы также хотим, чтобы они изучили, как использовать их компьютер разумным способом, включая то, как использовать его не только для работы, но также и для досуга. Это включает игры и просмотр роликов.
К сожалению, хорошо сохраняемый и рабочий родительский контроль для ограничения вычислительного ребенка является почти не имеющимся в наличии для Ubuntu. Другая главная проблема - то, что, как только они - умные дети все меры, мы взяли, становятся напрасно. Они будут всегда находить способы преодолеть наши ограничения, в случае, если они действительно умны без нас даже способность заметить.
Любое программное обеспечение блокирования или ограничения PAM, работающие на компьютере ребенка, будут временными только и могут рано или поздно быть преодолены очень легко. Поэтому мы решили позволить защищенному паролем маршрутизатору сделать задание, где физическим доступом можно управлять намного легче.
Таким образом, то, что мы делаем здесь, чтобы несколько ограничить игры в данный момент, является комбинацией всего следующего:
sudo
группа рано или поздно. План состоит в том, что они попросят у нас этого вместо того, чтобы делать это в бегах.Для упрощения выполнения контракта на использовании компьютера для обоих детей и нас, мы установили следующие ограничения:
Блокирование доступа в Интернет эффективно отключит игры, если для той игры будет нужен доступ в Интернет, такой как Пар, Minecraft или другие gamig серверы. Это однако будет недействительно для игр убегающая строка.
Это может быть достигнуто при помощи сценариев оболочки.
Первый сценарий должен уничтожить 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
и добавьте его к своему списку приложений запуска.
Удостоверьтесь, что сохранили те пути скрытыми, так, чтобы Ваш сын не узнавал.
Почему бы не использовать новую Учетную запись пользователя (через Параметры настройки системы). Это - единственный один метод на Linux для "полномочий".
sudo
группа). Затем эта учетная запись не будет иметь корневого доступа, она не сможет установить или удалить программное обеспечение, изменить настройки в масштабе всей системы.Немного примечаний..
/home/son/.steam
и конечно двоичный файл /usr/games/steam