Как ограничить время для моего ребенка?

Используйте gnome для запуска единственной пусковой установки (с ней вы можете полностью удалить панели, поскольку единство использует nautilus, в любом случае это по сути то же самое), а затем запустите unity-2d-shell, чтобы вернуть только пусковое устройство объединения, вы можете добавить его для запуска программ, запустив gnome-session-properties

С этим вы можете даже запустить пусковую установку единства в xubuntu! И он решает проблему с максимальным увеличением окна, где исчезают значки закрытия или перемещаются на другую сторону.

1
задан 13 April 2017 в 15:24

9 ответов

убунту <= следовать пользователей 11.10 это руководство для пользователей убунту, > = 11.10 прочитать нижнюю заметите страницы :

Да все эти программы устарели и все твои вопросы отвечу здесь и хороший взгляд с родительским контролем.....

когда мы говорим о том, чтобы заставить пользователя выйти из системы, что мы говорим о реализации временного ограничения на учетную запись для доступа к системе или услуг. Самый простой способ я нашел, чтобы реализовать ограничения времени с помощью подключаемого модуля под названием убунту <= следовать этому руководству пользователя 11.10 для пользователей убунту, > = 11.10 прочитать нижнюю заметите страницы :.

подключаемый модуль проверки подлинности (Пэм) - это механизм для проверки подлинности пользователей. В частности, мы будем использовать модуль [ф22] для контроля временный доступ для пользователей к услугам.

с помощью [ф23] модуль, можно установить ограничения доступа к системе и/или конкретных приложений, в разное время дня, а также в определенные дни или через различные терминальные линии. В зависимости от конфигурации, вы можете использовать этот модуль, чтобы запретить доступ отдельным пользователям на основе их имя, время суток, день недели служба их применения, и их терминал, из которого они делают запрос.

при использовании [ф24], вы должны прекратить синтаксис каждой строки (или правило) в меню [Файл f25 привод датчика] с новой строки. Вы можете прокомментировать каждую строку с символом [#], и система будет игнорировать этот текст до строки.

вот синтаксис правила:

услуг;терминалов;пользователи;раз [Ф1]

вот пример типичного набора правил:

[Ф2]

эти правила ограничивают пользователя Bobby от входа между 0800 и 2000, а также ограничить доступ к Интернету в течение этих часов. Корень будет возможность зайти в любое время и просматривать Интернет во все времена.

подключаемый модуль проверки подлинности (Пэм) системные журналы ошибок с этими правилами как syslog(3).

[dиода d17]с Ubuntu Linux, то можно назначить ограничения компьютерного времени, чтобы предотвратить подключение одного или нескольких пользователей в системе. С ограничениями по времени, вы можете, например, ограничить доступ к компьютеру для ваших детей (своего рода Родительский контроль, короче), или даже защитить подключение к серверу в определенные часы.[!dиода d17]

вручную

понимаю, что ты будешь делать

на протяжении всего этого учебника мы будем использовать Пэм (Подключаемые модули аутентификации, английский Подключаемые модули аутентификации). Это позволяет контролировать аутентификации пользователей при их подключении. Затем, мы будем использовать параметры безопасности файлов, чтобы определить время входа допускается. Эти манипуляции могут быть выполнены на любой версии Ubuntu, и требует только простого текстового редактора (редактора vim, emacs, в нано, теперь, Кейт, чтобы назвать несколько). Включить ограничения часов через модуль пам

первым делом, первым пойти на [ф26], где все настраиваемые услуги:

[Ф3]

если мы хотим блокировать подключение к компьютеру, нам придется менять ГРМ сервис. Отредактируйте файл так, гсд и добавьте эту строку кода (в конце файла):

[Ф4]

gdm-это логин дистрибутивы экрана в Ubuntu, Эдубунту и xubuntu. Для kubuntu, который используется в KDE, услуги КДМ называется, это будет файл, он откроется. И все готово для настройки пам! Это позволит контролировать часов на эту услугу.

если у вас есть сервер, вы, вероятно, не имеют никакой GUI. В данном случае, ГДМ / КДМ не установлен, а соединения не будут заблокированы. Чтобы предотвратить подключение к ТЕЛЕТАЙП, вы должны изменить логин один и тот же файл, и добавьте ту же строку кода, чем ранее признал. Это действие также распространяется на людей, которые установили GUI и хотите заблокировать доступ к экрану входа в систему и терминалы.

вручную

теперь, что служба Пэм была активирована, надо лишь настроить время доступа. Откройте /etc/security. Несколько файлов конфигурации:

[ф5]

отредактируйте файл [ф28]. Некоторые пояснения и примеры (на английском) введение. Чтобы задать расписания доступа, скопируйте и вставьте следующую строку кода (в конце файла, как всегда):

[ф6]

вместо того, чтобы в поле "пользователь" введите логин, который вы хотите заблокировать.

если вы хотите, чтобы заблокировать несколько пользователей, введите свой логин в строку, разделенные | оператора. Например, если я хочу заморозить счета Патрик, Джон и Эмили:

[ф7]

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

[ф8]

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

[F9] и

будьте осторожны, не путайте аббревиатуры WK и WD имеют заблуждение! особенно плохо идентифицируются в интернете: вы можете легко найти противоречивую информацию!

тут мы указываем сроки. Они должны быть в формате 24 часа, состоящий из 4 цифр. Например, чтобы ограничить 3:17 вечера до 6:34 вечера, мы пишем: 1517-1834. Чтобы Мари, чтобы связаться только во вторник, с 3:17 до 6:34 вечера, мы получим результат:

[ф10]

соединения за пределами этих часов будет запрещена. Как для пользователей, можно использовать операторы | и! чтобы указать несколько раз (! затем указывают на то, что все часы входа в систему не допускаются, за исключением тех, которые должны быть показаны).

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

[ф11]

таким образом, жениться пользователь не может подключиться к tty, 4 и 5 В выходные дни.

[и D40]некоторые примеры ограничений расписание[!и D40]

Матильда разрешено подключаться каждый день с 1:20 до 3:20 вечера и с 4:00 до 8:30 вечера:

[ф12] [d43 см.]камень, Фрэнк и Флориан разрешено подключение до 2:00 вечера до 6:45 вечера в будние дни, и 2:00 вечера до 10:15 часов на выходные:[!d43 см.] [от f13]

оливковое не разрешено подключаться. Джессика может войти в среду, с 1:00 до 4:00 вечера:

[ф14]

[dрайвер d41]некоторые примеры График ограничения[!dрайвер d41]

когда сессия истекает (это превышает время, в то время как пользователь уже подключен), Пэм может достигать пользователей. В то время как Матильда подключается в течение часа времени, это совершенно бесплатно, чтобы превзойти эти часы! Для этого мы будем использовать новую программу: хрон. Это приложение выполняет команды с интервалом времени. В нашем случае мы будем использовать команду умение-убивать-U, чтобы отключить пользователя, когда сессия истекает. Обработка очень проста. Просто отредактируйте файл /etc/crontab-файл. Затем добавьте следующую строку кода:

[ф15]

как и прежде, заменяя минутный графики полевых и желаемое время. Затем заполнить в сутки (ы) (ы) дня (ей) забанен (ы), или просто введите звездочку ( * ), чтобы указать все дни недели. Наконец, измените значение поля используется учетная запись будет заблокирована, и вуаля!

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

[ф16]

некоторые примеры [ф30] работы (с примерами в предыдущем разделе)

Джессика может войти в среду, с 1:00 до 4:00 часов вечера

; услуги терминалов;пользователи;раз

[f17 в]

-> отключить: во вторник в 4:00 вечера.м..

-> отключение: ежедневно, 8:30 вечера до 3:20 вечера по восточному времени. [ф18] [о d54]Матильда разрешено подключаться каждый день с 1:20 до 3:20 вечера и с 4:00 до 8:30 вечера.м..[!о d54]

-> отключение: ежедневно, 8:30 вечера до 3:20 вечера по восточному времени.

[зг19] [размером d57]камень, Фрэнк и Флориан разрешено подключение до 2:00 вечера до 6:45 вечера в будние дни, и 2:00 вечера до 10:15 часов на выходные[!размером d57]

-> отключить (1): понедельник, вторник, среду, четверг и пятницу, в 18:45. -> Отключить (2): в субботу и воскресенье в 10:15 стр. м..

[ф20]

команда навык-убивать-у отключает пользователя с графическим интерфейсом, а также ТЕЛЕТАЙП. Это невероятно полезная для администраторов серверов. Однако, эта команда немедленно и отключение будет производиться без предварительного уведомления. Поэтому было бы предпочтительнее, чтобы предотвратить установку этого пользователи устройств компьютера или сети!

[клавиши f21]

можно запретить пользователям с помощью команды [ф31] запущен [f32 из] несколько минут до конца (своего рода Родительский контроль, короче), который будет отображаться в терминалах всех пользователей.

[d63, как], чтобы предотвратить пользователей от GUI можно использовать в место стены команда notify-send в пакете через libnotify-bin и [!d63, как]

Пользователь Ubuntu 11.10 это!d68] /вар/лог/языка/языка.лог файл /var/журнал/языка/х-0.журнал [г70]я видел вокруг пользователей возникают проблемы с Пэм и я увидел много ошибок о том, что так почему же причина??? так просто убунту 11.10 не так как gdm больше новый дисплей менеджер lightGDM проблема, это где магазин этой директивы account required pam_time.so я думаю, что это в [ф35] или [f36 В] но ошибка, как ???[!г70] языка --отладка

так для всего вокруг можно проверить это 2 LightGdm файлы :

языка --отладка

или запустить LightGdm в режиме отладки :

37
ответ дан 25 May 2018 в 17:55
  • 1
    Это - wow - great - я впечатлен! Особенно бит уведомления мне очень нравится, потому что мы не хотим, чтобы наших детей отправляли без предупреждения. Это было бы слишком злым даже для злого папы, подобного мне;) – Takkat 21 October 2011 в 22:50
  • 2
    К сожалению, с помощью lightdm это кажется неработоспособным ( bugs.launchpad.net/lightdm/+bug/880313 ). – Takkat 23 October 2011 в 16:57
  • 3
    ничего себе, это замечательное и длинное объяснение .. – Mahmudin Ashar 25 October 2011 в 18:07
  • 4
    Случай для openSUSE 11.4 аналогичен Ubuntu 11.10. – hsalimi 16 December 2017 в 02:07

TimeKpr

Думаю, у него есть все, что вам нужно. Ограничьте время доступа в день на каждого пользователя, легко настраивайте конфигурацию, abitlity для обхода в течение дня, добавьте «время вознаграждения», уведомление о оставшемся времени для пользователей и т. Д.

Страница проекта здесь. У них также есть PPA для ubuntu, который вы можете добавить в свои источники программного обеспечения: deb http://ppa.launchpad.net/timekpr-maintainers/ppa/ubuntu lucid main. И установите через Центр программного обеспечения или через CLI: sudo apt-get install timekpr.

10
ответ дан 25 May 2018 в 17:55
  • 1
    Может ли TimeKpr устанавливать временные рамки для отдельных приложений (например, игр?) – Anderson Green 7 December 2012 в 22:37

Timekpr

можно использовать в 11.10, работая с LightDM, чтобы установить ограничения для пользователей, добавив следующую строку в /etc/pam.d/lightdm

account required pam_time.so

Возможно, нам придется удалить libpam-smbpass для включения пользовательской коммутации до тех пор, пока не будет исправлена ​​ошибка # 835310.

Все ограничители, определенные в окне приложения, работают так, как определено в GUI timekpr.

Чтобы отобразить значок timekpr-client в Unity, необходимо добавить белый список 'timekpr' в настройках панели Unity, и, кроме того, нам нужно добавить Unity в следующую строку в /etc/xdg/autostart/timekpr-client.desktop:

OnlyShowIn=GNOME;XFCE;KDE;Unity;

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

/etc/init.d/timekpr start

для 14.04:

Для Ubuntu 14.04 для [U10] был опубликован новый релиз / fork timekpr [ whitelist в ppa:mjasnik/ppa.

7
ответ дан 25 May 2018 в 17:55
  • 1
    Отлично, но я думаю, что это временное решение ... потому что вы используете timepkr и samba в то же время для совместного использования с другими компьютерами (см., Что пишет ClaudeD (claude-d)) о возможной ошибке .... – hhlp 28 October 2011 в 00:11

Автовыход крайне расстраивает, если вы находитесь в середине чего-то. Это жестоко, это жестоко, это грубо. И не важно, сколько вам лет. Одно дело, когда вы просто зависимы от компьютера, и это совсем другое, когда вы отслеживаете время и выходите за 5 секунд, прежде чем вам удастся нажать кнопку отправки или сохранить документ. Я предлагаю вам использовать автоматическое напоминание вместо автоматического кикера. Это научит ваших детей уважать друг друга и позволить друг другу охотно использовать компьютер.

Есть еще более легкая альтернатива. Начните с отслеживания количества времени, которое каждый ребенок проводит с помощью компьютера, и сделайте собранные данные доступными для всех, чтобы они могли его видеть. Эта невероятно простая вещь (применительно к пропускной способности интернета) спасла мою жизнь, когда я был администратором сети в офисе, полном взрослых. Публичная статистика об использовании пропускной способности для каждого компьютера (просто количество байтов, а не информация о деанонимизации, например, списки посещенных сайтов и т. Д.) Превратили ситуацию из «меня - злого жадного админа против них - бедных злоупотребляющих офисных пользователей» на «человека, вы скачали в 5 раз больше меня, это плохо! » «Извините, я действительно скачал, я смотрел много youtube во время обеденных перерывов, больше не буду делать этого с такой скоростью» - меня просто исключили из сценария конфронтации.

6
ответ дан 25 May 2018 в 17:55

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

https://github.com/grover66/kidtimer

Это как его установить и использовать: [!d4 ] Скопируйте и вставьте код в файл с именем kidtimer.install.

#!/bin/bash
# Restrict kids computer access to specific hours and total time.
# By: Michael Groves - grover66_at_gmail_dot_com

#variables
basedir="/usr/local/kidtimer"
configdir="/etc/kidtimer"
Cdate=`/bin/date | awk '{ print $2" "$3 }'`
TUI=0
HOUR=`/bin/date +%H`
DOW=`/bin/date +%u`
WEEKEND="no"
[ "$DOW" == "6" ] && WEEKEND="yes"
[ "$DOW" == "7" ] && WEEKEND="yes"

#arguments
[ $# -eq 0 ] && TUI=1
[ $# -eq 1 ] && COMMAND=$1
[ $# -eq 2 ] && COMMAND=$1 && KID=$2
[ $# -eq 3 ] && COMMAND=$1 && KID=$2 && Time=$3

################# Subroutines ##################
################################################

go_check_install () {
if [ ! -e $basedir ]; then
    go_initialize
fi
}


go_initialize () {
/bin/mkdir -p $basedir/time
/bin/mkdir -p $basedir/schedule
/bin/cp $0 /usr/local/bin/kidtimer && chmod +x /usr/local/bin/kidtimer
echo "0 * * * *     root    /usr/local/bin/kidtimer hourly" > /etc/cron.d/kidtimer
echo "0 0 * * *     root    /usr/local/bin/kidtimer daily" >> /etc/cron.d/kidtimer
echo "* * * * *     root    /usr/local/bin/kidtimer check" >> /etc/cron.d/kidtimer
echo "@reboot       root    /usr/local/bin/kidtimer daily" >> /etc/cron.d/kidtimer
echo "@reboot       root    /usr/local/bin/kidtimer hourly" >> /etc/cron.d/kidtimer
/bin/mkdir $configdir
/usr/bin/touch $configdir/kid.list
go_create_message_files
echo "Kidtimer is now installed. Run /usr/local/bin/kidtimer to configure."
}


go_create_message_files () {
cat << EOF > $basedir/send5.sh
#!/bin/bash
Name=\$1
/bin/su -s /bin/bash -c 'DISPLAY=:0 /usr/bin/notify-send -i \
    /usr/share/pixmaps/gnome-set-time.png "ALERT" \
    "You will be logged out in 5 minutes."' \$Name
EOF
chmod +x $basedir/send5.sh
cat << EOF > $basedir/send4.sh
#!/bin/bash
Name=\$1
/bin/su -s /bin/bash -c 'DISPLAY=:0 /usr/bin/notify-send -i \
        /usr/share/pixmaps/gnome-set-time.png "ALERT" \
        "You will be logged out in 4 minutes."' \$Name
EOF
chmod +x $basedir/send4.sh
cat << EOF > $basedir/send3.sh
#!/bin/bash
Name=\$1
/bin/su -s /bin/bash -c 'DISPLAY=:0 /usr/bin/notify-send -i \
        /usr/share/pixmaps/gnome-set-time.png "ALERT" \
        "You will be logged out in 3 minutes."' \$Name
EOF
chmod +x $basedir/send3.sh
cat << EOF > $basedir/send2.sh
#!/bin/bash
Name=$1
/bin/su -s /bin/bash -c 'DISPLAY=:0 /usr/bin/notify-send -i \
        /usr/share/pixmaps/gnome-set-time.png "ALERT" \
        "You will be logged out in 2 minutes."' \$Name
EOF
chmod +x $basedir/send2.sh
cat << EOF > $basedir/send1.sh
#!/bin/bash
Name=\$1
/bin/su -s /bin/bash -c 'DISPLAY=:0 /usr/bin/notify-send -i \
        /usr/share/pixmaps/gnome-set-time.png "ALERT" \
        "You will be logged out in 1 minute."' \$Name
EOF
chmod +x $basedir/send1.sh
cat << EOF > $basedir/logout.sh
#!/bin/bash
Name=\$1
/usr/bin/pkill -KILL -u \$Name
rm -rf /tmp/kidtimer.shutdown.\$Name
EOF
chmod +x $basedir/logout.sh
cat << EOF > $basedir/schedule/blank
#hour weekday weekend (y/n)
00 n n
01 n n
02 n n
03 n n
04 n n
05 n n
06 n n
07 n n
08 y y
09 y y
10 y y
11 y y
12 y y
13 y y
14 y y
15 y y
16 y y
17 y y
18 y y
19 y y
20 n n
21 n n
22 n n
23 n n
#minutes weekday weekend
MAX 120 240
EOF
}


go_check () {
for I in `cat $configdir/kid.list`; do
        /usr/bin/users | grep -q $I
        if [ $? -eq 0 ]; then
                if [ -e $basedir/time/$I.ttl ]; then
                        C=`cat $basedir/time/$I.ttl`
                        C=$((C + 1))
                        echo $C > $basedir/time/$I.ttl
                else
                        echo 1 > $basedir/time/$I.ttl
                        C=1
                fi
        else
        go_clean_jobs $I
        exit 0
    fi
        # check total time.
        W="no"
        [ $DOW -eq 6 ] && W="yes"
        [ $DOW -eq 7 ] && W="yes"
        [ "$W" == "no" ] && TIME_LIMIT=`cat $basedir/schedule/$I | grep ^MAX | awk '{ print $2 }'`
        [ "$W" == "yes" ] && TIME_LIMIT=`cat $basedir/schedule/$I | grep ^MAX | awk '{ print $3 }'`
        if [ $C -ge $TIME_LIMIT ]; then
                if [ ! -e /tmp/kidtimer.shutdown.$I ]; then
                        /usr/bin/passwd $I -l
                        go_logout $I
                fi
        fi
done
}


go_clean_jobs () {
K=$1
for I in `/usr/bin/atq | awk '{ print $1 }' | sort`; do
    /usr/bin/at -c $I | grep kidtimer | grep -q $K
    [ $? -eq 0 ] && /usr/bin/at -d $I
done
[ -e /tmp/kidtimer.shutdown.$K ] && rm -rf /tmp/kidtimer.shutdown.$K
}


go_daily () {
for I in `cat $configdir/kid.list`; do
    ls -l $basedir/time/$I.ttl | grep -q "$Cdate"
    if [ ! $? -eq 0 ]; then
        echo "0" > $basedir/time/$I.ttl
    fi
done
}


go_hourly () {
if [ -s $configdir/kid.list ]; then
    for I in `cat $configdir/kid.list`; do
        if [ -e $basedir/schedule/$I ]; then
            [ "$WEEKEND" == "no" ] && TL=`cat $basedir/schedule/$I | grep ^MAX | awk '{ print $2 }'`
            [ "$WEEKEND" == "yes" ] && TL=`cat $basedir/schedule/$I | grep ^MAX | awk '{ print $3 }'`
            [ -e $basedir/time/$I.ttl ] && C=`cat $basedir/time/$I.ttl`
            [ $C -ge $TL ] && /usr/bin/passwd $I -l && exit 0
            [ "$WEEKEND" == "no" ] && R=`grep ^$HOUR $basedir/schedule/$I | awk '{ print $2 }'`
            [ "$WEEKEND" == "yes" ] && R=`grep ^$HOUR $basedir/schedule/$I | awk '{ print $3 }'`
            if [ "$R" == "y" ]; then
                /usr/bin/passwd $I -u
            else
                /usr/bin/passwd $I -l
                /usr/bin/users | grep -q $I && /usr/local/bin/kidtimer shutdown $I
            fi
        fi
    done
fi
}


go_logout () {
K=$1
echo "$basedir/send5.sh $K" | at now + 1 minutes
echo "$basedir/send4.sh $K" | at now + 2 minutes
echo "$basedir/send3.sh $K" | at now + 3 minutes
echo "$basedir/send2.sh $K" | at now + 4 minutes
echo "$basedir/send1.sh $K" | at now + 5 minutes
echo "$basedir/logout.sh $K" | at now + 6 minutes
touch /tmp/kidtimer.shutdown.$K
}


go_addtime () {
U=$KID
A=$Time
if [ "$KID" == "reset" ]; then
    echo "0" > $basedir/time/$U.ttl
    echo "Done."
    exit 0
elif [ "$KID" == "" ]; then
    echo "Error."
    echo "Syntax: addtime <user> <minutes|reset>"
    exit 1
else    
    C=`cat $basedir/time/$KID.ttl`
    C=$((C - Time))
    echo $C > $basedir/time/$KID.ttl
    echo "New total minutes is "$C"."
    echo "Done."
fi

/usr/bin/passwd $KID -u
}


go_tui () {
go_command_list
echo -n "Choose: "; read -e X
case "$X" in
1) go_setup_user
        ;;
2) go_modify_user
        ;;
3) go_remove_user
        ;;
4) go_list_users
    ;;
5) exit 0
        ;;
esac
go_tui
}


go_command_list () {
echo
echo "1) Setup user limits."
echo "2) Modify user limits."
echo "3) Remove user limits."
echo "4) List configured users."
echo "5) Quit."
echo
}


go_list_users () {
echo
echo "Users configured for kidtimer:"
if [ -s $configdir/kid.list ]; then
    cat $configdir/kid.list
else
    echo "No configured users."
fi
}

go_setup_user () {
echo
echo -n "Username: "; read -e U
/usr/bin/id $U > /dev/null 2>&1
if [ $? -eq 0 ]; then
    /bin/cp $basedir/schedule/blank $basedir/schedule/$U
    echo "0" > $basedir/time/$U.ttl
    echo $U >> $configdir/kid.list
    echo "Done."
    echo
    echo -n "Modify limits now ?(y/n): "; read -e M
    if [ "$M" == "y" ]; then
        if [ -e /usr/bin/nano ]; then
                    /usr/bin/nano $basedir/schedule/$U
                    echo "Done."
            else
                    /usr/bin/vi $basedir/schedule/$U
                    echo "Done."
            fi
    fi
else
    echo "Error. User does not exist. Please create user using the useradd command first."
fi
}


go_modify_user () {
echo
echo -n "Username: "; read -e U
grep -q ^$U $configdir/kid.list
if [ $? -eq 0 ]; then
    if [ -e /usr/bin/nano ]; then
        /usr/bin/nano $basedir/schedule/$U
        echo "Done."
    else
        /usr/bin/vi $basedir/schedule/$U
        echo "Done."
    fi
else
    echo "Error. User not setup. Please setup user first."
fi
}


go_remove_user () {
echo
echo -n "Username: "; read -e U
grep -q ^$U $configdir/kid.list
if [ $? -eq 0 ]; then
    grep -v ^$U $configdir/kid.list > /tmp/kidtimer.tmp
    cat /tmp/kidtimer.tmp > $configdir/kid.list
    echo "Done."
else
    echo "Error. User is not setup."
fi
}


go_help () {
echo
echo "Commands:"
echo "--------------------------------------------------------------------------------"
echo "addtime <user> <minutes> ... Increases allowed time for the day."
echo "logout <user>            ... Starts logout sequence for user."
echo "hourly                   ... Enables/disables user access based on the schedule."
echo "daily                    ... Resets time for the new day."
echo "help                     ... This list."
echo "--------------------------------------------------------------------------------"
}

###################### Code ####################
################################################

go_check_install
[ $TUI -eq 1 ] && go_tui

case "$COMMAND" in
addtime) go_addtime
    ;;
logout) go_logout $KID
    ;;
initialize) go_initialize
    ;;
hourly) go_hourly
    ;;
daily) go_daily
    ;;
check)  go_check
    ;;
-h) go_help
    ;;
help) go_help
    ;;
esac
exit 0
Выполнить его:
sudo ./kidtimer.install
Запустить его:
sudo kidtimer
Настроить существующую учетную запись пользователя. Готово.

Для справки:

sudo kidtimer help

Добавить время в учетную запись пользователя (только для этого дня):

sudo kidtimer addtime user minutes

Особенности:

https://github.com/grover66/kidtimer Установите максимальное время, как в будние дни, так и в выходные дни.

Ключевые файлы:

/etc/kidtimer/kid.list
/etc/cron.d/kidtimer
/usr/local/kidtimer/schedule/<user>
/usr/local/kidtimer/time/<user>.ttl
/usr/local/bin/kidtimer

Cronjobs:

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

Примечание:

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

6
ответ дан 25 May 2018 в 17:55

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

Even Nedberg proposed the following answer:
Just started copying into the 11.10 version for the PPA. Should finish
in a few minutes.

Вы можете обновить свою систему с неподдерживаемых пакетов из этого ненадежного PPA, добавив ppa:timekpr-maintainers/ppa к вашим программным источникам вашей системы.

deb http://ppa.launchpad.net/timekpr-maintainers/ppa/ubuntu oneiric main 
deb-src http://ppa.launchpad.net/timekpr-maintainers/ppa/ubuntu oneiric main 

Этот пакет доступен в:

Oneiric Problem см. отчет об ошибке .... natty Maverick lucid Karmic Jaunty Intrepid Hardy Что такое PPAs и как я их использую?

timekpr

Сообщаю об ошибке здесь, так что пересечь свой палец и подождать ....

5
ответ дан 25 May 2018 в 17:55
  • 1
    О, это хорошая новость. Мы использовали здесь timekpr . Надеюсь, он сработает - он все еще установлен на моем ящике 11.10, хорошо работает, но не блокирует учетные записи моего ребенка. – Takkat 25 October 2011 в 02:11
  • 2
    и для 14.04 он работает? – rogerdpack 23 June 2014 в 19:15

Введение

Мы можем проверить, зарегистрирован ли пользователь командой:

who -u

, которая дает нам выход, такой как:

$ who -u
jacob    :0           2016-03-17 20:48   ?          2557 (:0)
newuser  :1           2016-03-17 20:50   ?          4466 (:1)
[d3 ] На выходе мы получаем pid целевого пользователя, который должен быть остановлен, если время превышает предел.

Решение

Предполагая, что ваш пользователь не имеет sudo привилегии:

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

Чтобы предотвратить нежелательные потери данных, возможно, открытые файлы, 60 секунд Предполагая, что ваш пользователь не выполняет никаких действий, имеют sudo привилегии: истекает срок действия целевого пользователя, на нем появляется сообщение DISPLAY:

Сценарий

[ f3]

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

На рабочем столе (или в другом месте) создайте папку с именем: limit Скопируйте сценарий в пустой файл, сохраните его как limit_use (без расширения) внутри папки и сделать ее исполняемой. Редактировать в заголовке скрипта имя пользователя для ограничения и максимальное количество разрешенных минут. В примере:
#--- set the time limit below (minutes)
minutes = 1
#--- set the user name to limit below
user = "jacob"
Скопируйте папку в каталог /opt:
cp -r /path/to/limit /opt
Теперь отредактируйте /etc/rc.local, чтобы заставить сценарий запускать его как root при запуске:
sudo -i gedit /etc/rc.local
Перед строкой
exit 0
другая строка :
/opt/limit/limit_use &

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

Один раз за 10 секунд скрипт смотрит, зарегистрирован ли целевой пользователь. Если это так, он «добавляет» одну «точку» к общему использованию для записи в файл ([ F17]). Если дневной предел достигнут, сценарий больше не позволяет пользователю войти в систему, убивает его процесс, если он существует. При изменении дня (дата записывается в файл, поэтому перезагрузка не поможет), файл журнала удаляется, что позволяет увеличить время использования. Поскольку сценарий запускается при загрузке, из rc.local только пользователь (ы) с привилегиями sudo может остановить скрипт, даже тогда, только если пользователь знает имя процесса.

Остановить скрипт

Если вы хотите остановить скрипт, используйте команду:

sudo kill "$(pgrep limit_use)"

Но вам нужен пароль sudo для этого.

3
ответ дан 25 May 2018 в 17:55

Я попробовал timekpr, но не работал. Затем сделал вариант, который работает на моем Ubuntu. Это то, что нужно сделать для этого варианта:

Добавить ограничение времени в файле /var/lib/timelimit/user_to_be_limited.limit только с правами root. например 1800 за 1800 секунд (30 минут). Создайте /usr/local/bin/timelimit.sh с правами root следующим образом:
#!/bin/bash

pollTime=30
export DISPLAY=:0

while(true); do
    sleep $pollTime
    usersLogedIn=$( users|sed -e 's/\s\+/\n/g'|sort|uniq )
    for userName in $usersLogedIn; do
        if [[ -e "/var/lib/timelimit/$userName.limit" ]]
        then
            if [[ ! -e "/var/lib/timelimit/$userName.time" || `( stat -c '%z'  /var/lib/timelimit/$userName.time|cut -c9,10 )` != `date +%d` ]]
            then 
                echo $pollTime > /var/lib/timelimit/$userName.time
            else
                timeUsed=$(( `cat /var/lib/timelimit/$userName.time` + $pollTime ))
                echo $timeUsed > /var/lib/timelimit/$userName.time
            fi
            if [[ `cat /var/lib/timelimit/$userName.time` -gt `cat /var/lib/timelimit/$userName.limit` ]]
            then
                export XAUTHORITY=/home/$userName/.Xauthority
                notify-send --icon=gtk-dialog-warning --urgency=critical -t 30000 "$userName" "You have 60 seconds left!"
                sleep 60
                pkill -u $userName
            fi
        fi
    done
done
Добавить в /etc/rc.local:
sudo /usr/local/bin/timelimit.sh &
Перезапустить Ubuntu
2
ответ дан 25 May 2018 в 17:55

Я просто сделал ответ легко. Код объясняется в потоке http://forums.linuxmint.com/viewtopic.php?f=213&t=77687. Короче: ограничение, заданное в минутах в день, задание cron каждую минуту, сообщение пользователю, чтобы держать его в курсе и принудительный выход из системы.

Чтобы загрузить и установить это, откройте терминал и запустите команды ниже:

cd /tmp/
git clone https://github.com/Thomas-Baeckeroot/ParentalControl.git
cd ParentalControl/
./install.sh

В процессе установки будет запрошен пароль администратора (для установки задания cron, для копирования сценария ...). Оттуда вы будете руководствоваться за всех. На одном месте также есть ./uninstall.sh. Он построен для работы со всеми дистрибутивами на основе Ubuntu (Mint и т. Д.), Вероятно, и все debian). Если возникла какая-либо проблема, дайте мне знать, включая системную версию и графическую среду в комментариях:

uname -a
echo $XDG_CURRENT_DESKTOP

Thomas Baeckeroot

2
ответ дан 25 May 2018 в 17:55

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

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