Я хочу ограничить доступ к учетным записям пользователей для сотрудников к рабочему часу ежедневно.
С понедельника по пятницу (8:00-17:00)
В субботу (8:00-13:00)
Как сделать это?!
Командная строка и приложения для GUI хорошо приняты
Так как Вы - опытный пользователь, я предлагаю, чтобы Вы использовали pam_time:
pam_time модуль PAM не аутентифицирует пользователя, но вместо этого он ограничивает доступ к системе и или определенные приложения неоднократно дня и в определенные дни или по различным терминальным строкам. Этот модуль может быть настроен, чтобы запретить доступа (отдельным) пользователям на основе их имени, время суток, день недели, сервис, который они подают заявку и их терминал, от которого они выполняют свой запрос.
Я думаю, что TimeKpr сделает задание. Вот ссылка https://launchpad.net/timekpr
Вот улучшенная версия моего исходного сценария, который я связал в комментариях. Этот сценарий использует все инструменты, которые идут с человечностью, а именно, at
(для планирования задач), date
, и gnome-session-quit
таким образом, никакая дополнительная установка программного обеспечения не необходима. От этого сценария можно назвать ~/.config/autostart
или /etc/xdg/autostart
в a .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
.