Restreindre les heures auxquelles un utilisateur est autorisé à se connecter

9

Nous avons plusieurs systèmes Backbox 3.13 construits sur Ubuntu 12.04. Un de mes adolescents ne comprend pas le concept de cette chose appelée "sommeil" et a tendance à se lever pour jouer sur l'ordinateur. J'essaie de limiter cette action. Nous avons essayé Nanny qui a fonctionné pendant quelques jours. Ensuite, même si les paramètres étaient toujours en place, cela permettait toujours audit adolescent d'accéder à son compte d'utilisateur et à Internet.

Après quelques recherches, j'ai décidé d'essayer de modifier /etc/security/time.conf. Apparemment, je ne le fais pas correctement car, quelles que soient les commandes que j'entre dans le fichier, nous pouvons toujours nous connecter à son compte utilisateur. Nous ne voulons pas qu'elle ait accès de 21 h à 6 h. Il nous faut toujours avoir accès à l'ordinateur tout le temps. Voici plusieurs syntaxes que j'ai essayées:

1. login;*;username;A12100-0600
2. login;*;username;!A12100-0600
3. login;*;username;!A12100-0600
   login;*;my username;A10000-2400
4. login;*;!username;A12100-0600

Je deviens fou ici pour essayer de comprendre comment faire cela. Je suis sûr que c'est quelque chose de simple qui me manque ou que j'entre mal. Toute aide serait appréciée.

user81117
la source
1
Essayez login;*;daughter;A10600-2100. Cela ne devrait autoriser les connexions qu'entre 6 h et 21 h. Si cela ne fonctionne pas, alors peut-être *;*;daughter;A10600-2100. Si cela fonctionne, vous voudrez également avoir un crontravail qui tue les sessions de votre fille à 21 heures car cela ne fait qu'arrêter de nouvelles sessions. Il y a quelques détails ici
Warwick
Malheureusement, cela n'a pas fonctionné. J'ai essayé de me connecter; *; fille; A10600-1900 pour tester la solution en vain. J'ai aussi essayé ; ; fille; A10600-1900 sans résultat positif. Cela devrait fonctionner, mais ne fonctionne pas. Est-ce à cause du système Unity?
user81117
2
Avez-vous configuré pampour utiliser pam_time? Sinon, vous avez besoin des account required pam_time.sodeux entrées /etc/pam.d/gdmet /etc/pam.d/loginjuste en dessous des authentrées.
Warwick
J'ai ajouté ces lignes dans les fichiers / gdm et / login, puis ressaisi les informations dans le fichier de configuration. Nous n'avons toujours aucune joie à cette fin. Je suis en train de googler maintenant pour m'assurer d'avoir entré la ligne au bon endroit dans le fichier / gdm.
user81117
Selon ask.fedoraproject.org/en/question/7260/… , (Désolé pour l'URL longue), je devrais terminer la commande en entrant une nouvelle ligne. Je commente cette ligne avec un signe #, non? Il indique également que le compte requis pam_time.so va à la fin du fichier / gdm. Je sais une chose avec certitude. Une fois cela compris, je n'oublierai plus si vite!
user81117

Réponses:

1

1. Modifiez /etc/pam.d/common-auth et ajoutez la ligne suivante: account required pam_time.so

2. Modifiez /etc/security/time.conf et ajoutez la restriction: *;*;username;Al0800-2200

L'exemple permet la connexion avec un logiciel compatible pam tous les jours entre 8 h et 22 h tous les jours.

Ingmar
la source
0

Est-ce juste ici que vous le faites ou en utilisez-vous au lieu de Ls?

Les restrictions de temps doivent se lire "majuscule A, petit L " puis l'heure ...

Jan
la source
Salut Nigge. Je l'ai essayé dans les deux sens car j'ai vu de la documentation montrant à la fois l'Al et l'A1. Aucune méthode ne fonctionne. J'essaie de comprendre pourquoi.
user81117
Désolé d'apprendre que ce n'est pas la cause de votre problème. Une autre chose à vérifier, juste pour vous assurer: votre système utilise-t-il peut-être un autre DM? Regardez dans / etc / X11 / default-display-manager ...
Jan
Le système utilise Light DM. Je pense que lorsque j'ai installé GDM, je l'ai configuré pour Light DM.
user81117
0

Les œuvres suivantes pour moi:

*;*;child1|child2|child3;Wk0445-1958|Sa0445-2300|Su0445-1958

La ligne suivante /etc/pam.d/common-accountpeut être quelque chose que j'ai ajouté ou commenté.

account required  pam_time.so

J'ai également un cron-job qui vérifie à 20h00 si l'un des enfants est connecté et les déconnecte si c'est le cas ... la partie qui les déconnecte réellement est la suivante:

echo 'logging off - Following children are still logged in...'
for n in $active_children ; do echo "  " $n ; done
festival --tts <<EOT
Is is bedtime. Good bye and good night.
EOT
for n in $active_children
do
    killall -HUP -u $n
done
sleep 15
for n in $active_children
do
    killall      -u $n
done
echo "[`date`] - done"
David
la source
0

Une méthode plus générique consiste à utiliser cron pour verrouiller et déverrouiller le compte. Cela élimine à la fois les exigences spécifiques de et toutes les variables liées au gestionnaire de fenêtres. Ceci est uniquement destiné à être appliqué à une machine autonome, pas à un ordinateur de bureau / ordinateur portable / tablette connecté à un serveur d'authentification central.

0 21 * * * /usr/bin/passwd -l childsUserName 0 6 * * * /usr/bin/passwd -u childsUserName'

REMARQUE: vous devrez peut-être ajuster votre chemin pour la commande «passwd». Déterminez le chemin approprié avec «qui».

Sur ma box CentOS 6:

which passwd

/usr/bin/passwd

Ragansi
la source
Je ne pense pas que cela fonctionnerait. Que faire si l'authentification n'est pas effectuée sur la base de données de mots de passe locale ( /etc/shadow)? passwd -lpourrait même ne rien faire dans ce cas. Que faire si la machine est arrêtée ou si une tâche cron ne s'exécute pas pour une autre raison? Le compte pourrait alors être dans un état indésirable.
jayhendren
Je ne connais aucun système UNIX ou Linux qui ne s'authentifie pas auprès de la base de données de mots de passe locale, à moins qu'il ne soit connecté à un serveur d'authentification central.
Ragansi
Mon commentaire précédent a été interrompu prématurément. Je n'avais pas réalisé que frapper enter avait posté le commentaire. En tous cas. Si la machine est éteinte, alors cron peut définitivement laisser le système dans un état indésirable. Vous pouvez utiliser cron pour appeler un petit script qui vérifie l'heure, puis verrouille ou déverrouille en conséquence. Exécutez-le toutes les 5 minutes, ou même @reboot en cron.
Ragansi
"à moins qu'il ne soit connecté à un serveur d'authentification central". C'est exactement ce que je veux dire.
jayhendren
Dans ce cas, votre serveur d'authentification central disposera (ou devrait ...) des fonctionnalités nécessaires pour exécuter les fonctions de verrouillage susmentionnées. Dans ce cas, vous n'auriez pas besoin (et ne devriez pas avoir besoin) d'effectuer des verrouillages de compte d'utilisateur sur la machine locale, sauf si quelque chose est configuré hors de portée, avec la façon dont l'authentification centrale est destinée à être utilisée.
Ragansi