Bir uygulamaya erişimi nasıl sınırlayabilir veya kısıtlayabilirim?


18

Oğlum bu Noel'de yeni bir dizüstü bilgisayar aldı, öncelikle yeni okulunda kullanım için ... Ve şimdi kendi dizüstü bilgisayarına sahip olduğu için Steam'in yüklü olması için hazır.

Ama eşim Steam'i çıkarmamı istiyor, çünkü dizüstü bilgisayar öncelikle okul kullanımı için ... eğer yapmam gerekirse, bunu yapmamayı tercih ederim.

Steam'e erişimi kısıtlamanın veya başka şekilde sınırlandırmamın bir yolu var mı? Steam'in kendisinde bir şifre mi yoksa çalıştırılacağı zamanları mı?

İdeal olarak , kullanımı oldukça basit bir şey olmalı, çünkü işim beni uzun süre evden (ve bilgisayarlardan ve telekomünikasyondan ve ...) uzak tutar ve eşim bilgisayarların etrafında benim kadar rahat olmasa da, kullanımı daha kolay, çok daha iyi.

Elbette bu görevi yerine getirebilecek bir şey var mı?


Buhar erişimini sınırlamak için yönlendiricinizdeki çocuk korumalı kilidi kullanabilirsiniz, örneğin günde 1 saat. Steam, istemci trafiği için UDP 27000 - 27015 bağlantı noktalarını kullanır. Yönlendiricinizdeki bu bağlantı noktalarını sınırlarsanız oğlunuz buhara giriş yapamaz.
Kev Inski

En basit çözüm Ubuntu'nuzda Steam'i yüklediğiniz bir kullanıcı profili oluşturmaktır. Oğlunuz tarafından kullanılacak yeni kullanıcı profili için bir şifre oluşturun.

@Begueradj Çocuklar akıllı olabilir. Bir makineye fiziksel erişim, olası kök erişimi anlamına gelir; bu, şifreleme dışındaki her şeyi atlayabileceğiniz anlamına gelir. Güvenli bir şekilde korumak için kullanıcının giriş dizinini şifrelemeniz gerekir.
Bayt Komutanı

@Gregory Oğlunuz bilgisayarlarla ne kadar akıllı? % 100 güvenli bir şeye mi ihtiyacınız var, yoksa Steam'e erişim önemsiz hale getiriliyorsa yeterli mi?
Bayt Komutanı

Yanıtlar:


2

Bir işlem veya uygulama için bir zaman sınırı belirleme

Küçük bir arka plan komut dosyasıyla, bir işlem veya uygulama için bir zaman sınırı belirleyebilirsiniz.
Kullanıcınız yönetici şifresini bilmediği sürece çok kolay aşılmaz.

Aşağıdaki çözüm

Böyle küçük bir arka plan komut dosyasıdır. Komut dosyasının başında ayarlamak için günlük kullanımı belirli bir dakika ile sınırlar. Bir kez (çok zor değil) kurulduktan sonra çok kolay çalışır ve daha sonra herhangi bir ek eyleme gerek yoktur.

Senaryo

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

#--- set the time limit below (minutes)
minutes = 1
#--- set the process name to limit below
app = "gedit"

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

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

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

    try:
        # if the pid of the targeted process exists, add a "tick" to the used quantum
        pid = subprocess.check_output(["pgrep", app]).decode("utf-8").strip()
        n = read(uselog)
        n = n + 1 if n != None else 0
        # when time exceeds the permitted amount, kill the process
        if n > minutes*6: 
            subprocess.Popen(["kill", pid])
        open(uselog, "wt").write(str(n))
    except subprocess.CalledProcessError:
        pass

    currday1 = currday2

Nasıl kullanılır

  1. Masaüstünüzde (veya başka bir yerde) şu adı taşıyan bir klasör oluşturun: limit
  2. Komut dosyasını boş bir dosyaya kopyalayın, klasörün içinelimit_use (uzantı yok) kaydedin ve yürütülebilir yapın
  3. Komut dosyasının başındaki işlem adını sınırlamak ve izin verilen maksimum dakika sayısını düzenleyin. Örnekte:

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

    cp -r /path/to/limit /opt
  5. Şimdi /etc/rc.local, komut dosyasının rootbaşlangıçta çalışmasını sağlamak için düzenleyin :

    sudo -i gedit /etc/rc.local

    Çizgiden hemen önce

    exit 0

    başka bir satır:

    /opt/limit/limit_use &

Bu kadar

Birisi arka plan komut dosyasını öldürmeye çalıştığında:

resim açıklamasını buraya girin

(eyleme izin verilmiyor)

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

  • 10 saniyede bir, komut dosyası, hedeflenen işlemin çalışıp çalışmadığını arar. Öyleyse, bir dosyaya kaydedilecek toplam kullanıma "bir" nokta "ekler ( /opt/limit/uselog). Günlük sınıra ulaşılırsa, komut dosyası artık işlemin çalışmasına izin vermez ve varsa öldürür.
  • Gün değişikliğinde (tarih bir dosyaya kaydedilir, bu nedenle yeniden başlatma yardımcı olmaz), günlük dosyası silinerek yeni bir kullanım süresinin oluşmasına izin verir.
  • Komut dosyası önyükleme sırasında çalıştığından, rc.localyalnızca sudo ayrıcalıklarına sahip kullanıcı (lar) dan komut dosyası, yalnızca kullanıcı işlem adını biliyorsa bile durdurabilir.

Betiği durdur

Komut dosyasını durdurmak isterseniz, şu komutu kullanın:

sudo kill "$(pgrep limit_use)"

Ama yine de, bunu yapmak için sudo şifresine ihtiyacınız olacak.




DÜZENLE

Komut yukarıdaki gibi @Bytecommander bahsettiği bir uygulamanın kullanımını sınırlayan bir makul güvenli bir yol vermelidir rağmen, olabilir olmasa çok kolay olmak geçmek. Aşağıdaki önlemle kombinasyon, oğlunuz kurulumu bilmedikçe ve Linux / Ubuntu ile oldukça deneyimli değilse, bunun gerçekleşme olasılığını ortadan kaldırır.

Ek önlem

"Basit bir çözümden" biraz daha uzak, ama yine de kurulumu çok zor olmayan aşağıdaki ek önlemdir. Eğer bizim şüphelenilen suçlu komut çağrılır öğrenmek istiyorum /etc/rc.local, kök olmak, yönetmek ve çizgi ortadan kaldıracaktır /etc/rc.local, veya yolu, bir sonraki sorun onu karşı karşıya getirebilir o senaryoyu durdurmak mümkün olacaktır: dışarı ekran siyahlar sonra Ayrıca, çözüm, arka plan komut dosyasının yeniden başlatıldıktan sonra 5 dakika sonra çalışıp çalışmadığını kontrol eder, değilse kararır.

Çizgi halinde ekstra önlem bir startup- kontroldür /opt/limit/limit_use &bulunur /etc/rc.local, ve komut dosyası hala çalışıyorsa 5 dakika sonra bir çek. Komut dosyası (Başlangıç ​​Uygulamalarından gizlenmiş) başlatıcıdan /etc/xdg/autostartçalıştığından, nasıl yapıldığını bilmediğiniz sürece ne olduğunu bulmak oldukça zor olacaktır . Bu iki önlemin birleşimi, oğlunuzun öğrenmesini pek mümkün kılmaz ve eğer yaparsa, muhtemelen hiçbir şey onu durduramaz.

Nasıl kurulur

İki basit adım söz konusudur:

  1. Aşağıdaki kodu boş bir dosyaya kopyalayın, blackout.desktopmasaüstünüzdeki gibi kaydedin:

    [Desktop Entry]
    Name=not allowed
    Exec=/bin/bash -c "sleep 15 && /usr/local/bin/blackout.py"
    Type=Application
    Terminal=false
    NoDisplay=true

    Dosyayı şuraya kopyalayın /etc/xdg/autostart:

    sudo cp /path/to/blackout.desktop /etc/xdg/autostart
  2. Aşağıdaki komut dosyasını boş bir dosyaya kopyalayın, blackout.pymasaüstünüze kaydedin, yürütülebilir yapın ve kopyalayın /usr/local/bin:

    cp /path/to/blackout.py /usr/local/bin

    Senaryo

    #!/usr/bin/env python3
    import subprocess
    import time
    
    def dim_screen():
        screen = [
            l.split()[0] for l in subprocess.check_output(["xrandr"]).decode("utf-8").splitlines()\
            if " connected" in l
            ]
        for scr in screen:
            subprocess.Popen(["xrandr", "--output", scr, "--brightness", "0"])
    
    if not "/opt/limit/limit_use &" in open("/etc/rc.local").read():
        dim_screen()
    
    time.sleep(300)
    
    try:
        pid = subprocess.check_output(["pgrep", "limit_use"]).decode("utf-8").strip()
    except subprocess.CalledProcessError:
        dim_screen()

açıklama

İçindeki başlatıcılar, /etc/xdg/autostarttüm kullanıcılar için bir uygulama başlatır (bu durumda ekstra güvenlik kontrolü). Bu olabilir lokal üzerine yazılır olabilir, ama bunu yapmak zorunda biliyorum çalışır yukarı çek. Çizgiyi NoDisplay=truefırlatıcımıza koyarak, yerel olarak görünmeyecektir Startup Applications, bu yüzden var olduğunu bilmeden keşfedilmesi olası değildir.

Dahası, oğlunuzun bulması için sadece 15 saniyesi vardır (o zaman ekran kararır), bu yüzden cömert değilse, Ubuntu ve yaratıcı bir zihinle ilgili çok fazla deneyimi vardır.


Ama oğlu kök parolayı kullanarak sisteme giriş yapabiliyorsa, o zaman düzenleyemez rc.localmi?
Raphael

1
@Rephael bu yüzden kullanıcı yönetici olmadığı sürece bahsetmiştim . Ama eğer öyleyse, pratikte hiçbir şey yeterince akıllıysa sonunda onu geçmesini engelleyemez.
Jacob Vlijm

Ikr, eğer linux konusunda bilgili ise veya google'ı verimli bir şekilde nasıl kullanacağını biliyorsa, sonunda cevapların hiçbiri işe yaramaz.
Raphael

1
@ByteCommander elbette doğrudur. Bununla birlikte , söz konusu ilgi (zamanı sınırlamak, oyun oynamak) göz önüne alındığında, talep edilen basit çözümün makul bir dengesi, sınırlı bir süre ve makul bir güvenlik düzeyi gibi görünüyor .
Jacob Vlijm

1
@JacobVlijm Evet, elbette. Sadece 8 yaşındaki çocuklarını bu şekilde uzak tutabileceklerine işaret ediyorum, ancak teknik bilgiye sahip bir genç olduğunda,% 100 güvenlik olmadığını bilmek zorundalar. (Gençlere biraz özgürlük atmak istemem)
Byte Commander

4

Bilgisayar oyunlarına erişimi kısıtlamak konusundaki kendi deneyimimden, çocuklarımızı eğitmek için en zor görevlerden biri. Tabii ki biz ebeveynler bilgisayarlarını çoğunlukla okul için kullanmalarını istiyoruz, ancak bu çocuğun niyetiyle büyük ölçüde çatışıyor. Onlardan sadece okul için kullanılabilir donanım sağladıkları için bizden nefret edecekler.

Ve tabii ki de onları iş için değil, aynı zamanda eğlence için sadece nasıl kullanılacağını da dahil olmak üzere mantıklı bir şekilde kendi bilgisayar kullanmayı öğrenmek istiyorum. Buna oyun oynama ve video izleme de dahildir.

Ne yazık ki, çocuğun bilgisayarını kısıtlamak için bakımlı ve çalışan ebeveyn kontrolleri Ubuntu için neredeyse mevcut değildir. Bir başka önemli konu, akıllı çocuklar olur olmaz tüm aldığımız önlemlerin boşuna olması. Farkına bile varmadan gerçekten akıllı olmaları durumunda her zaman kısıtlamalarımızın üstesinden gelmenin yollarını bulacaklar.

Çocuğun bilgisayarında çalışan herhangi bir engelleme yazılımı veya PAM kısıtlamaları yalnızca geçici olacaktır ve er ya da geç çok kolay bir şekilde aşılabilir. Bu nedenle, parola korumalı yönlendiricinin fiziksel erişimin daha kolay kontrol edilebildiği işi yapmasına izin verdik.

Yani şu anda oyun oynamayı biraz sınırlamak için yaptığımız şey aşağıdakilerin bir kombinasyonudur:

  • Bilgisayarları boş zaman için nasıl ve ne zaman kullanacaklarını ve okul için ne zaman kullanacaklarını eğitmek için onlarla konuşun . Bu, sürekli tartışmalara ve tartışmalara yol açan sürekli devam eden, oldukça sıkıcı bir süreçtir. Ancak uzun vadede sürecek olan tek şey budur.
  • Hesaplarında yönetici izni yok . Bu geçici bir şey. sudoEr ya da geç kendilerini gruba koyabileceklerini biliyoruz . Plan, bunu gizlemekten ziyade bizden bunu isteyecekleridir.
  • Açıkça tanımlanmış bilgi işlem süreleri için sözleşme yapın . Makinelerini ne için ve ne kadar süre kullanmalarına izin verildiğini bilmeleri gerekir. Bu zamanı okul ve eğlence için nasıl böleceklerini öğrenmeleri gerekiyor .
  • Uyku saatlerinde tüm interneti engelleyin .

Hem çocuklar hem de bizim için bilgisayar kullanımı ile ilgili sözleşmeyi yerine getirmek için aşağıdaki kısıtlamaları uyguladık:

  • Donanım (MAC) ve zaman çizelgesi esasına göre internet erişiminin kısıtlanmasına izin veren parola korumalı bir yönlendirici kullanın . MAC sahteciliği hakkında bilmedikleri sürece bu oldukça işe yarayacak. Ayrıca akıllı telefonları ve tabletleri aracılığıyla erişimi kısıtlayacaktır. Mahallenizde açık bir kablosuz ağ varsa, elbette bu işe yaramaz.
  • Çocukların bilgisayarlarına, kendi niyetlerinde kaybolmaları durumunda fişi çekmek için bir SSH sunucusu kurun . Bu acil durumlar için çok fazla ihtiyaç duymadığımız için memnunuz.
  • En kötüye erişimi engellemesi gereken bir DNS kara listesi (bilgisayar üzerinden değil yönlendirici üzerinden!) Yüklendi .

İnternet erişimini engellemek, oyunun Steam , Minecraft veya diğer oyun sunucuları gibi internet erişimine ihtiyacı varsa oyunu etkili bir şekilde devre dışı bırakır . Ancak, çevrimdışı çalışan oyunlar için herhangi bir etkisi olmayacaktır.


sshUygulamayı kullanarak veya sadece kapatmayı mı kastediyorsunuz ?
Raphael

Duruma bağlı olarak ... SSH her şeyi yapabilir, kapatabilir, kullanıcıyı öldürebilir, uygulamayı öldürebilir, korsanları geri alabilir, kullanıcıları sudo kullanıcılarından kaldırabilir, ... SSH için tüm çocuk kutularında bir üst yönetici hesabımız var.
Takkat

Güzel, kök olduklarında geri alabilecek tüm yerel şeyler dışında ek bir güvenlik katmanına sahip olan ilk kişisiniz (fiziksel erişime sahiplerse önlenemez).
Bayt Komutanı

0

Bu, kabuk betikleri kullanılarak elde edilebilir.

İlk komut Steam, çalıştırıldığı anda öldürmektir :

#!/bin/bash

while true
do
    pkill steam
    sleep 1
done

exit 0

Farklı kaydedin /path/to/anyname.shve başlangıç ​​uygulamaları listesine ekleyin.

Bu komut dosyasının yapacağı şey, steamsaniyede adlandırılan herhangi bir açık işlemi denetleyecek ve eğer bulursa, onu öldürecektir.

Ancak, steamoğlunuzun bu aralıkta oyun oynayabilmesi için belirli bir zamanda çalıştırılabilecek bir çözüme ihtiyacınız var . Bunu yapmak için başka bir komut dosyası yazmalısınız:

#!/bin/bash

    echo "pkill anyname.sh" | at 10:00

exit 0

Farklı kaydedin /path/to/anyname2.shve bunu başlangıç ​​uygulamaları listenize ekleyin.

Bu komut dosyası ilk komut dosyasını saat 10: 00'da öldürecektir. Yani, oğlunuz Steamsaat 10: 00'da koştuğunda. Şimdi oynayabilecek.

Üçüncü senaryo, ilk senaryoyu başka bir zamanda yeniden başlatmaktır, böylece Steambir zaman aralığından sonra öldürür ve oğlunuz Steamartık oyun oynayamaz .

#!/bin/bash

    echo "bash /path/to/anyname.sh" | at 12:00

exit 0

Farklı kaydedin /path/to/anyname3.shve başlangıç ​​uygulamaları listenize ekleyin.

Oğlunuzun öğrenmemesi için bu yolları gizli tuttuğunuzdan emin olun.


her başlatıldıktan sonra öldürmek yerine başlamasını durdurabileceğimiz bir yol yok mu?
Edward Torvalds

@edwardtorvalds - Hiç bilmiyorum, bu yüzden bu çözümü gönderdim.
Raphael

Cevabınızı onaylıyorum, ancak OP'nin ÇOK teknik bir yönteme değil, BASİT / KOLAY olması gerekiyor

Basit ve kolay, tüm op yapılması gereken komut dosyalarını kopyalayıp yapıştırmak bu dosyaları kaydeder ve başlangıç ​​uygulamalarına ekler, sonra unutun.
Raphael

kill loop - hayal edebileceğim en kirli.
Croll

0

Neden yeni Kullanıcı Hesabı kullanmıyorsunuz ( Sistem Ayarları üzerinden ). Linux'ta "izinler" için tek yöntem budur.

  1. Yeni kullanıcı "SteamUser" sudo kullanıcılarında olmamalıdır (yalnızca sınırlı bir hesap).
  2. Sonra "SuperAdmin" adlı ikinci bir hesap oluşturun ve hesabınızı sudoers hesabı yapın (root erişimi). Ancak şifresini sadece sizinle birlikte saklayın.
  3. Ardından oğlunuzun hesabını sudo kullanıcılarından kaldırın. ( sudogrup). Daha sonra bu hesabın root erişimi olmayacak, yazılım yükleyemeyecek veya kaldıramayacak, sistem genelindeki ayarları değiştiremeyecektir.
  4. "SuperAdmin" hesabınıza giriş yapın ve "SteamUser" dışında herhangi bir kişi tarafından çalıştırılmasını önlemek için steam ikili dosyaları ve buhar oyunları klasörünün sahipliğini değiştirin . Bu, "SteamUser" dışındaki herkesin okuma + yazma + yürütme erişimini kaldırmayı içerir

Birkaç not ..

  • Oğlunun hesabıyla root erişimi bırakma yeteneği yoktur, aksi takdirde izin kontrolü chown / chmod ile kolayca atlanır.
  • Arka plan komut dosyalarına dayanan diğer öneriler sadece kararsız karışıklıktır. Bu, umut verici olmadıkları anlamına gelir. Ancak, kurulumu kolay olabilir.
  • "SteamAccount" a aktarılacak klasör yolları: /home/son/.steamve tabii ki ikili dosya/usr/games/steam
  • Steam oynamak için "SteamUser" şifresi gereklidir ("SteamUser" ile oturum açmanız ve onları steam çalıştırmanız gerekir. Çok uzun süre oynamayı önlemek için oturumu kilitledikten sonra süresi dolacak yöntemleri aramayı deneyebilirsiniz. bunun gibi araçlar olup olmadığından emin değilim, ancak zaman sınırlarını ayarlamak teknik olarak mümkündür, ancak oturumlar için değil, programlar için.

Ah, inandığımı bulduğuma inanıyorum ...
Jacob Vlijm

Bu gerçekten güvenli değil, çünkü yeterince akıllı çocuklar (google'ı kullanabilmek ve adım adım bir kılavuzu takip etmek zaten yeterli) fiziksel erişime sahiplerse kullanıcı kısıtlamalarını kolayca atlayabilir.
Bayt Komutanı

@ByteCommander en azından arka plan komut dosyalarından daha güvenilirdir. Ama evet haklısın. Tıpkı Windows'ta olduğu gibi. Her yerde olduğu gibi.
Croll

Suç yok, ama bu nasıl daha güvenli?
Jacob Vlijm

Ve çocuğun ne kadar süre Steam'i kullanabileceği için bir zaman sınırı nasıl belirlemek istersiniz? İzin verilen okul malzemeleri ne olacak? Bunun için başka bir hesap mı? Kişi başına çok fazla hesabı olan sistemlerden kişisel olarak nefret ediyorum, çünkü paylaşılan ayarlar vb.
Byte Commander
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.