Puncte:0

Cum păstrez permisiunea la reporniri pentru ca un script să scrie în `/sys/class/backlight/acpi_video0/brightness`?

drapel ru

Am scris un script care îmi permite să comut între luminozitatea ecranului laptopului meu (rug dacă de la o tastă rapidă legată de xbindkeys),
dar implică scrisul către /sys/class/backlight/acpi_video0/brightness.

Deocamdată, tocmai l-am făcut capabil să scriu în acel fișier făcând
sudo chown $USER: /sys/class/backlight/acpi_video0/brightness
dar asta se resetează de fiecare dată când repornesc laptopul,
așa că trebuie să-l reluez înainte de a putea folosi tasta rapidă.

Care este modalitatea corectă și persistentă de a face acest lucru?



EDIT_3 (adică, adăugat după cele 2 editări de mai jos) (tehnic „răspunsul”):

M-am săturat să încerc să fac lucrurile udev să funcționeze,
și (după multă confuzie (o cantitate necunoscută din care a fost cauzată de faptul că am dactilografiat și am ratat „t” din „luminozitate”))
in sfarsit a reusit sa functioneze asa:

(Pentru a fi explicit, mea echo $USER este o1.)

Asa de


  • (1)

Am creat un fisier:
/home/o1/.icanhasbrightness.sh
conținând:

#!/usr/bin/bash  
chown o1: /sys/class/backlight/acpi_video0/brightness  

  • (2)

Am facut:
> sudo chown root:root /home/o1/.icanhasbrightness.sh
și
> sudo chmod 0711 /home/o1/.icanhasbrightness.sh
(
astfel încât
> stat /home/o1/.icanhasbrightness.sh|head -n 4|tail -n 1
#=>
Acces: (0711/-rwx--x--x) Uid: ( 0/ rădăcină) Gid: ( 0/ rădăcină)
)


  • (3)

Am facut:
> sudo visudo
și a adăugat linia:
o1 ALL=(ALL) NOPASSWD: /home/o1/.icanhasbrightness.sh


  • (4)

Mi-am modificat funcția fishshell pentru a verifica dacă sunt nu proprietarul fișierului de luminozitate și, dacă nu, rulați acel script.
(

funcția brightness_set_current  
    #todo, acesta este în mod practic modul „greșit” de a gestiona asta, dar orice funcționează  
        dacă testează $USER != (stat -c %U /sys/class/backlight/acpi_video0/brightness)  
            sudo /home/o1/.icanhasbrightness.sh  
        Sfârşit  
    echo $argv > /sys/class/backlight/acpi_video0/brightness  
Sfârşit  

)


... Deci, cred că asta răspunde tehnic la propria mea întrebare, dar...

  • (1) Simt că acesta este probabil modul „greșit” de a face acest lucru (?)
  • (2) M-am săturat să mă încurc cu asta până acum încât oricum nu am chef să-l postez un „răspuns” chiar acum

(((
Și în beneficiul oricăror echivalente ipotetice viitoare ale sinelui meu trecut
(
adică, fără a avea legătură cu întrebarea reală la care încercam să obțin un răspuns aici,
dar o voi lăsa aici deocamdată și voi găsi un loc mai bun pentru a o pune mai târziu, unde este probabil să fie văzută de cineva care l-ar găsi util
),
care doresc doar o tastă rapidă pentru a comuta luminozitatea și temperatura de culoare a ecranului,
apoi, presupunând că utilizați deja fishshell (și știți să le salvați ca funcții de încărcare automată și toate astea), codul a fost:

funcția brightness_get_current
    cat /sys/class/backlight/acpi_video0/brightness
Sfârşit

funcția brightness_set_current
    #td REPARAT(?)
        dacă testează $USER != (stat -c %U /sys/class/backlight/acpi_video0/brightness)
            sudo /home/o1/.icanhasbrightness.sh
        Sfârşit
    echo $argv > /sys/class/backlight/acpi_video0/brightness
Sfârşit

function brightness_get_max --description 'luminozitate maxima, mb'
    cat /sys/class/backlight/acpi_video0/max_brightness
Sfârşit

function brightness_set_max --description 'luminozitate maxima, mb'
    brightness_set_current (luminozitate_get_max)
Sfârşit

funcția brightness_toggle
    #
        #
            set -l verbose $argv
            set -l curent_luminozitate (luminozitate_obține_curent)
            set -l current_ct (xsct|g --nocolor -o '\d+$')
                #bk
                    # echo current_ct $current_ct
        #
            set -l luminozitate
                dacă testează $curent_luminozitate -eq 0
                    setați luminozitatea „min”
                altfel, dacă testează $current_brightness -eq (luminozitate_get_max)
                    setați luminozitatea „max”
                altfel
                    setați luminozitatea „mid”
                Sfârşit
            set -l roșeață
                dacă testează $current_ct -eq 1000
                    setează roșeața „roșu”
                altfel, dacă testează $current_ct -lt 1000
                    setați roșeața „red_super”
                altfel, dacă testează $current_ct -lt 700
                    setați roșeața „red_impossible”
                altfel, dacă testează $current_ct -lt 6500
                    setează roșeața „la mijloc”
                altfel, dacă testează $current_ct -eq 6500
                    setează roșeața „alb”
                altfel
                    setează roșeața „albastru”
                Sfârşit
        #
            funcția brightness_set_to_max_white
                luminozitate_set_max
                D0 xsct 0 #adică 6500
            Sfârşit
            funcția brightness_set_to_min_red
                luminozitate_set_curent 0
                D0 xsct 1000
            Sfârşit
            funcția brightness_set_to_min_white
                luminozitate_set_curent 0
                D0 xsct 0 #adică 6500
            Sfârşit
        #
            #bk
                dacă testul „$verbos”
                    echo \t'starea curentă:'
                    ecou \t\t'luminozitate:' \t$luminozitate
                    ecou \t\t'roșeață:' \t$roșeață
                Sfârşit
            #
                dacă testul „$luminozitate” = „max” -a „$roșeață” = „alb”
                    #bk
                        testul „$verbos”
                        și ecou „1 - setare la min_red (de la max_white)”
                    luminozitate_setată_la_min_roșu
                altfel, dacă testul „$luminozitate” = „min” -a „$roșeață” = „roșu”
                    #bk
                        testul „$verbos”
                        și ecou „2 - setare la min_white (de la min_red)”
                    luminozitatea_setată_la_min_alb
                altfel, dacă testul „$luminozitate” = „min” -a „$roșeață” = „alb”
                    #bk
                        testul „$verbos”
                        și ecou „3 - setare la max_white (de la min_white)”
                    luminozitatea_setată_la_max_alb
                altfel
                    #bk
                        testul „$verbos”
                        și ecou „4 - setare la max_white (de la altele)”
                    luminozitatea_setată_la_max_alb
                Sfârşit
Sfârşit

și să-l lege de o cheie,
Tocmai am pus în ~/.xbindkeysrc acest continut:

„pește -c „luminozitate_toggle””
  Mod4 + mai puțin

(Mod4 + mai puțin doar fiind ce xbindkeys -mk mi-a spus că se numește combinația de taste când am apăsat-o)

... da, cu excepția instalării xsct trebuie sa faci si tu
> clona git „https://github.com/faf0/sct.git”
(în timp ce în orice director doriți, sct dir pentru a ajunge în)
atunci
> sudo apt install libxrandr-dev (o dependență de care aveți nevoie pentru a o compila)
apoi (în timp ce în acel sct dir creat de clona git-ing)
> sudo make install

(
De asemenea, am configurat taste rapide pentru a inversa ce margine a ecranului este „sus”
(care se bazează și pe asta luminozitate_set_curent funcția pentru că, cel puțin pentru mine, folosesc xrandr -o se încurcă cu luminozitatea dintr-un anumit motiv)
cu coajă de pește:

function screen_orientation --description 'orientarea ecranului/monitorului - argumentele posibile sunt normale/stânga/dreapta/inversate'
    setați luminozitatea curentă (cat /sys/class/backlight/acpi_video-0/max_brightness)
    xrandr -o $argv
    și brightness_set_current $current_brightness

    # cred că nu am nevoie de asta cu adevărat?
        # dacă thnpadd
        # azot --restaurare
        # # și D0 azot --restaurare
        # Sfârşit
Sfârşit

și ~/.xbindkeysrc:

"fish -c 'screen_orientation left'"  
  Mod4 + Stânga  
„peste -c „orientarea_ecranului normal””  
  Mod4 + Up  
"fish -c 'screen_orientation right'"  
  Mod4 + Dreapta  
„peste -c „orientarea_ecranului inversat””  
  Mod4 + Jos  

)
)))




EDIT_1 ("udev poate?"):

am gasit pe arhiwiki:

Implicit, numai rădăcină poate modifica luminozitatea prin această metodă. Pentru a permite utilizatorilor în [de exemplu] video grup pentru a modifica luminozitatea, se poate folosi o regulă udev, cum ar fi următoarea:
[scrieți în acest fișier:]
/etc/udev/rules.d/backlight.rules
[acest continut:]
ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="acpi_video0", GROUP="video", MODE="0664"

Așa că am făcut asta, apoi am făcut:
sudo groupadd video
și:
sudo usermod -aG video o1
(
Ei bine, presupunând că îmi amintesc corect exact ce am făcut, în ce ordine,
dar indiferent, grupuri $USER face confirm că eu a.m în video grup.
)

dar după repornire, totuși, încercând să-i scriu astfel:
> echo 5 > /sys/class/backlight/acpi_video0/brightness
#=>

avertisment: a apărut o eroare la redirecționarea fișierului „/sys/class/backlight/acpi_video0/brightness”  
deschis: Permisiune refuzată  

și asta:
> stat /sys/class/backlight/acpi_video0/brightness
#=>

  Fișier: /sys/class/backlight/acpi_video0/brightness  
  Dimensiune: 4096 Blocuri: 0 Bloc IO: 4096 fișier obișnuit  
Dispozitiv: 16h/22d Inode: 22741 Link-uri: 1  
Acces: (0644/-rw-r--r--) Uid: ( 0/ rădăcină) Gid: ( 0/ rădăcină)  
Acces: 2021-09-24 10:51:53.894540644 -0700  
Modificare: 2021-09-24 10:51:53.888124116 -0700  
Modificare: 2021-09-24 10:51:53.888124116 -0700  
 Naștere: -  

ceea ce înseamnă că este încă doar rădăcină care are permisiuni de scriere la fișier, nu?

Regula aia udev a fost ar trebui să... schimbe proprietarul fișierului în video grup, nu?
(
Presupunând că „acest fișier este deținut de acest grup” înseamnă că conceptul și/sau terminologia sunt corecte...?
În orice caz, trebuia să dea video permisiunea de scriere de grup pentru fișier, nu?
)

Deci de ce nu a funcționat?
-- Adică, din moment ce nu pot să sară exact pe arc și să încerc,
eu pot doar presupune asta am facut ar fi lucrat pe arc(?),
deci prin ce diferă ubuntu?


EDIT_2 ("udev ar trebui să muncă??"):

Din cate pot intelege acest tutorial udev,
aceasta ar trebui să muncă?
(
Sau, în orice caz, asta face Spune:
Citirea fișierului regulilor: /etc/udev/rules.d/backlight.rules
-- dar nu spune ceva despre "GRUP"SAU"MOD".
)

(Am încercat și să schimb =la :='s (pentru a „a se asigura că nu este depășit de alte reguli”), pentru orice eventualitate.)

> udevadm info -a /sys/class/backlight/acpi_video0/
#=>

    Udevadm info începe cu dispozitivul specificat de devpath și apoi  
    urcă pe lanțul de dispozitive părinte. Imprimă pentru fiecare dispozitiv  
    găsite, toate atributele posibile în formatul cheii regulilor udev.  
    O regulă care să se potrivească, poate fi compusă de atributele dispozitivului  
    și atributele de la un singur dispozitiv părinte.

      Privind dispozitivul „/devices/pci0000:00/0000:00:01.0/backlight/acpi_video0”:  
        KERNEL=="acpi_video0"  
        SUBSYSTEM="backlight"  
        DRIVER==""  
        ATTR{max_brightness}=="15"  
        ATTR{actual_brightness}=="15"  
        ATTR{bl_power}="0"  
        ATTR{type}="firmware"  
        ATTR{luminozitate}=="15"  
        ATTR{scale}=="necunoscut"

      Privind dispozitivul părinte „/devices/pci0000:00/0000:00:01.0”:  
        KERNELS="0000:00:01.0"  
        SUBSYSTEMS=="pci"  
        DRIVERS=="radeon"  
        ATTRS{local_cpulist}=="0-1"  
        ATTRS{msi_bus}=="1"  
        ATTRS{max_link_width}=="255"  
        ATTRS{consistent_dma_mask_bits}=="40"  
        ATTRS{driver_override}=="(null)"  
        ATTRS{power_dpm_state}=="echilibrat"  
        ATTRS{revision}=="0x00"  
        ATTRS{device}=="0x9648"  
        ATTRS{local_cpus}=="3"  
        ATTRS{subsystem_device}=="0x21ea"  
        ATTRS{d3cold_allowed}=="1"  
        ATTRS{power_method}=="dpm"  
        ATTRS{numa_node}=="-1"  
        ATTRS{broken_parity_status}=="0"  
        ATTRS{power_state}=="D0"  
        ATTRS{boot_vga}=="1"  
        ATTRS{irq}=="31"  
        ATTRS{current_link_width}=="0"  
        ATTRS{current_link_speed}=="Necunoscut"  
        ATTRS{class}="0x030000"  
        ATTRS{power_profile}=="implicit"  
        ATTRS{dma_mask_bits}=="40"  
        ATTRS{vendor}=="0x1002"  
        ATTRS{subsystem_vendor}=="0x17aa"  
        ATTRS{activare}=="1"  
        ATTRS{power_dpm_force_performance_level}=="auto"  
        ATTRS{ari_enabled}=="0"  
        ATTRS{max_link_speed}=="Necunoscut"

      privind dispozitivul părinte „/devices/pci0000:00”:  
        KERNELS=="pci0000:00"  
        SUBSISTEME==""  
        ȘOFERI==""  

și:
> test udevadm --action="add" '/devices/pci0000:00/0000:00:01.0/backlight/acpi_video0'
#=>

    Încărcați indexul modulului  
    Fișierul de configurare analizat /usr/lib/systemd/network/99-default.link  
    Fișier de configurare analizat /usr/lib/systemd/network/73-usb-net-by-mac.link  
    S-a creat contextul de configurare a legăturii.  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/39-usbmuxd.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/40-usb-media-players.rules  
    Citirea fișierului cu reguli: /usr/lib/udev/rules.d/40-usb_modeswitch.rules  
    Citirea fișierului cu reguli: /usr/lib/udev/rules.d/40-vm-hotadd.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/50-apport.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/50-firmware.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/50-udev-default.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/55-dm.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/55-ippusbxd.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/56-hpmud.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/56-lvm.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-autosuspend-chromiumos.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-block.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-cdrom_id.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-crda.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-drm.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-evdev.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-fido-id.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-input-id.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-inputattach.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-libgphoto2-6.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-libsane.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-pcmcia.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-persistent-alsa.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-persistent-input.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-persistent-storage-dm.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-persistent-storage-tape.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-persistent-storage.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-persistent-v4l.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-sensor.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-serial.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/60-tpm-udev.rules  
    Citirea fișierului cu reguli: /usr/lib/udev/rules.d/61-autosuspend-manual.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/61-kde-bluetooth-rfkill.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/61-persistent-storage-android.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/64-btrfs.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/64-xorg-xkb.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/65-libwacom.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/66-snapd-autoimport.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/69-cd-sensors.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/69-libmtp.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/69-lvm-metad.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/69-wacom.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/70-joystick.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/70-mouse.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/70-pcspkr-beep.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/70-power-switch.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/70-printers.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/70-spice-vdagentd.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/70-touchpad.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/70-u2f.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/70-uaccess.rules  
    Citiți fișierul regulilor: /usr/lib/udev/rules.d/71-power-switch-proliant.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/71-seat.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/71-u-d-c-gpu-detection.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/73-seat-late.rules  
    Citirea fișierului cu reguli: /usr/lib/udev/rules.d/73-special-net-names.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/75-net-description.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/75-probe_mtd.rules  
    Citiți fișierul regulilor: /usr/lib/udev/rules.d/77-mm-broadmobi-port-types.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-cinterion-port-types.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-dell-port-types.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-dlink-port-types.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-ericsson-mbm.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-fibocom-port-types.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-foxconn-port-types.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-gosuncn-port-types.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-haier-port-types.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-huawei-net-port-types.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-longcheer-port-types.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-mtk-port-types.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-nokia-port-types.rules  
    Citiți fișierul regulilor: /usr/lib/udev/rules.d/77-mm-pcmcia-device-blacklist.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-qdl-device-blacklist.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-quectel-port-types.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-sierra.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-simtech-port-types.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-telit-port-types.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-tplink-port-types.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-ublox-port-types.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-usb-device-blacklist.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-usb-serial-adapters-greylist.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-x22x-port-types.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/77-mm-zte-port-types.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/78-graphics-card.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/78-sound-card.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/80-debian-compat.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/80-drivers.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/80-iio-sensor-proxy.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/80-libinput-device-groups.rules  
    Citiți fișierul regulilor: /usr/lib/udev/rules.d/80-mm-candidate.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/80-net-setup-link.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/80-udisks2.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/81-net-dhcp.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/84-nm-drivers.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/85-hdparm.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/85-hplj10xx.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/85-nm-unmanaged.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/85-regulatory.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/85-tlp-rdw.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/85-tlp.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/90-alsa-restore.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/90-bolt.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/90-console-setup.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/90-fwupd-devices.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/90-libinput-fuzz-override.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/90-nm-thunderbolt.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/90-pulseaudio.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/95-cd-devices.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/95-dm-notify.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/95-upower-csr.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/95-upower-hid.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/95-upower-hidpp.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/95-upower-wup.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/96-e2scrub.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/97-hid2hci.rules  
    Citirea fișierului regulilor: /usr/lib/udev/rules.d/99-systemd.rules  
    Citirea fișierului regulilor: /etc/udev/rules.d/backlight.rules  
    Descărcați indexul modulului  
    Context de configurare a linkului descărcat.  
    Acest program este doar pentru depanare, nu rulează niciun program  
    specificat de o tastă RUN. Poate arăta rezultate incorecte, deoarece  
    unele valori pot fi diferite sau nu sunt disponibile la o rulare de simulare.

    DEVPATH=/devices/pci0000:00/0000:00:01.0/backlight/acpi_video0  
    ACTION=adaugă  
    SUBSYSTEM=iluminare de fundal  
    TAGS=:seat:systemd:  
    ID_PATH=pci-0000:00:01.0  
    ID_PATH_TAG=pci-0000_00_01_0  
    ID_FOR_SEAT=backlight-pci-0000_00_01_0  
    SYSTEMD_WANTS=systemd-backlight@backlight:acpi_video0.service  
    USEC_INITIALIZED=2680045  
Puncte:-1
drapel it

Acest răspuns prelungit ar putea Ajutor.

Multe probleme de acces la dispozitive pot fi rezolvate prin modificări de apartenență la grup.

Puteți găsi numele dispozitivului urmărind sudo journalctl --follow pe măsură ce vă conectați dispozitivul. SAU ls -1 /dev >dev.before, conectați dispozitivul, așteptați 10 secunde, ls -1 /dev >dev.after;diff dev.{inainte,după}.

Mai exact, dacă ls -l arată că permisiunile de grup (al doilea "rwx"triplet) este"rw" (de exemplu."-rw-rw----"), apoi, adăugarea în grupul care deține dispozitivul va acorda rw acces.

Iată cum:

device="/dev/whatever"
sudo adduser $USER $(stat -c „%G” $dispozitiv)

Acest lucru vă permite apartenența la grupul care poate rw dispozitivul, dar mai este un pas.

Pentru a face toate procesele membre ale noului grup, deconectați-vă și autentificați-vă. Membrii grupurilor sunt stabilite la Autentificare timp.

Pentru a crea un singur proces în noul grup (pentru testare, înainte de deconectare/autentificare):

newgrp $(stat -c „%G” $dispozitiv)  

sau, doar introduceți numele grupului. Vedea man newgrp.

drapel ru
„pe măsură ce vă conectați dispozitivul”? Este ecranul laptopului; Eu nu-l "conectez" niciodată...???
drapel ru
De exemplu, grupul care îl deține (`stat -c %G /sys/class/backlight/acpi_video0/brightness`) este doar `rădăcină`, astfel încât răspunsul se reduce probabil la „adăugați `$USER` la grupul `rădăcină `", nu? Care este fără îndoială... nici măcar un răspuns?

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.