GNU/Linux >> Znalost Linux >  >> Ubuntu

Zabránit uzamčení externích zařízení ke spouštěči?

Pokud připojím externí zařízení (jako je USB klíč nebo smartphone s Androidem), automaticky se otevře v nautilus a získá odpovídající ikonu uzamčenou na spouštěči unity. Existuje nějaký způsob, jak tomu zabránit?

Používám Ubuntu 14.04

Přijatá odpověď:

Pokud odemknete zařízení ze spouštěče Unity, bude ve skutečnosti na černé listině ze spouštěče. Můžete zjistit, která zařízení jsou aktuálně na černé listině pomocí příkazu:

gsettings get com.canonical.Unity.Devices blacklist

Níže uvedený skript představuje alternativní způsob nastavení vlastních zařízení na černé listině . Rozdíl je v tom, že skript to dělá permanentně, dokud neodstraníte soubor ~/.blacklist_data . (viz vysvětlení:Jak to funguje )

skript na pozadí

I pro skript na pozadí je tento extrémně nízká hmotnost v důsledku skutečnosti, že pokud se na černé listině nic nezmění, pomocí gsettings se přečte pouze aktuální černá listina příkaz. Přečte dconf databáze, která je v binary formátu, a tedy velmi nízké hmotnosti.

Skript

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

blacklist_data = os.environ["HOME"]+"/.blacklist_data"

def get_setlist():
    cmd = "gsettings get com.canonical.Unity.Devices blacklist"
    blacklist = subprocess.check_output(["/bin/bash", "-c", cmd]).decode("utf-8").strip()
    return "[]" if blacklist == "@as []" else blacklist

try:
    blacklist1 = str(open(blacklist_data).read()).strip()
    cmd = 'gsettings set com.canonical.Unity.Devices blacklist "'+blacklist1+'"'
    subprocess.call(["/bin/bash", "-c", cmd])
except FileNotFoundError:
    blacklist1 = "[]"
    open(blacklist_data, "wt").write(blacklist1)

while True:
    time.sleep(1)
    blacklist2 = get_setlist()
    if blacklist2 != blacklist1:
        oldlist = open(blacklist_data).read().strip()
        n_old = len(eval(oldlist))
        try:
            n_new = len(eval(blacklist2))
        except SyntaxError:
            n_new = 0
        if n_old < n_new:
            open(blacklist_data, "wt").write(blacklist2)
        else:
            cmd = 'gsettings set com.canonical.Unity.Devices blacklist "'+oldlist+'"'
            subprocess.call(["/bin/bash", "-c", cmd])
    blacklist1 = blacklist2

Jak používat

  1. Zkopírujte skript do prázdného souboru a uložte jej jako myown_blacklist.py
  2. Test- spusťte jej příkazem:

    python3 /pat/to/myown_blacklist.py`
    

    Nyní odemkněte svá (jakákoli, funguje nejen zařízení USB) nechtěná zařízení. Odemknutí je potřeba pouze jednou.

  3. Pokud vše funguje dobře, přidejte jej do Startup Applications:zvolte Dash> Startup Applications> Add. Přidejte příkaz:

    python3 /pat/to/myown_blacklist.py`
    

Jak to funguje

Problém je v tom, že Unity „zapomene“ zařízení, jakmile jsou odpojena. Skript pak sleduje, co se stane s výstupem:

gsettings get com.canonical.Unity.Devices blacklist

Pokud je do seznamu přidána položka, skript zapíše seznam do skrytého souboru ve vašem domovském adresáři. Pokud je položka odstraněna, přečte skrytý soubor a obnoví černou listinu (toto je potřeba pouze jednou při odpojení zařízení)

Související:Balíček „grub-efi-amd64-signed“ se nepodařilo nainstalovat target/?
Ubuntu
  1. Zabránit přihlášení syslogů pod Journalctl?

  2. Přidávání vlastních aplikací do spouštěče Gnome?

  3. Jak nainstalovat externí pevný disk?

  1. Mohu pomocí služby VPS zabránit tomu, aby data byla zpřístupněna hostitelem VPS?

  2. Bluetooth nenajde zařízení!?

  3. Jak nastavit bezplatné e-maily cPanel na vašich zařízeních a externích e-mailových aplikacích?

  1. Potřebujete zabránit instalaci balíčku?

  2. Použití Udev k automatickému připojení externího HDD?

  3. Mohu zabránit vytvoření složky s určitým názvem?