Bagaimana cara membatasi waktu komputasi anak-anak saya?

60

Akses ke komputer kita (tidak hanya ke internet) perlu dibatasi untuk akun anak-anak saya (7, 8) sampai mereka cukup tua untuk mengelola ini sendiri. Sampai saat itu kita harus dapat mendefinisikan yang berikut:

  • jam hari ketika komputasi ok (mis. 5 - 9 malam)
  • hari-hari dalam seminggu ketika komputasi tidak ok (mis. Senin hingga Jumat)
  • jumlah waktu yang diizinkan per hari (mis. 2 jam)

Di 11.10, semua hal berikut yang digunakan untuk melakukan pekerjaan tidak berfungsi lagi:

  • Timekpr : untuk> 11.10 tidak tersedia lagi melalui ppa.
  • Timeoutd : alternatif baris perintah, tetapi dari 11.10 dihapus dari repositori .
  • Gnome Nanny : Terlihat hebat tetapi berulang kali mogok untuk memaksa memulai ulang X-server. Jadi kami tidak dapat menggunakan atau merekomendasikan program ini saat ini.

Apakah ada alternatif lain?

Takkat
sumber
Hmmm ... jika tidak ada yang melakukan ini, mungkin akan mudah untuk meretasnya bersama dengan skrip shell / tugas cron.
Nathan Osman
11
EEK. Tidak bisa membiarkan orang tua saya melihat yang satu ini. TETAPI, saya akan mengatasinya karena saya punya akses root yang luar biasa. : P
jrg
Ketertarikan pada "masih sedang dikembangkan", tapi saya tidak berpikir itu pantas untuk pertanyaan baru.
RobotHumans
Selain pengembang timekpr yang menjanjikan ia mungkin atau mungkin tidak punya waktu untuk melanjutkan pengembangan, tidak ada aplikasi seperti itu. Tetapi dari pengalaman saya sendiri, saya tahu sekarang bahwa kita dapat melakukannya dengan baik (bahkan lebih baik?) Tanpa tetapi kemudian membutuhkan anak-anak yang cerdas dan orang tua yang cerdas .
Takkat
@jrg atau hanya usb langsung;)
Wilhelm Erasmus

Jawaban:

1

Timer Layar Kunci

systray.gif

Buat Timer Lock Screen Anda sendiri dan bukan aplikasi Pihak ke-3

Meskipun ada aplikasi Pihak ke-3 untuk melakukan ini, Anda dapat membuatnya sendiri. Ringkasan langkah-langkah:

  • Gunakan gedituntuk membuat skriplock-screen-timer
  • Salin dan tempel kode dari jendela ini ke lock-screen-timer
  • Tandai lock-screen-timersebagai yang dapat dieksekusi
  • Menguji!
  • Konfigurasikan Nautilus untuk menjalankan skrip bash
  • Buat tautan pintasan desktop
  • Pantau sisa waktu

Gunakan gedituntuk membuat skriplock-screen-timer

Buka + + Terminalmenggunakan dan ketik:CtrlAltT

gedit lock-screen-timer

Salin dan tempel kode dari jendela di bawah ke lock-screen-timer

Beralih kembali ke layar ini dan salin kode berikut dengan menyorotnya dan menekan Ctrl+ C:

#!/bin/bash

# NAME: lock-screen-timer
# PATH: $HOME/bin
# DESC: Lock screen in x minutes
# CALL: Place on Desktop or call from Terminal with "lock-screen-timer 99"
# DATE: Created Nov 19, 2016. Last revision Mar 22, 2018.
# UPDT: Updated to support WSL (Windows Subsystem for Linux)
#       Remove hotplugtv. Replace ogg with paplay.

# NOTE: Time defaults to 30 minutes.
#       If previous version is sleeping it is killed.
#       Zenity is used to pop up entry box to get number of minutes.
#       If zenity is closed with X or Cancel, no screen lock timer is launched.
#       Pending lock warning displayed on-screen at set intervals.
#       Write time remaining to ~/.lock-screen-timer-remaining

MINUTES="$1" # Optional parameter 1 when invoked from terminal.

# if no parameters set default MINUTES to 30
if [ $# == 0 ]; then
    MINUTES=30
fi

DEFAULT="$MINUTES" # When looping, minutes count down to zero. Save deafult for subsequent timers.

# Check if lock screen timer already running
pID=$(pgrep -f "${0##*/}") # All PIDs matching lock-screen-timer name
PREVIOUS=$(echo "$pID" | grep -v ^"$$") # Strip out this running copy ($$$)
if [ "$PREVIOUS" != "" ]; then
    kill "$PREVIOUS"
    rm ~/.lock-screen-timer-remaining
    zenity --info --title="Lock screen timer already running" --text="Previous lock screen timer has been terminated."
fi

# Running under WSL (Windows Subsystem for Linux)?
if cat /proc/version | grep Microsoft; then
    WSL_running=true
else
    WSL_running=false
fi


while true ; do # loop until cancel

    # Get number of minutes until lock from user
    MINUTES=$(zenity --entry --title="Lock screen timer" --text="Set number of minutes until lock" --entry-text="$DEFAULT")

    RESULT=$? # Zenity return code
    if [ $RESULT != 0 ]; then
        break ; # break out of timer lock screen loop and end this script.
    fi

    DEFAULT="$MINUTES" # Save deafult for subsequent timers.
    if [[ $MINUTES == 0 ]] || [[ $MINUTES == "" ]]; then
        break ; # zero minutes considered cancel.
    fi

    # Loop for X minutes, testing each minute for alert message.
    (( ++MINUTES )) 
    while (( --MINUTES > 0 )); do
        case $MINUTES in 1|2|3|5|10|15|30|45|60|120|480|960|1920)
            notify-send --urgency=critical --icon=/usr/share/icons/gnome/256x256/status/appointment-soon.png "Locking screen in ""$MINUTES"" minute(s)." ;
            if [[ $WSL_running == true ]]; then  
                powershell.exe -c '(New-Object Media.SoundPlayer "C:\Windows\Media\notify.wav").PlaySync();'
            else
               paplay /usr/share/sounds/freedesktop/stereo/complete.oga ;
            fi
           ;;
        esac;

        # Record number of minutes remaining to file other processes can read.
        echo "$MINUTES Minutes" > ~/.lock-screen-timer-remaining

        sleep 60

    done

    rm ~/.lock-screen-timer-remaining # Remove work file others can see our progress with

    if [[ $WSL_running == true ]]; then  
        # Call lock screen for Windows 10
        rundll32.exe user32.dll,LockWorkStation
    else
        # Call screen saver lock for Ubuntu versions > 14.04.
        dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock
    fi

done # End of while loop getting minutes to next lock screen

exit 0 # Closed dialog box or "Cancel" selected.

Kemudian beralih kembali ke geditjendela kosong dan tempel kode menggunakan Ctrl+ V. Simpan file dan keluar dari editor kembali ke prompt perintah.

Tandai lock-screen-timersebagai yang dapat dieksekusi

Sekarang kita perlu membuat skrip dapat dieksekusi dengan mengetik:

chmod +x lock-screen-timer

Menguji!

Sebelum memanggil skrip dari GUI, kami akan memanggilnya dari terminal sehingga kami dapat melihat apakah ada pesan kesalahan yang ditampilkan:

~/lock-screen-timer

Anda diminta untuk jumlah menit:

Timer Layar Kunci

Atur jumlah menit yang diinginkan dan klik OK untuk memulai timer. Ketika ada 15, 10, 5, 3, 2 dan 1 menit tersisa, suara sistem terdengar dan gelembung pesan muncul memberi tahu kapan layar akan dikunci. Setelah layar terkunci, Anda harus memasukkan kata sandi untuk membuka kunci layar.

Konfigurasikan Nautilus untuk menjalankan skrip bash

Nautilus mendefinisikan apa yang terjadi ketika kita mengklik dua kali pada skrip yang dapat dieksekusi ketika jendela tampilan file atau tautan di desktop. Perilaku normal adalah mengedit skrip menggunakan gedit. Kami ingin mengubah perilaku ini sehingga dijalankan.

Mulai Nautilus dan arahkan ke direktori yang berisi lock-screen-timer. Klik kiri sekali untuk memberi fokus. Arahkan mouse ke bilah menu atas hingga menu "File Edit ..." muncul, gunakan:

  1. Klik Editmenu tarik-turun
  2. Klik Propertiesopsi
  3. Klik Behaviortab
  4. Amati tombol opsi radio di bawah Executable Text Files
  5. Periksa tombol radio Run executable text files when they are opened

Buat tautan pintasan desktop

Dari bagian sebelumnya lock-screen-timermasih fokus. Jika tidak, navigasikan ke skrip dan klik kiri sekali untuk memberikannya fokus. Kemudian gunakan:

  • Klik kanan pada file dan opsi menu konteks muncul.
  • Dari menu pilih Make Link.
  • Ikon baru muncul yang disebut Link to lock-screen-timer.
  • Klik kiri pada ikon baru dan seret dari Nautilus ke desktop Anda.

Sekarang Anda dapat mengklik dua kali pada tautan pintasan desktop dan skrip dijalankan. Kotak dialog muncul untuk mendapatkan nomor menit. Dua tombol disajikan Canceldan OK. Jika Anda mengklik Xuntuk menutup jendela itu sama dengan memilih Cancel.

Setelah penghitung waktu berjalan dan Anda klik dua kali di atasnya lagi salinan berjalan pertama "terbunuh". Anda sekarang dapat memulai hitung mundur kunci scren baru atau klik Canceltanpa hitung mundur.

Tampilan Sisa Waktu di area systray / notifikasi

Saat pengunci layar berjalan, ia mencatat berapa menit yang tersisa dalam file ~/.lock-screen-timer-remaining. Anda dapat melihat file ini dengan watchperintah atau menampilkannya di baki sistem / indikator aplikasi Ubuntu seperti yang ditunjukkan di bagian atas jawaban ini. Untuk menampilkan waktu yang tersisa di area notifikasi, ikuti instruksi di T&J ini: ( Bisakah BASH ditampilkan dalam systray sebagai indikator aplikasi? ).

WinEunuuchs2Unix
sumber
38

Ubuntu <= 11.10 Pengguna ikuti panduan ini untuk Pengguna Ubuntu> = 11.10 baca pemberitahuan halaman Bawah:

Ya, semua program itu kedaluwarsa dan semua pertanyaan Anda dijawab di sini dan terlihat baik dengan kendali orang tua Anda .....

Ketika kita berbicara tentang memaksa pengguna untuk keluar, yang sebenarnya kita bicarakan adalah menerapkan batasan waktu pada akun untuk akses sistem atau layanan. Cara termudah yang saya temukan untuk menerapkan batasan waktu adalah menggunakan modul plug-in yang disebut Linux-PAM .

Modul Otentikasi Pluggable (PAM) adalah mekanisme untuk mengautentikasi pengguna. Secara khusus, kita akan menggunakan pam_timemodul untuk mengontrol akses berjangka waktu bagi pengguna ke layanan.

Dengan menggunakan pam_timemodul, kita dapat menetapkan batasan akses ke sistem dan / atau aplikasi spesifik pada berbagai waktu dalam sehari dan juga pada hari-hari tertentu atau melalui berbagai jalur terminal. Bergantung pada konfigurasi, Anda dapat menggunakan modul ini untuk menolak akses ke masing-masing pengguna berdasarkan nama mereka, waktu, hari dalam seminggu, layanan yang mereka lamar, dan terminal mereka dari mana mereka membuat permintaan. .

Saat menggunakan pam_time, Anda harus menghentikan sintaksis setiap baris (atau aturan) dalam /etc/security/time.conffile dengan baris baru. Anda dapat mengomentari setiap baris dengan tanda pon [#], dan sistem akan mengabaikan teks itu hingga baris baru.

Berikut sintaks untuk sebuah aturan:

layanan; ttys; pengguna; waktu

The first field   services  is a logic list of PAM service names.
The second field  tty  is a logic list of terminal names.
The third field  users  is a logic list of users or a netgroup of users.
The fourth field  times  indicates the applicable times.

Berikut adalah contoh dari seperangkat aturan:

login ; * ; !bobby ; MoTuWeThFr0800-2000
login ; * ; !root ; !Al0000-2400
http ; * ; !bobby ; MoTuWeThFr0800-2000
http ; * ; !root; !Al0000-2400

Aturan-aturan ini membatasi pengguna bobby dari masuk antara jam 0800 dan 2000, dan mereka juga membatasi akses Internet selama jam-jam ini. Root akan dapat masuk kapan saja dan menjelajah Internet sepanjang waktu juga.

Catatan: Sistem mencatat kesalahan dengan aturan ini sebagai syslog (3).


Dengan Ubuntu Linux, dimungkinkan untuk menetapkan batasan waktu komputer Anda, untuk mencegah koneksi satu atau lebih pengguna ke sistem Anda. Dengan batasan waktu, Anda dapat, misalnya, membatasi akses ke komputer untuk anak-anak Anda (semacam kontrol orangtua, singkatnya) , atau bahkan melindungi koneksi ke server Anda selama jam-jam tertentu.

Konfigurasi Manual

Pahami apa yang akan Anda lakukan

Sepanjang tutorial ini, kita akan menggunakan PAM (Modul Otentikasi Pluggable, Modul Otentikasi Pluggable Bahasa Inggris). Ini memungkinkan Anda untuk mengontrol otentikasi pengguna ketika mereka terhubung. Kemudian, kami akan menggunakan file konfigurasi keamanan untuk menentukan jam masuk yang diizinkan. Manipulasi ini dapat dilakukan pada semua versi Ubuntu, dan hanya memerlukan editor teks sederhana (vim, emacs, nano, gedit, kate, untuk beberapa nama). Aktifkan Pembatasan jam melalui Modul PAM

Pertama-tama, pertama pergi ke /etc/pam.d/, di mana semua layanan dapat dikonfigurasi:

$ Ls /etc/pam.d/
atd common-account common-session gdm login ppp sudo
chfn common-auth cron gdm-autologin Other samba
chsh common-cupsys gnome-screensaver password passwd su

Jika kita ingin memblokir koneksi ke komputer, kita harus mengubah layanan gdm. Edit file jadi gdm dan tambahkan baris kode ini (di akhir file):

account required pam_time.so

GDM adalah distribusi layar login Ubuntu, Edubuntu dan Xubuntu. Untuk Kubuntu, yang menggunakan KDE, layanan kdm disebut, itu akan menjadi file yang akan dibuka. Dan Anda selesai mengkonfigurasi PAM! Ini akan memungkinkan kontrol jam pada layanan ini.

Jika Anda memiliki server, Anda mungkin tidak memiliki GUI. Dalam hal ini, GDM / KDM tidak diinstal dan koneksi tidak akan diblokir. Untuk mencegah koneksi ke TTY, Anda harus memodifikasi login file yang sama, dan menambahkan baris kode yang sama dari yang sebelumnya diakui. Tindakan ini juga berlaku untuk orang yang telah menginstal GUI dan ingin memblokir akses ke layar masuk dan terminal.

Konfigurasikan Jam Akses

Sekarang layanan PAM telah diaktifkan, kita hanya perlu mengkonfigurasi waktu akses. Buka /etc/security. Beberapa file konfigurasi tersedia:

$ Ls /etc/security/
access.conf namespace.conf pam_env.conf
group.conf namespace.init time.conf
limits.conf opasswd time.conf.bak

Edit file time.conf. Beberapa penjelasan dan contoh (Bahasa Inggris) memperkenalkan. Untuk mengatur jadwal akses, salin dan tempelkan baris kode berikut (di akhir file, seperti biasa):

*;*;user;scheduler

Alih-alih bidang pengguna, masukkan akun masuk yang ingin Anda blokir.

Jika Anda ingin memblokir beberapa pengguna, masukkan login mereka secara berturut-turut, dipisahkan oleh | operator. Misalnya, jika saya ingin membekukan akun Patrick, John dan Emily:

*;*;Patrick|jean|emilie;scheduler

Dengan kontra, jika Anda ingin memblokir akses ke sistem untuk semua pengguna kecuali satu khususnya, gunakan! sebelum orang yang bersangkutan. Misalnya, jika saya ingin akses ke komputer ditolak untuk semua pengguna, kecuali Nicolas dan Xavier:

Nicolas *;*;!|xavier;scheduler

Beralih sekarang ke zona bidang. Dalam bidang ini, pemilihan hari dan jam akan memungkinkan koneksi. Anda harus terlebih dahulu menentukan hari dalam seminggu, menggunakan singkatan berikut:

Mo : Monday     Fr : Friday     Wd : Sa/Su
Tu : Tuesday    Sa : Saturday   wk : Mo/Tu/We/Th/Fr
We : Wenesday   Su : Sunday
Th : Thursday   Al : All Days

Berhati-hatilah untuk tidak membingungkan singkatan Wk dan Wd yang menyesatkan! teridentifikasi dengan sangat buruk di Internet: Anda dapat dengan mudah menemukan informasi yang saling bertentangan!

Kemudian, kami menentukan tenggat waktu. Ini harus diformat 24 jam, terdiri dari 4 digit. Misalnya, untuk membatasi 15:17 hingga 18:34, kami menulis: 1517-1834. Untuk mengizinkan Marie terhubung hanya pada hari Selasa, dari 15:17 hingga 18:34, kami memperoleh hasilnya:

*;*;marie;Tu1517-1834

Koneksi di luar jam-jam ini akan diblokir. Sedangkan untuk pengguna, dimungkinkan untuk menggunakan operator | dan! untuk menunjukkan beberapa kali (tanda! lalu tunjukkan bahwa semua jam masuk diizinkan, kecuali yang akan ditampilkan).

Dua bintang (wildcard) pada awal baris kode, masing-masing, dan bidang layanan tty. Karena Anda ingin memblokir semua akses ke sistem, tidak perlu menentukan layanan apa atau apa yang ingin Anda blokir. Namun, jika Anda ingin mencegah penggunaan layanan tertentu, cukup tentukan sebagai contoh berikut:

login;tty1|tty4|tty5;marie;!Wd0000-2400

Dengan demikian, pengguna menikah tidak dapat terhubung ke TTY, 4 dan 5 selama akhir pekan.

Beberapa Contoh Jadwal Pembatasan

mathilde diperbolehkan terhubung setiap hari mulai pukul 1:20 hingga 15:20 dan dari pukul 16:00 hingga 20:30:

*;*;mathilde;Al1320-1520|Al1600-2030

Stone, Frank, dan Florian diizinkan terhubung ke 14:00 hingga 18:45 selama hari kerja, dan 14:00 hingga 22:15 untuk akhir pekan:

*;*;Stone|franck|florian;Wk1400-1845|Wd1400-2215

Zaitun tidak pernah diizinkan untuk terhubung. jessica dapat login pada hari Rabu dari pukul 13:00 hingga 16:00:

*;*;olivier;!Al0000-2400
*;*;jessica;We1300-1600

2 baris berbeda, untuk dua waktu berbeda untuk setiap pengguna Kedaluwarsa Sesi

Ketika sesi berakhir (melebihi waktu saat pengguna sudah terhubung), PAM dapat menjangkau pengguna. Sementara mathilde terhubung selama jam waktu yang diizinkan, itu benar-benar gratis melebihi jam ini! Untuk ini, kami akan menggunakan program baru: ´cron´. Aplikasi ini menjalankan perintah pada interval waktu tertentu. Dalam kasus kami, kami akan menggunakan perintah ´ skill-KILL-u´ untuk memutuskan koneksi pengguna ketika sesi berakhir. Penanganannya sangat sederhana. Cukup edit file ´ / etc / crontab´. Kemudian tambahkan baris kode berikut:

Minute Hour Day * * (s) root skill -KILL -u User

Seperti sebelumnya, mengganti jadwal bidang Menit dan waktu yang diinginkan. Kemudian isi hari dengan hari yang dilarang, atau cukup ketikkan tanda bintang untuk menunjukkan semua hari dalam seminggu. Akhirnya, ubah field yang digunakan oleh akun login untuk diblokir, dan voila!

Hari tidak memperhatikan hal yang sama dengan cronpekerjaan! Berikut adalah daftar singkatan untuk digunakan dengan program ini:

mon : monday    fri : friday
tue : tuesday   sat : saturday
wed : wednesady sun : sunday
thu : thursday   *  : all hours

Beberapa Contoh cronpekerjaan (dengan contoh kali di bagian sebelumnya)

jessica dapat login pada hari Rabu dari pukul 13:00 hingga 16:00

-> Putuskan sambungan: Selasa pukul 16:00.

00 16 * root * wed skill -KILL -u jessica

mathilde diizinkan untuk terhubung setiap hari mulai pukul 1:20 hingga 15:20 dan dari pukul 16:00 hingga 20:30.

-> Disconnecting: Setiap hari, 8:30 pm hingga 3:20 pm ET.

20 15 * * * root skill -KILL -u mathilde
30 20 * * * root skill -KILL -u mathilde

Stone, Frank, dan Florian diizinkan terhubung ke 14:00 hingga 18:45 selama hari kerja, dan 14:00 hingga 10:15 untuk akhir pekan

-> Putus (1): Senin, Selasa, Rabu, Kamis dan Jumat, pukul 18:45. -> Putus (2): Sabtu dan Minggu pukul 10:15.

45 18    * * mon,tue,wed,thu,fri   root    skill -KILL -u stone && skill -KILL -u franck && skill -KILL -u florian
15 22    * * sat,sun               root    skill -KILL -u stone && skill -KILL -u franck && skill -KILL -u florian

Skill perintah-KILL-u memutus pengguna dari GUI, serta TTY. Ini sangat dapat digunakan untuk administrator server. Namun, perintah ini langsung dan pemutusan akan dilakukan tanpa pemberitahuan. Karena itu akan lebih baik untuk mencegah instalasi pengguna perangkat komputer atau jaringan yang dimaksud!

Dimungkinkan untuk mencegah pengguna dengan wallperintah yang diluncurkan cronbeberapa menit sebelum akhir jangka waktu , yang akan ditampilkan di terminal semua pengguna.

40 18 * * Mon,Tue,wed,thu,fri root echo "end of session in 5 minutes" | wall

Untuk mencegah pengguna dari GUI dapat digunakan di tempat perintah dinding notify-senddalam paket libnotify-bin Instal X

40 18 * * Mon,Tue,wed,thu,fri stone DISPLAY=:0 notify-send "end of session in 5 minutes"

Pengguna Ubuntu 11.10

Saya telah melihat sekitar pengguna mengalami masalah dengan Pam dan saya melihat banyak bug tentang itu jadi Mengapa alasannya ??? Ubuntu 11.10 begitu sederhana tidak mendukung GDM lagi manajer tampilan baru adalah lightGDM masalahnya adalah mengikuti di mana menyimpan arahan ini account required pam_time.sosaya pikir ada di /etc/pam.d/lightdmatau /etc/pam.d/lightdm-autologintapi bug bagaimana ???

jadi untuk sekitar Anda dapat memeriksa 2 file log LightGdm ini:

  • /var/log/lightdm/lightdm.log
  • /var/log/lightdm/x-0.log

atau jalankan LightGdm dalam mode debug:

LightDM --debug

atau laporkan bug:

ubuntu-bug lightdm

Saya melaporkan Bug di sini jadi silangkan jari Anda dan tunggu ....

hhlp
sumber
3
Ini - wow - hebat - saya terkesan! Esp. sedikit pemberitahuan sangat saya sukai karena kami tidak ingin anak-anak kami ditendang tanpa peringatan. Itu terlalu jahat bahkan untuk ayah yang jahat seperti saya;)
Takkat
Sayangnya dengan lightdm ini sepertinya tidak berfungsi ( bugs.launchpad.net/lightdm/+bug/880313 ).
Takkat
wow, penjelasannya bagus dan panjang ..
Mahmudin Ashar
Kasus untuk openSUSE 11.4 persis seperti Ubuntu 11.10.
Gupta
11

TimeKpr

Saya kira itu memiliki semua yang Anda butuhkan. Batasi waktu akses per hari per pengguna, gui mudah untuk konfigurasi, kemampuan untuk memotong selama sehari, tambahkan beberapa "waktu hadiah", pemberitahuan sisa waktu untuk pengguna, dll.

Halaman proyek ada di sini . Mereka juga memiliki PPA untuk ubuntu yang dapat Anda tambahkan ke Software Sources Anda: deb http://ppa.launchpad.net/timekpr-maintainers/ppa/ubuntu lucid main. Dan menginstal melalui Software Center atau melalui CLI: sudo apt-get install timekpr.

Decio Lira
sumber
Dapatkah TimeKpr menetapkan batas waktu untuk aplikasi individual (seperti game?)
Anderson Green
8

Timekpr

dapat digunakan di 11.10 menjalankan LightDM untuk menyiapkan batasan bagi pengguna dengan menambahkan baris berikut ke /etc/pam.d/lightdm

account required pam_time.so

Kita mungkin perlu menghapus libpam-smbpass untuk memungkinkan pengguna beralih sampai bug # 835310 diperbaiki.

Semua batasan yang ditentukan dalam jendela aplikasi berfungsi seperti yang didefinisikan dalam GUI timekpr.

Untuk menampilkan ikon timekpr-client di Unity kita perlu memasukkan daftar putih 'timekpr' di pengaturan panel Unity, dan di samping itu kita perlu menambahkan Unitybaris berikut di /etc/xdg/autostart/timekpr-client.desktop:

OnlyShowIn=GNOME;XFCE;KDE;Unity;

Untuk memulai hitungan mundur dari waktu yang diberikan, kita mungkin harus memulai daemon timekpr

/etc/init.d/timekpr start

untuk 14,04:

Rilis / garpu timekpr yang lebih baru diterbitkan untuk Ubuntu 14.04 oleh Eduards Bezverhijs dalam bukunya ppa:mjasnik/ppa.

Takkat
sumber
Hebat tapi saya pikir ini solusi sementara ... karena Anda menggunakan timepkr dan samba secara bersamaan untuk berbagi dengan komputer lain (lihat apa yang ditulis ClaudeD (claude-d)) tentang kemungkinan kesalahan ....
hhlp
7

Log-otomatis sangat frustasi jika Anda berada di tengah-tengah sesuatu. Ini kekerasan, brutal, polos kasar. Dan tidak masalah berapa usia Anda. Ini adalah satu hal ketika Anda hanya kecanduan komputer dan itu sangat berbeda ketika Anda melacak waktu dan dikeluarkan 5 detik sebelum Anda berhasil mengklik tombol kirim itu atau menyimpan dokumen Anda. Saya sarankan Anda untuk mempertimbangkan menggunakan pengingat otomatis, bukan penendang otomatis. Itu akan mengajarkan anak-anak Anda untuk saling menghormati dan membiarkan satu sama lain menggunakan komputer dengan sukarela.

Bahkan ada alternatif yang lebih ringan. Mulailah dengan melacak jumlah waktu yang dihabiskan setiap anak menggunakan komputer dan buat data yang dikumpulkan tersedia untuk mereka semua sehingga mereka dapat melihatnya. Ini hal yang sangat sederhana saja (diterapkan untuk menghabiskan bandwidth internet) telah menyelamatkan hidup saya ketika saya menjadi admin jaringan di kantor yang penuh dengan orang dewasa. Statistik publik tentang penggunaan bandwidth untuk setiap komputer (hanya jumlah byte, bukan info deanonimisasi seperti daftar situs yang dikunjungi dll) mengubah situasi dari "saya - admin serakah jahat melawan mereka - pengguna kantor yang disalahgunakan miskin" menjadi "manusia, Anda mengunduh 5 kali lebih banyak dari saya, itu buruk! " "Maaf, saya mengunduh memang, saya menonton banyak youtube saat istirahat makan siang, tidak akan melakukannya lagi pada tingkat ini" - Saya hanya dikecualikan dari skenario konfrontasi.

vh1
sumber
6

Saya punya masalah ini juga. Jadi saya menulis skrip kidtimer, yang memungkinkan Anda menentukan waktu dan total penggunaan. Proyek ini dapat ditemukan di Github di lokasi berikut:

Ini adalah cara menginstal dan menggunakannya:

  1. Salin dan tempel kode ke file yang disebut 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
    
  2. Jalankan:

    sudo ./kidtimer.install
  3. Menjalankannya:

    sudo kidtimer
  4. Siapkan akun pengguna yang ada.

  5. Selesai.

Untuk bantuan:

sudo kidtimer help

Tambahkan waktu ke akun pengguna (hanya untuk hari itu):

sudo kidtimer addtime user minutes

Fitur:

  • Izinkan anak Anda jam tertentu dalam sehari untuk mengakses komputer, baik hari kerja maupun akhir pekan.
  • Tetapkan jumlah waktu maksimum, baik hari kerja dan akhir pekan.

File kunci:

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

Cronjobs:

  • Periksa setiap menit untuk melihat apakah pengguna masuk. Jika demikian, tambah waktu total. Jika tekan waktu maks, nonaktifkan akun dan mulai urutan logoff (total 5 menit).
  • Periksa setiap jam untuk melihat apakah pengguna diizinkan masuk. Jika demikian, aktifkan akun.
  • Di tengah malam, atur ulang waktu.

catatan:

Aplikasi digunakan notify-senduntuk mengingatkan waktu pengguna sudah habis. Ketika waktu habis, semua proses pengguna diakhiri, jadi persiapkan pengguna.

grover66
sumber
5

timekpr - Program ini akan melacak dan mengontrol penggunaan komputer dari akun pengguna Anda. Anda dapat membatasi penggunaan sehari-hari berdasarkan durasi akses berjangka waktu dan mengkonfigurasi periode hari ketika mereka bisa atau tidak bisa login. Dengan aplikasi ini, administrator dapat membatasi durasi waktu login akun atau jam akses akun. Aplikasi berfungsi sebagai kontrol waktu orang tua, dan akan bermanfaat bagi orang tua yang ingin membatasi waktu akses anak.

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

Anda dapat memperbarui sistem Anda dengan paket yang tidak didukung dari PPA yang tidak tepercaya ini dengan menambahkan ppa:timekpr-maintainers/ppake Sumber Perangkat Lunak sistem Anda.

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

Paket ini tersedia di:

MASALAH:

Saya melaporkan Bug di sini jadi silangkan jari Anda dan tunggu ....

hhlp
sumber
Oh, itu kabar baik. Kami dulu menggunakan timekpr di sini. Berharap itu akan berhasil - itu masih diinstal pada kotak 11,10 saya, berjalan dengan baik tetapi tidak mengunci akun anak saya.
Takkat
dan untuk 14,04 apakah itu berfungsi?
rogerdpack
3

pengantar

Kami dapat memeriksa apakah pengguna masuk dengan perintah:

who -u

yang memberi kita output seperti:

$ who -u
jacob    :0           2016-03-17 20:48   ?          2557 (:0)
newuser  :1           2016-03-17 20:50   ?          4466 (:1)

Dalam output kami mendapatkan pid dari pengguna yang ditargetkan, yang perlu dihentikan jika waktu melebihi batas.

Solusinya

Dengan asumsi pengguna Anda tidak memiliki sudohak istimewa:

Solusi ini adalah skrip latar belakang kecil. Ini membatasi penggunaan per hari untuk jumlah menit yang ditentukan, untuk ditetapkan di kepala skrip. Setelah diatur (yang tidak terlalu sulit) itu berjalan sangat mudah, dan tidak ada tindakan tambahan yang diperlukan setelah itu.

Untuk mencegah hilangnya data yang tidak diinginkan dari file yang mungkin dibuka, 60 detik sebelum batas waktu pengguna yang ditargetkan berakhir, sebuah pesan akan muncul pada dirinya DISPLAY:

masukkan deskripsi gambar di sini

Naskah

#!/usr/bin/python3
import subprocess
import os
import sys
import time


#--- set the time limit below (minutes)
minutes = 120
#--- set the user name to limit below
user = "newuser"

uselog = "/opt/limit/uselog"
datefile = "/opt/limit/currdate"

def read(f):
    try:
        return int(open(f).read().strip())
    except FileNotFoundError:
        pass

def message(disp, user):
    return "DISPLAY="+disp+" su - "+user+" -c "+'"'+\
      "notify-send 'User "+user+\
      " will be logged off in 60 seconds'"+'"'


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
    # if the pid of the targeted process exists, add a "tick" to the used quantum
    check = subprocess.check_output(["who", "-u"]).decode("utf-8")
    pid = [l.split() for l in check.splitlines() if user in l]
    if pid:
        n = read(uselog)
        n = n + 1 if n != None else 0
        open(uselog, "wt").write(str(n))
        # when time exceeds the permitted amount, kill the process
        if n > minutes*6:
            disp = [d for d in [d[1] for d in pid] if all([":" in d, not "." in d])][0]
            subprocess.Popen(["/bin/bash", "-c", message(disp, user)])
            time.sleep(60)
            pids = [p[-2] for p in pid]
            for p in pids:
                subprocess.Popen(["kill", p])  

    currday1 = currday2

Cara Penggunaan

  1. Di desktop Anda (atau di mana pun), buat folder dengan nama: limit
  2. Salin skrip ke file kosong, simpan sebagai limit_use(tidak ada ekstensi) di dalam folder dan membuatnya dapat dieksekusi
  3. Edit di kepala skrip nama pengguna untuk dibatasi, dan jumlah maksimum menit yang diizinkan. Dalam contoh:

    #--- set the time limit below (minutes)
    minutes = 1
    #--- set the user name to limit below
    user = "jacob"
  4. Salin folder ke direktori /opt:

    cp -r /path/to/limit /opt
  5. Sekarang edit /etc/rc.localuntuk membuat skrip menjalankannya seperti rootpada saat startup:

    sudo -i gedit /etc/rc.local

    Tepat sebelum garis

    exit 0

    baris lain:

    /opt/limit/limit_use &

Penjelasan; bagaimana itu bekerja

  • Sekali per 10 detik, skrip akan melihat apakah pengguna yang dituju telah login. Jika demikian, skrip ini "menambahkan" satu "titik" ke total penggunaan, yang akan direkam dalam file ( /opt/limit/uselog). Jika batas harian tercapai, skrip tidak lagi memungkinkan pengguna untuk login, bunuh prosesnya jika ada.
  • Pada perubahan hari (tanggal dicatat dalam file, jadi reboot tidak akan membantu), file log dihapus, memungkinkan jumlah waktu penggunaan baru untuk menumpuk.
  • Karena skrip berjalan saat boot , dari rc.localhanya pengguna yang memiliki hak sudo dapat menghentikan skrip, bahkan hanya jika pengguna mengetahui nama proses.

Hentikan skripnya

Jika Anda ingin menghentikan skrip, gunakan perintah:

sudo kill "$(pgrep limit_use)"

Tetapi Anda membutuhkan kata sandi sudo untuk melakukannya.

Yakub Vlijm
sumber
2

Saya mencoba timekprtetapi tidak berhasil. Kemudian dibuat varian yang berfungsi di Ubuntu saya. Inilah yang perlu dilakukan seseorang untuk varian ini:

  1. Tambahkan batas waktu dalam /var/lib/timelimit/user_to_be_limited.limitfile dengan hak root saja. misalnya batas harian 1800 untuk 1800 detik (30 menit).

  2. Buat /usr/local/bin/timelimit.shdengan hak root dengan yang berikut:

    #!/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
  3. Tambahkan ke /etc/rc.local:

    sudo /usr/local/bin/timelimit.sh &
  4. Mulai ulang Ubuntu

Csaba
sumber
2

Saya hanya menyediakan jawaban dengan mudah. Kode dijelaskan di utas http://forums.linuxmint.com/viewtopic.php?f=213&t=77687 . Singkatnya: batas yang dikonfigurasikan dalam hitungan menit per hari, tugas cron setiap menit, pesan ke pengguna untuk memberi informasi dan logoff paksa.

Untuk mengunduh dan menginstal ini, buka Terminal dan jalankan perintah di bawah ini:

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

Kata sandi administrator akan diminta selama proses instalasi (untuk menginstal pekerjaan cron, untuk menyalin skrip, ...). Dari sana Anda akan dibimbing untuk semua. Ada juga ./uninstall.sh di tempat yang sama untuk berjaga-jaga. Itu dibangun untuk bekerja dengan semua distro berbasis Ubuntu (Mint, dll ... mungkin semua debian juga). Jika ada masalah, beri tahu saya, termasuk versi sistem dan lingkungan grafis dalam komentar:

uname -a
echo $XDG_CURRENT_DESKTOP

Thomas Baeckeroot

Thomas Baeckeroot
sumber
1

Saya baru saja merilis versi beta dari aplikasi baru saya LittleBrotheryang dapat memonitor waktu bermain di mesin Linux. Pengguna uji dipersilakan untuk mencoba paket Debian. Petunjuk tentang cara mengunduh dan menggunakannya dapat ditemukan di sini: https://github.com/marcus67/little_brother . Instalasi mungkin masih sedikit kasar. Ini adalah fitur aplikasi:

  • Sejumlah pengguna dapat dimonitor.
  • Setiap pengguna dapat memiliki seperangkat aturan khusus yang menentukan waktu bermain yang diizinkan.
  • Aturan dapat disesuaikan dengan "konteks", seperti hari dalam seminggu dan / atau jadwal liburan (saat ini hanya jadwal Jerman yang didukung).
  • Waktu bermain dapat dibatasi ke jendela waktu (dari, ke).
  • Waktu putar maksimum per hari dapat ditentukan.
  • Pengguna dapat dipaksa untuk beristirahat setelah waktu sesi maksimum tertentu.
  • Pengguna dapat dipaksa untuk menunggu waktu istirahat miniumum setelah aktivitas mereka.
  • Sejumlah host klien Linux dapat dipantau (saat ini ini mengharuskan pengguna untuk memiliki login yang sama di semua mesin).
  • Ada master host dengan riwayat kegiatan semua pengguna. Host utama ini memeriksa set aturan dan meminta host klien untuk menghentikan proses jika diperlukan.
  • Tuan rumah induk menawarkan antarmuka web sederhana untuk melihat aktivitas pengguna selama sejarah panjang yang dikonfigurasi (misalnya 7 hari) dan halaman administrasi untuk secara dinamis menentukan pengecualian aturan untuk jumlah hari yang dikonfigurasi di masa mendatang.
  • Aplikasi web dapat dijalankan di belakang proxy sehingga dapat diakses dari jauh sehingga memungkinkan administrasi jarak jauh setelah menerima panggilan dari pengguna muda yang meminta lebih banyak waktu bermain.
  • Aplikasi ini memiliki dukungan bahasa internasional. Saat ini terjemahan bahasa Inggris dan Jerman disediakan. Pengguna diundang untuk memberikan terjemahan untuk bahasa lain.
  • Aplikasi menggunakan generasi suara untuk memberi tahu pengguna tentang logout paksa yang akan terjadi. Pesan lisan ini juga diinternasionalkan.
  • Selain waktu yang dihabiskan di host Linux aplikasi juga dapat memonitor waktu aktivitas pada perangkat lain seperti ponsel pintar atau tabel. Ini mengambil keuntungan dari kenyataan bahwa sebagian besar sistem operasi modern menempatkan perangkat dalam beberapa jenis mode hemat daya saat tidak digunakan. Dengan cara ini, respons jaringan (dengan melakukan ping) dapat digunakan untuk menentukan aktivitas pada perangkat tersebut. Berbeda dengan host Linux, aplikasi tidak akan dapat menghentikan aktivitas. Waktu bermain, bagaimanapun, akan ditambahkan ke waktu bermain keseluruhan dan karenanya akan berdampak pada waktu yang diizinkan dan juga pada aturan waktu istirahat pada host Linux.

Beberapa tangkapan layar:

Halaman Status Halaman Administrasi

Marcus Rickert
sumber