Çocuklarımın hesaplama süresini nasıl kısıtlarım?


60

Bilgisayarımıza erişim (sadece internete değil) çocuklarımın hesaplarıyla (7, 8) kendi başlarına idare edebilecek kadar eski olmaları ile sınırlandırılmalıdır. O zamana kadar aşağıdakileri tanımlayabilmemiz gerekir:

  • hesaplamanın tamam olduğu günün saatleri (ör. 5-9: 00)
  • hesaplamanın iyi olmadığı haftanın günleri (örneğin pazartesiden cumaya)
  • günde izin verilen süre (örneğin 2 saat)

11.10'da, işi yapmak için kullanılanların tümü artık işe yaramıyor:

  • Timekpr :> 11.10 için ppa aracılığıyla artık mevcut değil.
  • Timeoutd : komut satırı alternatifi, ancak 11.10'dan depolardan kaldırıldı .
  • Gnome Nanny : X-sunucusunu yeniden başlatmaya zorlamak için harika görünüyor ama defalarca çöküyor . Bu yüzden şu anda bu programı kullanamıyoruz veya tavsiye etmiyoruz.

Başka alternatif var mı?


Hmmm ... bunu yapan bir şey yoksa, büyük olasılıkla kabuk komut dosyaları / cron işleri ile birlikte kesmek kolay olacaktır.
Nathan Osman

11
EEK. Ailemin bunu görmesine izin veremem. AMA, üstesinden gelebilirim çünkü harika bir kök erişimim var. : P
JRG

İlgi, “hala geliştirilmekte”, ancak yeni bir soruya değeceğini sanmıyorum.
RobotHumans

Timekpr geliştiricisinin geliştirmeye devam etmek için vakti olamayacağına ya da olmayacağına söz vermesi dışında, böyle bir uygulama yoktur. Ama kendi tecrübelerime göre, şimdi daha iyi yapabileceğimizi (hatta daha iyi?) Yapabileceğimizi biliyorum ama o zaman akıllı çocuklara ve akıllı ailelere ihtiyaç duyuyor .
Takkat

@jrg veya sadece bir canlı usb;)
Wilhelm Erasmus

Yanıtlar:


1

Ekran Zamanlayıcısını Kilitle

systray.gif

3. Parti uygulamaları yerine kendi Ekran Kilidi Zamanlayıcınızı oluşturun

Bunu yapmak için 3. taraf uygulamaları olsa da, kendinizinkini oluşturabilirsiniz. Adımların özeti:

  • geditKomut dosyası oluşturmak için kullanınlock-screen-timer
  • Bu pencereden kodu kopyalayıp yapıştırın lock-screen-timer
  • Mark lock-screen-timeryürütülebilir olarak
  • Dene!
  • Nautilus'u bash betiğini çalıştırmak için yapılandırın
  • Masaüstü kısayolu bağlantısı oluştur
  • Kalan süreyi izleyin

geditKomut dosyası oluşturmak için kullanınlock-screen-timer

+ + Tuşlarını Terminalkullanarak açın ve şunu yazın:CtrlAltT

gedit lock-screen-timer

Aşağıdaki pencereden kodu kopyalayıp yapıştırın lock-screen-timer

Bu ekrana geri dönün ve aşağıdaki kodu vurgulayıp Ctrl+ tuşlarına basarak kopyalayın 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.

Sonra boş geditpencereye geri dönün ve kodu Ctrl+ tuşuyla yapıştırın V. Dosyayı kaydedin ve düzenleyiciden komut istemine geri dönün.

Mark lock-screen-timeryürütülebilir olarak

Şimdi yazarak betiği çalıştırılabilir hale getirmeliyiz:

chmod +x lock-screen-timer

Dene!

Komut dosyasını GUI'den çağırmadan önce herhangi bir hata iletisinin gösterilip gösterilmediğini görebilmemiz için terminalden arayacağız:

~/lock-screen-timer

Dakika sayısı istenir:

Ekran Zamanlayıcısını Kilitle

İstediğiniz dakika sayısını ayarlayın ve zamanlayıcıyı başlatmak için Tamam'ı tıklayın. 15, 10, 5, 3, 2 ve 1 dakika kaldığında, sistem sesi duyulur ve ekranın ne zaman kilitleneceğini bildiren bir mesaj balonu belirir. Ekran kilitlendikten sonra, ekran kilidini açmak için şifrenizi girmeniz gerekir.

Nautilus'u bash betiğini çalıştırmak için yapılandırın

Nautilus, dosya görüntüleme penceresi veya masaüstündeki bir bağlantı olduğunda yürütülebilir bir komut dosyasına çift tıkladığımızda ne olacağını tanımlar. Normal davranış kullanarak komut dosyasını düzenlemektir gedit. Bu davranışı, yürütülecek şekilde değiştirmek istiyoruz.

Nautilus'u başlatın ve içeren dizine gidin lock-screen-timer. Odaklanmak için bir kez sol tıklayın. "Dosya Düzenle ..." menüsü görünene kadar fareyi üst menü çubuğunun üzerine getirin, şunu kullanın:

  1. EditAçılır menüyü tıklayın
  2. Tıklayın Propertiesseçeneği
  3. Click Behaviorsekmesini
  4. Aşağıdaki radyo seçenek düğmelerine dikkat edin. Executable Text Files
  5. Radyo düğmesini kontrol et Run executable text files when they are opened

Masaüstü kısayolu bağlantısı oluştur

Önceki bölümden lock-screen-timerhala odak var. Değilse, betiğe gidin ve odaklanmak için bir kez sol tıklayın. Sonra kullan:

  • Dosyaya sağ tıklayın ve içerik menüsü seçenekleri belirir.
  • Menüden seçim yapın Make Link.
  • Adı verilen yeni bir simge belirir Link to lock-screen-timer.
  • Yeni simgeye sol tıklayın ve Nautilus'tan masaüstünüze sürükleyin.

Şimdi masaüstü kısayol bağlantısını çift tıklatabilir ve script çalıştırılabilir. Dakika sayısını almak için bir iletişim kutusu belirir. İki düğme sunulur Cancelve OK. XPencereyi kapatmak için üzerine tıklarsanız, seçimle aynıdır Cancel.

Zamanlayıcı çalıştıktan ve onu tekrar çift tıklattığınızda, ilk çalışan kopya "öldürülür". Artık yeni bir scren kilidi geri sayımı başlatabilir veya Cancelgeri sayım yapmak için tıklayabilirsiniz .

Sistem / bildirim alanında Kalan Saati Görüntüleme

Kilit ekranı zamanlayıcısı çalışırken, dosyada kaç dakika kaldığını kaydeder ~/.lock-screen-timer-remaining. Bu dosyaya watchkomutla bakabilir veya bu cevabın en üstünde gösterildiği gibi Ubuntu'nun sistem tepsisinde / uygulama gösterge çubuğunda görüntüleyebilirsiniz. Bildirim alanında kalan süreyi görüntülemek için, bu Soru ve Cevap bölümündeki talimatları izleyin: ( BASH, sistem göstergesi olarak uygulama göstergesi olarak görüntülenebilir mi? ).


38

Ubuntu <= 11.10 Kullanıcı, Ubuntu Kullanıcısı> = 11.10 için bu kılavuzu izleyin. Alt sayfa bildirimini okuyun:

Evet, bu programların tümü güncel değil ve tüm sorularınız burada yanıtlandı ve ebeveyn kontrolünüzle iyi görünün…

Bir kullanıcıyı oturumu kapatmaya zorlamak hakkında konuştuğumuzda, gerçekten bahsettiğimiz konu sisteme erişim veya hizmetler için hesapta zaman kısıtlamaları uygulamaktır. Zaman kısıtlamaları uygulamak için bulduğum en kolay yol, Linux-PAM adlı bir eklenti modülü kullanmak .

Takılabilir Kimlik Doğrulama Modülü (PAM) , kullanıcıların kimliğini doğrulamak için bir mekanizmadır. Özellikle, pam_timekullanıcıların hizmetlere zamanında erişimini kontrol etmek için modülü kullanacağız .

pam_timeModülü kullanarak, günün belirli saatlerinde veya belirli günlerde veya çeşitli terminal hatlarında, bir sisteme ve / veya belirli uygulamalara erişim kısıtlamaları koyabiliriz. Yapılandırmaya bağlı olarak, bu modülü, kullanıcılara adlarına, günün saatine, haftanın gününe, başvurdukları hizmete ve isteklerini yaptıkları terminale göre reddetmek için kullanabilirsiniz. .

Kullanırken pam_time, /etc/security/time.confdosyadaki her satırın (veya kuralın) sözdizimini newline ile sonlandırmanız gerekir . Her satırı pound işareti [#] ile yorumlayabilirsiniz; sistem yeni yazıya kadar bu metni görmezden gelecektir.

İşte bir kuralın sözdizimi:

hizmetleri; ttys; kullanıcılar; kere

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.

İşte tipik bir kurallar kümesi örneği:

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

Bu kurallar kullanıcı bobby'sinin 0800 - 2000 saatleri arasında oturum açmasını kısıtlar ve aynı zamanda bu saatler içinde İnternet erişimini de kısıtlar. Kök, herhangi bir zamanda oturum açabilir ve her zaman İnternet’te dolaşabilir.

Not: Sistem bu kurallarla ilgili hataları syslog (3) olarak kaydeder.


Ubuntu Linux ile bir veya daha fazla kullanıcının sisteminize bağlanmasını önlemek için, bilgisayarınızın zaman kısıtlamalarını atamak mümkündür. Zaman kısıtlamaları ile, örneğin, çocuklarınız için bilgisayara erişimi sınırlandırabilir (kısaca bir tür ebeveyn kontrolü) veya hatta saatlerce sunucunuzla bağlantıyı koruyabilirsiniz.

Manuel Yapılandırma

Ne yapacağını anlamak

Bu eğitim boyunca, PAM (Takılabilir Kimlik Doğrulama Modülleri, Takılabilir İngilizce Kimlik Doğrulama Modülleri) kullanacağız. Bağlandıklarında kullanıcı kimlik doğrulamasını kontrol etmenizi sağlar. Ardından, izin verilen oturum açma saatlerini tanımlamak için güvenlik yapılandırma dosyalarını kullanacağız. Bu manipülasyonlar Ubuntu'nun herhangi bir sürümünde yapılabilir ve sadece basit bir metin editörü gerektirir (vim, emacs, nano, gedit, kate, birkaç isim). PAM Modülü ile Kısıtlama saatlerini etkinleştirin

Her şeyden önce, önce /etc/pam.d/yapılandırılabilir hizmetlerin olduğu yere gidin :

$ 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

Bilgisayarla olan bağlantıyı engellemek istiyorsak, gdm servisini değiştirmek zorunda kalacağız. Dosyayı gdm olarak düzenleyin ve bu kod satırını ekleyin (dosyanın sonuna):

account required pam_time.so

GDM, Ubuntu, Edubuntu ve Xubuntu giriş ekranı dağıtımlarıdır. KDE kullanan Kubuntu için kdm servisi denir, açacağı dosya olacaktır. Ve PAM'i yapılandırmak için işiniz bitti! Bu, bu hizmette saatlerin kontrolünü sağlayacaktır.

Bir sunucunuz varsa, muhtemelen GUI'niz yoktur. Bu durumda, GDM / KDM takılı değildir ve bağlantı engellenmez. TTY ile bağlantıyı önlemek için, aynı dosyanın giriş bilgilerini değiştirmeli ve daha önce onaylandığından aynı kod satırını eklemelisiniz. Bu işlem aynı zamanda bir GUI yüklemiş olan ve giriş ekranına ve terminallere erişimi engellemek isteyenler için de geçerlidir.

Erişim Saatlerini Yapılandır

Şimdi PAM servisi etkinleştirildikten sonra, yalnızca erişim zamanlarını yapılandırmamız gerekiyor. Açın /etc/security. Birkaç konfigürasyon dosyası mevcuttur:

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

Dosyayı düzenleyin time.conf. Bazı açıklamalar ve örnekler (İngilizce) tanıtımı. Erişim programlarını ayarlamak için aşağıdaki kod satırını kopyalayıp yapıştırın (her zamanki gibi dosyanın sonunda):

*;*;user;scheduler

Kullanıcı alanı yerine, engellemek istediğiniz giriş hesabını girin.

Birden fazla kullanıcıyı engellemek istiyorsanız, girişlerini | ile ayrılmış olarak üst üste giriş yapın. Şebeke. Örneğin, Patrick, John ve Emily'nin hesaplarını dondurmak istersem:

*;*;Patrick|jean|emilie;scheduler

Sonuç olarak, sisteme erişimi tüm kullanıcılar için özellikle de bir kullanıcı için engellemek istiyorsanız,! ilgili kişiden önce. Örneğin, bilgisayara erişmek istersem, Nicolas ve Xavier dışındaki tüm kullanıcılara reddedilirse:

Nicolas *;*;!|xavier;scheduler

Şimdi alan bölgelerine dönüyorum. Bu alanda gün ve saat seçimine izin verilecek bağlantı mümkün olacak. Önce aşağıdaki kısaltmaları kullanarak haftanın gününü belirtmelisiniz:

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

Wk ve Wd yanıltıcı kısaltmalarını karıştırmamaya dikkat edin! İnternette özellikle kötü bir şekilde tanımlanmış: çelişkili bilgileri kolayca bulabilirsiniz!

Ardından son tarihleri ​​belirtiyoruz. Bunlar 4 haneden oluşan 24H olarak biçimlendirilmelidir. Örneğin, 15:17 - 18:34 saatleri arasında kısıtlamak için şunu yazıyoruz: 1517-1834. Marie’nin yalnızca Salı günü, 17:17 - 18:34

*;*;marie;Tu1517-1834

Bu saatler dışındaki bağlantılar yasaklanacaktır. Kullanıcılara gelince, operatörleri kullanmak mümkündür | ve! birkaç kez belirtmek için (! işaretini belirtmek dışında, tüm oturum açma saatlerine izin verildiğini belirtin).

Kod satırının başındaki iki yıldız (joker karakterler) sırasıyla ve tty hizmetleri alanlarıdır. Sisteme tüm erişimi engellemek istediğiniz için, hangi hizmeti veya hangi tty'yi engellemek istediğinizi belirtmeniz gerekmez. Bununla birlikte, belirli bir servisin kullanımını önlemek istiyorsanız, aşağıdaki örneği belirtmeniz yeterlidir:

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

Bu nedenle, kullanıcı evlenmesi hafta sonu boyunca bir TTY, 4 ve 5'e bağlanamaz.

Bazı Kısıtlamalar Çizelgesi Örnekleri

Mathil her gün 13:20 - 15:20 ve 16:00 - 20:30 saatleri arasında bağlanabilir:

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

Stone, Frank ve Florian'ın hafta içi saat 2:00 - 18:45 ve hafta sonu saat 2: 00-10: 15 arasında bağlantı kurmasına izin verilmektedir.

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

Olive'in asla bağlanmasına izin verilmiyor. jessica Çarşamba günü saat 13: 00-16: 00 arasında giriş yapabilir:

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

2 farklı satır, her kullanıcı için iki farklı zaman için Oturumun Sona Ermesi

Bir oturumun süresi dolduğunda (kullanıcı zaten bağlıyken geçen süreyi aşıyorsa), PAM kullanıcıya ulaşabilir. Mathil, izin verilen saatlerde bağlanırken, bu saatleri aşmak tamamen ücretsizdir! Bunun için yeni bir program kullanacağız: “` cron ”. Bu uygulama zaman aralıklarında komutları çalıştırır. Bizim durumumuzda, oturum süresi dolduğunda kullanıcının bağlantısını kesmek için 'skill-KILL-u' komutunu kullanacağız. Taşıma çok basittir. Basitçe ´ / etc / crontab´ dosyasını düzenleyin. Ardından aşağıdaki kod satırını ekleyin:

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

Daha önce olduğu gibi, Dakika alanı programlarını ve istenen zamanı değiştirmek. Sonra, gün (ler) i yasaklı gün (ler) ile doldurun veya haftanın tüm günlerini belirtmek için bir yıldız işareti (*) yazın. Son olarak, giriş hesabı tarafından kullanılan alanı engellenecek şekilde değiştirin ve işte!

Günler cronişlerle aynı şekilde fark etmez ! Bu programla kullanılacak kısaltmaların listesi:

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

Bazı croniş örnekleri (önceki bölümdeki örneklerle)

jessica Çarşamba günü saat 13: 00-16: 00 arasında giriş yapabilir.

-> Bağlantıyı kes: Salı, saat 16: 00'da.

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

Mathil, her gün 13:20 - 15:20 ve 16:00 - 20:30 saatleri arasında bağlantıya izin verilir.

-> Bağlantının kesilmesi: Günlük, 20:30 - 15:20 ET.

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

Stone, Frank ve Florian'ın hafta içi saat 2:00 - 18:45 ve hafta sonu saat 2: 00-10: 15 arasında bağlantı kurmasına izin verilmektedir.

-> Bağlantıyı kes (1): Pazartesi, salı, çarşamba, perşembe ve cuma, saat 18: 45'te. -> Bağlantıyı kes (2): Cumartesi ve pazar, saat 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-KILL-u komutu, kullanıcıyı GUI'den ve TTY'den ayırır. Sunucu yöneticileri için mükemmel bir şekilde kullanılabilir. Bununla birlikte, bu komut hemen uygulanır ve bağlantı kesilmeden haber verilmez. Bu nedenle söz konusu bilgisayarın veya ağın bu cihaz kullanıcılarının kurulmasını önlemek tercih edilir!

Bir ile kullanıcıların önlemek mümkündür wallbaşlattığı komutun cronbitmeden birkaç dakika süre tüm kullanıcıların terminallerde görüntülenecektir.

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

Kullanıcıların GUI'yi engelleyebilmeleri için duvar komutları yerine libnotify-binnotify-send paketinde yer almaktadır. X'i yükle

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

Ubuntu 11.10 Kullanıcının

Kullanıcının çevresinde Pam ile ilgili sorunları olduğunu gördüm ve bununla ilgili bir sürü hata gördüm. Neden sebebi ??? çok basit Ubuntu 11.10 artık GDM'yi desteklemiyor, yeni görüntü yöneticisi lightGDM'dir, sorun şu ki account required pam_time.sobence bu direktifin nerede olduğunu /etc/pam.d/lightdmya da /etc/pam.d/lightdm-autologinhata yapmayı düşünüyorum ???

bu yüzden hemen etrafınızda bu 2 LightGdm günlük dosyasını kontrol edebilirsiniz:

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

veya LightGdm'i hata ayıklama modunda çalıştır:

LightDM - debug

veya bir hatayı bildirin:

ubuntu-bug lightdm

Böceğin burada olduğunu rapor ediyorum , parmağını çapraz ve bekle ...


3
Bu - vay - harika - Etkilendim! Esp. bildirim biti sevdiğim için çok fazla çünkü biz çocuklarımızın uyarılmadan kovulmalarını istemiyoruz. Benim gibi kötü bir baba için bile bu çok kötü olurdu;)
Takkat

Ne yazık ki lightdm ile bu işe yaramaz gibi görünüyor ( bugs.launchpad.net/lightdm/+bug/880313 ).
Takkat

vay, bu harika ve uzun bir açıklama ..
Mahmudin Ashar

OpenSUSE 11.4 için durum tam olarak Ubuntu 11.10 gibidir.
Gupta,

11

TimeKpr

Sanırım ihtiyacınız olan her şeye sahip. Kullanıcı başına günlük erişim süresi, konfigürasyon için kolay gui, bir gün boyunca baypas etme yeteneği, bazı "ödül zamanları" ekleme, kullanıcılar için kalan süre bildirimi vb.

Proje sayfası burada . Onlar da size Yazılım Kaynakları ekleyebileceğiniz ubuntu için PPA vardır: deb http://ppa.launchpad.net/timekpr-maintainers/ppa/ubuntu lucid main. Ve Yazılım Merkezi aracılığıyla veya CLI üzerinden yükleyin: sudo apt-get install timekpr.


Bireysel uygulamalar için ayarlanan süre sınırları TimeKpr Can (oyunlar gibi?)
Anderson Yeşil

8

Timekpr

aşağıdaki satırı ekleyerek kullanıcılar için kısıtlamaları ayarlamak amacıyla 11.10'da LightDM çalıştırarak kullanılabilir. /etc/pam.d/lightdm

account required pam_time.so

Hata # 835310 düzeltilinceye kadar kullanıcı değiştirmeyi etkinleştirmek için libpam-smbpass'ı kaldırmamız gerekebilir .

Uygulama penceresinde tanımlanan tüm kısıtlamalar, timekpr GUI'de tanımlandığı şekilde çalışır.

Unity'deki timekpr-client simgesini görüntülemek için Unity panel ayarlarında beyaz listeye ihtiyacımız var 'timekpr've ayrıca Unityaşağıdaki satırda şunu eklemeliyiz /etc/xdg/autostart/timekpr-client.desktop:

OnlyShowIn=GNOME;XFCE;KDE;Unity;

Verilen sürenin geri sayımını başlatmak için timekpr arka planını başlatmak zorunda kalabiliriz.

/etc/init.d/timekpr start

14.04 için:

Timekpr daha yeni bir sürümü / çatal Ubuntu 14.04 yayımlandı Eduards Bezverhijs onun içinde ppa:mjasnik/ppa.


Harika ama bence geçici bir çözüm ... çünkü başka bilgisayarlarla paylaşmak için aynı anda timepkr ve samba kullanıyorsunuz (olası ClaudeD (claude-d) yazısının olası hata hakkında ne yazdığını bakın ....
hhlp

7

Auto-logoff, bir şeyin ortasındaysanız çok sinir bozucudur. Şiddetli, acımasız, basit kaba. Ve senin kaç yaşında olduğun önemli değil. Bu sadece bir bilgisayar bağımlısı olduğunuzda bir şeydir ve zamanınızı takip ettiğinizde ve o gönder düğmesini tıklayıp belgenizi kaydetmeden 5 saniye önce kovulduğunuzda çok farklıdır. Bir otomatik atıcı yerine bir otomatik hatırlatıcı kullanmayı düşünmenizi öneririm. Bu, çocuklarınıza birbirlerine saygı duymalarını ve birbirlerine bilgisayarlarını isteyerek kullanmalarını sağlayacak.

Daha hafif bir alternatif bile var. Her çocuğun bilgisayarı kullanarak harcadığı zamanı izleyerek başlayın ve toplanan verileri herkesin görebilmesi için hazır hale getirin. Bu inanılmaz derecede basit olan tek şey (harcanan internet bant genişliğine uygulanan) yetişkinlerle dolu bir ofiste ağ yöneticisi olduğumda hayatımı kurtardı. Her bilgisayar için bant genişliği kullanımına ilişkin genel istatistikler (yalnızca bayt miktarı, ziyaret edilen sitelerin listesi gibi bilgileri anlamadan değil), durumu "benden - onlara karşı kötü açgözlü yönetici - kötü kullanılan kötüye kullanıcı" dan "adama" çevirdi. benden 5 kat daha fazla indirdin, bu kötü! " "Üzgünüm, gerçekten indirdim, öğle yemeği molalarında çok fazla youtube izledim, artık bu oranda yapmayacağım" - basitçe yüzleşme senaryosundan çıkarıldım.


6

Bende de bu sorun vardı. Bu yüzden, kullanım sürelerini ve toplamlarını tanımlamanıza izin veren çocuk kodunu yazdım. Proje Github'da aşağıdaki konumda bulunabilir:

Bu nasıl kurulup kullanılacağı:

  1. Kodu kopyalayıp adı verilen bir dosyaya yapıştırın 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. Onu çalıştır:

    sudo ./kidtimer.install
  3. Çalıştır:

    sudo kidtimer
  4. Mevcut bir kullanıcı hesabı oluşturun.

  5. Bitti.

Yardım için:

sudo kidtimer help

Bir kullanıcının hesabına zaman ekleyin (yalnızca o gün için):

sudo kidtimer addtime user minutes

Özellikleri:

  • Çocuğunuzun günün belirli saatlerinde, hafta içi ve hafta sonu hem de bilgisayara erişmesine izin verin.
  • Hem hafta içi hem de hafta sonu için maksimum süre belirleyin.

Anahtar dosyalar:

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

Cron işleri:

  • Kullanıcının giriş yapmış olup olmadığını görmek için her dakikayı kontrol edin. Varsa toplam süreyi artırın. Maksimum süreye ulaşırsa, hesabı devre dışı bırakın ve oturum kapatma işlemini başlatın (toplam 5 dakika).
  • Kullanıcının giriş yapmasına izin verilip verilmediğini görmek için saatlik olarak kontrol edin. Öyleyse, hesabı etkinleştirin.
  • Gece yarısında zamanı sıfırla.

Not:

Uygulama, notify-sendkullanıcının zamanının tükendiğini bildirmek için kullanır . Zaman bittiğinde, tüm kullanıcı işlemleri sonlandırılır, bu nedenle lütfen kullanıcıyı hazırlayın.


5

timekpr - Bu program kullanıcı hesaplarınızın bilgisayar kullanımını izler ve kontrol eder. Günlük kullanımlarını, zamanlanmış erişim sürelerine göre sınırlayabilir ve giriş yapabilecekleri veya yapamayacakları günleri yapılandırabilirsiniz. Bu uygulama ile, yöneticiler hesap oturum açma süresini veya hesap erişim saatlerini sınırlayabilir. Uygulama ebeveyn zaman kontrolü olarak çalışır ve çocuk erişim süresini sınırlamak isteyen ebeveynler için faydalı olacaktır.

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

ppa:timekpr-maintainers/ppaSisteminizin Yazılım Kaynaklarına ekleyerek , sisteminizi bu güvenilmeyen PPA'dan desteklenmeyen paketlerle güncelleyebilirsiniz .

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

Bu paket şurada mevcuttur:

SORUN :

Böceğin burada olduğunu rapor ediyorum , parmağını çapraz ve bekle ...


Oh bu iyi haber. Burada timekpr kullanırdık . Umarım işe yarar - hala 11.10 kutumda yüklü, iyi çalışıyor ancak çocuğumun hesaplarını kilitlemiyor.
Takkat

ve 14.04 için çalışıyor mu?
rogerdpack

3

Giriş

Bir kullanıcının komutla giriş yapıp yapmadığını kontrol edebiliriz:

who -u

bu bize şöyle bir çıktı verir:

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

Çıktıda, süre sınırı aştığında durması gereken hedeflenen kullanıcının ücretini alıyoruz.

Çözüm

Kullanıcınızın sudoayrıcalıklara sahip olmadığını varsayalım:

Bu çözüm, küçük bir arka plan komut dosyasıdır. Komutun başına koymak için günlük kullanımı belirli bir dakika sayısıyla sınırlandırır. Kurulduktan sonra (bu çok zor değil) çok kolaydır ve daha sonra ek bir işlem yapmanıza gerek yoktur.

Muhtemelen açılan dosyaların istenmeyen veri kaybını önlemek için , hedeflenen kullanıcının kullanım süresi dolmadan 60 saniye önce , onun üzerinde bir mesaj görünecektir DISPLAY:

görüntü tanımını buraya girin

Senaryo

#!/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

Nasıl kullanılır

  1. Masaüstünüzde (veya başka bir yerde) adlı bir klasör oluşturun: limit
  2. Komut dosyasını boş bir dosyaya kopyalayın, klasörün içinelimit_use (uzantısız) kaydedin ve çalıştırılabilir duruma getirin
  3. Komut dizisinin başında, sınırlandırılacak kullanıcı adını ve izin verilen maksimum dakika sayısını düzenleyin. Örnekte:

    #--- set the time limit below (minutes)
    minutes = 1
    #--- set the user name to limit below
    user = "jacob"
    
  4. Klasörü dizine kopyalayın /opt:

    cp -r /path/to/limit /opt
  5. Şimdi /etc/rc.localbetiği rootbaşlangıçta çalıştırması için düzenleyin :

    sudo -i gedit /etc/rc.local

    Çizgiden hemen önce

    exit 0

    başka bir satır:

    /opt/limit/limit_use &

Açıklama; nasıl çalışır

  • Her 10 saniyede bir, komut dosyası hedeflenen kullanıcının giriş yapmış olup olmadığına bakar. Öyleyse, bir dosyaya kaydedilmek üzere toplam kullanıma "bir" nokta "ekler ( /opt/limit/uselog). Günlük sınıra ulaşıldığında, komut dosyası kullanıcının oturum açmasına izin vermez, mevcutsa işlemi durdurur.
  • Gün değişiminde (tarih bir dosyaya kaydedilir, bu nedenle yeniden başlatma yardımcı olmaz), günlük dosyası silinerek yeni bir kullanım süresi oluşmasına izin verilir.
  • Senaryo üzerinde çalışan bu yana açılışta gelen, rc.localhatta daha sonra kullanıcı işlem adını bilen yalnızca, senaryoyu durduramaz sudo ayrıcalıkları olan sadece kullanıcı (lar).

Senaryoyu durdur

Komut dosyasını durdurmak isterseniz, aşağıdaki komutu kullanın:

sudo kill "$(pgrep limit_use)"

Ama bunun için sudo şifresine ihtiyacınız olacak.


2

Denedim timekprama işe yaramadı. Sonra benim Ubuntu'mda çalışan bir varyasyon yaptım. Bu varyant için yapılması gerekenler:

  1. /var/lib/timelimit/user_to_be_limited.limitYalnızca kök haklarına sahip dosyaya zaman sınırı ekleyin . örneğin 1800 1800 saniye (30 dakika) günlük limit.

  2. Create /usr/local/bin/timelimit.shile kök aşağıdaki haklar:

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

    sudo /usr/local/bin/timelimit.sh &
  4. Ubuntu’yu yeniden başlatın


2

Sadece kolayca cevap verdim. Kod, http://forums.linuxmint.com/viewtopic.php?f=213&t=77687 adresinde açıklanmıştır . Kısacası: Günde dakikalar içinde yapılandırılmış bir limit, her dakika bir cron işi, kullanıcıya kendisini bilgilendirmesi için bir mesaj ve zorla oturumu kapatmak.

Bunu indirmek ve kurmak için bir Terminal açın ve aşağıdaki komutları çalıştırın:

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

Kurulum işlemi sırasında yönetici şifresi istenecektir (cron işini kurmak, betiği kopyalamak,…). Oradan herkes için yönlendirileceksiniz. Aynı durumda, aynı yerde bir ./uninstall.sh de vardır. Tüm Ubuntu tabanlı dağıtımlarla (Mint vb. Muhtemelen debian da çalışacak şekilde) çalışmak üzere oluşturulmuştur. Herhangi bir sorun olursa, lütfen sistem sürümü ve yorumlardaki grafik ortamı da dahil olmak üzere bana bildirin:

uname -a
echo $XDG_CURRENT_DESKTOP

Thomas Baeckeroot


1

Yeni uygulamamın LittleBrotherLinux makinelerinde oyun süresini izleyebilen bir beta sürümü yayımladım . Test kullanıcıları Debian paketini deneyebilirler. Nasıl indirileceğini ve kullanılacağına ilişkin talimatlar burada bulunabilir: https://github.com/marcus67/little_brother . Kurulum yine de biraz zor olabilir. Uygulamanın özellikleri şunlardır:

  • İstediğiniz sayıda kullanıcı izlenebilir.
  • Her kullanıcı, izin verilen çalma süresini tanımlayan belirli bir kurallar kümesine sahip olabilir.
  • Kurallar, haftanın günü ve / veya tatil takvimi gibi "bağlamlara" uyarlanabilir (şu anda yalnızca Almanca programları desteklenmektedir).
  • Çalma süresi bir zaman penceresi (ile, arası) ile sınırlandırılabilir.
  • Gün başına maksimum oyun süresi tanımlanabilir.
  • Kullanıcılar belirli bir maksimum oturum süresinden sonra bir ara vermeye zorlanabilir.
  • Kullanıcılar, faaliyetlerinden sonra minimum bir mola vermesi için zorlanabilir.
  • Herhangi bir sayıda Linux istemcisi ana bilgisayarı izlenebilir (şu anda bu, kullanıcıların tüm makinelerde aynı oturum açmasını gerektirir).
  • Tüm kullanıcıların faaliyetlerinin geçmişi olan bir ana bilgisayar var. Bu ana ana sistem kural kümelerini denetler ve istemci ana makinelerinin gerektiğinde işlemleri sonlandırmasını ister.
  • Ana sunucu, kullanıcı aktivitesini yapılandırılmış bir geçmiş uzunluğu (örneğin 7 gün) boyunca görüntülemek için basit bir web arayüzü ve yapılandırılmış sayıda gün boyunca kural istisnalarını dinamik olarak tanımlamak için bir yönetim sayfası sunar.
  • Web uygulaması proxy arkasında çalıştırılabilir, böylece daha fazla oyun süresi için yalvaran genç kullanıcılardan gelen çağrıları aldıktan sonra uzaktan yönetime izin verecek şekilde uzaktan erişilebilir olacaktır.
  • Uygulama uluslararası dil desteğine sahiptir. Şu anda İngilizce ve Almanca çeviri verilmektedir. Kullanıcılar, diğer dillere çeviri yapmak için davet edilir.
  • Uygulama kullanıcıyı yaklaşmakta olan zorunlu oturum kapatmaları konusunda bilgilendirmek için ses üretmeyi kullanır. Ayrıca bu sözlü mesajlar uluslararasılaştırılmıştır.
  • Linux ana bilgisayarlarına harcanan zamana ek olarak, uygulama akıllı telefonlar veya masalar gibi diğer cihazlardaki etkinlik süresini de izleyebilir. Çoğu modern işletim sisteminin, cihazları kullanılmadıkları sırada bir tür güç tasarrufu moduna geçirmesi gerçeğinden yararlanır. Bu yolla, ağ tepkisi (ping yaparak) bu cihazlardaki etkinliği belirlemek için kullanılabilir. Linux ana bilgisayarlarının aksine, uygulama etkinliği sonlandıramaz. Bununla birlikte, oyun süresi genel oyun süresine eklenecek ve bu nedenle izin verilen süreyi ve ayrıca Linux ana bilgisayarlarındaki izin verme süresi kurallarını etkileyecektir.

Bazı ekran görüntüleri:

Durum Sayfası Yönetim Sayfası

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.