Как ограничить время, используемое для использования компьютера в Ubuntu

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

С понедельника по пятницу (с 8:00 до 17:00)
Суббота (8:00-13:00)

Как это сделать?!

Приложения командной строки и графического интерфейса хорошо приняты

3 ответа

Вот улучшенная версия моего оригинального сценария, на который я ссылаюсь в комментариях. Этот скрипт использует все инструменты, которые поставляются с Ubuntu, а именно at(для планирования задач), date, а также gnome-session-quit поэтому дополнительная установка программного обеспечения не требуется. Этот скрипт можно вызвать из ~/.config/autostart или же /etc/xdg/autostart в .desktop файл.

date будет определять текущий час дня, а также день недели (число). Затем структура дела решает, какой параметр дать logthemout функция; Параметр - время окончания рабочего дня. Для понедельника - пятницы это 17:00, а для субботы - 13:00. Функция logthemout, в свою очередь, проверит, находится ли текущее время в пределах диапазона рабочих часов (если оператор с логическим "или"). Если это так, пользователь получит соответствующее уведомление о том, что он выйдет из системы в определенное время. Если рабочее время не в пределах диапазона, пользователь выйдет из системы. С технической точки зрения, происходит то, что пользователь входит в систему, но сценарий выводит их сразу. Недостатки этого скрипта в том, что скрипт зависит от системного времени. Если у пользователя есть возможность изменять системное время, он может обойти скрипт. В противном случае это должно работать.

#!/bin/bash
set -x

HOUR=$(date +%H)
DAYOFWEEK=$(date +%u)

function logthemout
{
    if [[ $HOUR -gt $1 || $HOUR -lt 8 ]]; then

        gnome-session-quit --no-prompt

    else 
        notify-send "AUTO-LOGOUT AT $1 pm"
        echo "gnome-session-quit --no-prompt" | at $1:00
    fi
}



case $DAYOFWEEK in
    1|2|3|4|5) logthemout 17;;
    6) logthemout 13;;
    7) gnome-session-quit --no-prompt ;;
esac

Разъяснение:

Обычно, если вы хотите что-то запустить при входе в GUI, вам нужно создать что-то вроде /home/username/.config/autostart/mystartup-prog.desktop, который должен иметь формат, подобный следующему:

[Desktop Entry]
Type=Application
Name=<Name of application as displayed>
Exec=<command to execute>
Icon=<full path to icon>
Comment=<optinal comments>
X-GNOME-Autostart-enabled=true

Если у вас много работников, это может быть неэффективно, поэтому лучшим способом было бы иметь одну такую ​​запись в /etc/xdg/autostart/mystartup-prog.desktop,

Поскольку вы опытный пользователь, я предлагаю вам использовать pam_time:

Модуль pam_time PAM не аутентифицирует пользователя, но вместо этого он ограничивает доступ к системе и / или определенным приложениям в разное время дня и в определенные дни или по различным терминальным линиям. Этот модуль может быть настроен так, чтобы запретить доступ (отдельным) пользователям на основе их имени, времени суток, дня недели, услуги, к которой они обращаются, и их терминала, с которого они делают свой запрос.

Я думаю, что TimeKpr сделает работу. Вот ссылка https://launchpad.net/timekpr

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