Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

[gelöst] Schreibrechte auf Gerätedatei /etc/nvram

Alles rund um die Systemverwaltung, die Administration und Konfiguration Eures Linuxsystems

Moderator: Moderatoren

Antworten
vgruetzm
Newbie
Newbie
Beiträge: 28
Registriert: 22. Aug 2006, 14:48
Wohnort: Nieder-Olm

[gelöst] Schreibrechte auf Gerätedatei /etc/nvram

Beitrag von vgruetzm » 13. Jan 2008, 12:07

Moin Leute,
habe ein kleines Problem. Ich möchte auf meinem Laptop (IBM T23) das Thinkpad-KMilo-Plugin laufen lassen (zur Steuerung von Bildschirmhelligkeit, Lautstärke etc.). Dazu ist es notwendig, das die Datei /etc/nvram existiert und auch für den normalen Benutzer beschreibbar ist.
Nun das Problem:
Die Datei existiert bzw. ich habe sie als root mit

Code: Alles auswählen

/bin/mknod /dev/nvram c 10 144
wie gefordert als character device angelegt und anschließend mit

Code: Alles auswählen

/bin/chmod 777 dev/nvram
für jeden Benutzer les- und schreibbar gemacht. Funktioniert soweit auch ganz gut. Nach einem Neustart sind die Lese- und Schreibrechte für den normalen Benutzer allerdings flöten gegangen.

Nun meine Frage:
Wie kann ich die Lese- und Schreibberechtigung erhalten bzw. beim Neustart automatisch setzen? Ich habe das zunächst in der Datei /etc/init.d/boot.local versucht (Änderungen in rot):
  • #! /bin/sh
    #
    # Copyright (c) 2002 SuSE Linux AG Nuernberg, Germany. All rights reserved.
    #
    # Author: Werner Fink <werner@suse.de>, 1996
    # Burchard Steinbild, 1996
    #
    # /etc/init.d/boot.local
    #
    # script with local commands to be executed from init on system startup
    #
    # Here you should add things, that should happen directly after booting
    # before we're going to the first run level.
    #
    # echo ... creating /dev/nvram ...
    rm /dev/nvram >nul
    /bin/mknod /dev/nvram c 10 144
    /bin/chmod 777 dev/nvram
allerdings ohne Erfolg. Offensichtlich werden die Rechte für nvram später während des Bootvorganges noch mal neu gesetzt. Wo? Ich habe mir als nächstes überlegt, ob man das in die Init-Scripten unter /etc/init.d/... beim Booten einbauen kann, habe aber keine Ahnung wie. In welchem Runlevel müßte man das tun? 5? Wie müßte das Script dazu aussehen bzw. kann/sollte man das in ein bestehendes Script einbauen?

Ich bin für jede Hilfe dankbar. :roll:

Ein paar Daten zu meinem System
- IBM Thinkpad T23
- SuSE 10.0, Kernel 2.6.13-15.18-default[/i]
Zuletzt geändert von vgruetzm am 9. Mär 2008, 14:51, insgesamt 1-mal geändert.
Lenovo Thinkpad X60, SuSE 13.2
Lenovo Thinkpad X61s, SuSE 13.2

Werbung:
Nilres
Member
Member
Beiträge: 222
Registriert: 13. Jun 2006, 18:02
Wohnort: Achim
Kontaktdaten:

Beitrag von Nilres » 13. Jan 2008, 12:55


gameboy
Hacker
Hacker
Beiträge: 794
Registriert: 5. Aug 2005, 10:27
Wohnort: Hessen / MKK

Beitrag von gameboy » 13. Jan 2008, 13:19

Also unter Suse 10.0 konnte man die Berechtigungen auf Devices noch über die Datei /etc/logindevperm konfigurieren. Auf meinem heutigen Suse 10.3-System suche ich die Datei jedoch vergeblich... - weiß jemand, wo die Permissions nun definiert werden?

Viele Grüße,
gameboy.

jengelh
Guru
Guru
Beiträge: 4039
Registriert: 20. Nov 2004, 17:42
Kontaktdaten:

Beitrag von jengelh » 13. Jan 2008, 13:36

Hättest du nicht einfach nur das Kernelmodul "nvram" laden müssen...

vgruetzm
Newbie
Newbie
Beiträge: 28
Registriert: 22. Aug 2006, 14:48
Wohnort: Nieder-Olm

Beitrag von vgruetzm » 13. Jan 2008, 15:09

@gameboy
danke für den Tip,die Datei kannte ich noch gar nicht :idea:
Ich probiere mal, ob ich damit weiter komme.

@Nilres
sowas hatte ich gesucht, hab's aber nicht gefunden. Danke für den Link, ich les mir das mal durch und schau mal, ob ich damit zurecht komme.

@jengelh
Das nvram Modul ist geladen, soweit ich das sehe; lsmod gibt mir folgendes aus:

Code: Alles auswählen

ThinkpadT23:/lib/modules/2.6.13-15.18-default # lsmod | grep nvram
nvram                   8328  0
0 heißt doch allerdings soviel wie nicht benutzt, korrekt?
Wie bereits oben erwähnt, unter root funktioniert das alles prima, nur unter einem normalen Benutzer nicht.

An alle nochmal vielen Dank, ich habe jetzt ja erstmal was zu tun
:lol:
Zuletzt geändert von vgruetzm am 13. Jan 2008, 17:50, insgesamt 1-mal geändert.
Lenovo Thinkpad X60, SuSE 13.2
Lenovo Thinkpad X61s, SuSE 13.2

vgruetzm
Newbie
Newbie
Beiträge: 28
Registriert: 22. Aug 2006, 14:48
Wohnort: Nieder-Olm

Beitrag von vgruetzm » 13. Jan 2008, 17:49

... so, habe einiges ausprobiert, aber noch so richtig keinen Erfolg gehabt.

@Nilres
Habe wie im Link beschrieben ein Script nvramconfig geschrieben:

Code: Alles auswählen

### BEGIN INIT INFO 
# Provides: nvramconfig
# Required-Start:
# Required-Stop: 
# Default-Start: 5 
# Default-Stop: 
# Description: make /dev/nvram usable for all users 
### END INIT INFO
/bin/chmod 777 /dev/nvram
Bin mal davon ausgegangen, daß das nur im Runlevel 5 benötigt wird.

Anschließend mit

Code: Alles auswählen

chmod +x nvramconfig
ausführbar gemacht, mit

Code: Alles auswählen

insserv nvramconfig
aktiviert und einen Link in /usr/sbin mit dem Befehl

Code: Alles auswählen

ln -s /etc/init.d/nvramconfig rcnvramconfig
erstellt.
Ich habe unter YaST (YaST -> System -> RunLevel Editor) geprüft, ob das Script auch aktiv ist; es ist! Vielen Dank für den Tip.
Leider startet jetzt nach einem Reboot der X-Server nicht mehr, sondern es gibt nur noch eine Konsole zum einloggen. :cry:
Dabei habe ich folgende interessante Beobachtung gemacht: wenn ich mich auf der Konsole einlogge, sind die Berechtigungen für /dev/nvram richtig gesetzt. Nach einem manuellen Start vom X-Server (startx) sind die Rechte wieder nur für root gesetzt!!! Kann mir mal jemand sagen, welches Script dafür verantwortlich ist ????

@gameboy
Was muß ich in die Datei /etc/logindevperm reinschreiben?
Wäre folgendes richtig?

Code: Alles auswählen

:0 0777 /dev/nvram
Lenovo Thinkpad X60, SuSE 13.2
Lenovo Thinkpad X61s, SuSE 13.2

gameboy
Hacker
Hacker
Beiträge: 794
Registriert: 5. Aug 2005, 10:27
Wohnort: Hessen / MKK

Beitrag von gameboy » 13. Jan 2008, 18:04

Hallo vgruetzm,
vgruetzm hat geschrieben:Was muß ich in die Datei /etc/logindevperm reinschreiben?
Wäre folgendes richtig?

Code: Alles auswählen

:0 0777 /dev/nvram
ich denke schon. Vor einiger Zeit hatte ich unter Suse 10.0 das Problem, daß bei zwei parallelen KDE-Sessions nur bei einer der Sound funktioniert hat. Die Lösung waren folgende Einträge in /etc/logindevperm:

Code: Alles auswählen

:0 0660 /dev/snd/*
:0 0660 /dev/dsp:/dev/dsp0:/dev/dsp1:/dev/dsp2:/dev/dsp3
Viele Grüße,
gameboy.

vgruetzm
Newbie
Newbie
Beiträge: 28
Registriert: 22. Aug 2006, 14:48
Wohnort: Nieder-Olm

Beitrag von vgruetzm » 13. Jan 2008, 18:29

... so, nur zur Info.
Habe versehentlich beim Überprüfen der Scripte im Runlevel-Editor das System unter "Expertenmodus" den Standard-Runlevel nach dem Systemstart versehentlich auf Runlevel 3 gesetzt .... urrgh, Asche auf mein Haupt :?
Lenovo Thinkpad X60, SuSE 13.2
Lenovo Thinkpad X61s, SuSE 13.2

vgruetzm
Newbie
Newbie
Beiträge: 28
Registriert: 22. Aug 2006, 14:48
Wohnort: Nieder-Olm

Beitrag von vgruetzm » 13. Jan 2008, 18:54

Hallo gameboy,
der Tip mit dem Eintrag in /etc/logindevperm scheint prinzipiell zunächst zu funktionieren. Sobald ein Benutzer sich im grafischen System (X-Windows) einloggt, werden die Benutzerrechte aber wieder auf Null gesetzt.
Ich habe folgendes gemacht:
  • * System gestartet
    * auf einer Konsole eingeloggt (nicht im grafischen System)
    * ls -l /dev/nv* gibt aus

    Code: Alles auswählen

    root@ThinkpadT23:~> ls -l /dev/nv*
    crw-r--r--  1 root kmem 10, 144 2008-01-13 18:34 /dev/nvram
    
    * wenn ein normaler Benutzer sich auf der Grafikoberfläche einloggt, erscheint zunächst

    Code: Alles auswählen

    root@ThinkpadT23:~> ls -l /dev/nv*
    crwxrwxrwx  1 root kmem 10, 144 2008-01-13 18:34 /dev/nvram
    
    d.h. der Befehl, bei dem die Rechte für nvram gesetzt werden, funktioniert!
    * kurz darauf werden die Rechte aber wieder auf

    Code: Alles auswählen

    root@ThinkpadT23:~> ls -l /dev/nv*
    crw-------  1 root kmem 10, 144 2008-01-13 18:34 /dev/nvram
    
    gesetzt.
Welcher Dämon ist denn dafür verantwortlich???
Lenovo Thinkpad X60, SuSE 13.2
Lenovo Thinkpad X61s, SuSE 13.2

gameboy
Hacker
Hacker
Beiträge: 794
Registriert: 5. Aug 2005, 10:27
Wohnort: Hessen / MKK

Beitrag von gameboy » 13. Jan 2008, 19:32

vgruetzm hat geschrieben:Welcher Dämon ist denn dafür verantwortlich???
Da ich keine Ahnung habe, was sich hinter /dev/nvram überhaupt verbirgt, bin ich da leider überfragt.

Viele Grüße,
gameboy.

vgruetzm
Newbie
Newbie
Beiträge: 28
Registriert: 22. Aug 2006, 14:48
Wohnort: Nieder-Olm

Beitrag von vgruetzm » 13. Jan 2008, 19:55

Moin,
nvram ist eine Gerätedatei (character device), die vom KMilo-Plugin von ThinkPad Notebooks benutzt wird und zur Steuerung mit den Thinkpadtasten benötgt wird, das sind die Sondertasten lauter, leiser, stummschalten etc.
Das ganze wird über Kontrollzentrum -> Systemverwaltung -> IBM Thinkpad Notebook eingerichtet.
Damit das funktioniert, muß der Benutzer da reinschreiben dürfen

Gruß,
vgruetzm
Lenovo Thinkpad X60, SuSE 13.2
Lenovo Thinkpad X61s, SuSE 13.2

jengelh
Guru
Guru
Beiträge: 4039
Registriert: 20. Nov 2004, 17:42
Kontaktdaten:

Beitrag von jengelh » 14. Jan 2008, 10:27

0 heißt doch allerdings soviel wie nicht benutzt, korrekt?
Wie bereits oben erwähnt, unter root funktioniert das alles prima, nur unter einem normalen Benutzer nicht.
Genau, 0 heißt unbenutzt. Aber geladen heißt geladen :-)

Code: Alles auswählen

10:20 ichi:~ > l /dev/nvram
ls: cannot access /dev/nvram: No such file or directory
10:20 ichi:~ > su1
10:20 ichi:/home/jengelh # modprobe nvram
10:20 ichi:/home/jengelh # l /dev/nvram
crw------- 1 root kmem 10, 144 Jan 14 10:20 /dev/nvram
Das auf 0666 zu setzen kann man dann mit resmgr (oder udev und Hacks wie logindevperm) machen.
0777 ist fast immer falsch.

vgruetzm
Newbie
Newbie
Beiträge: 28
Registriert: 22. Aug 2006, 14:48
Wohnort: Nieder-Olm

Beitrag von vgruetzm » 14. Jan 2008, 20:12

Korrekt, 0777 ist immer falsch, meine auch 0666, da habe ich mich vertan :shock:
Die anderen Tipps probier ich mal aus, vielen Dank

...so, da bin ich wieder.
Zunächst mal vielen Dank für die guten Tips, ich habe mittlerweise schon ein paar Dinge dazugelernt,mein Problem habe ich aber immer noch nicht gelöst.

Also, der Status ist wie folgt:
Ich habe mal die man-pages zu udev gelesen, und dabei bin ich darauf gestoßen, daß es im Verzeichnis /etc/udev eine Datei Namens static_devices.txt gibt. Und siehe da, darin ist auch die von mir gesuchte Datei nvram enthalten, die als statisches Device mit

Code: Alles auswählen

nvram c 10 144
angegebn ist. Nichts einfacher als die entsprechenden Rechte angehängt, also

Code: Alles auswählen

nvram c 10 144 666
eingetragen, abgespeichert und neu gebootet.
Siehe da, nach dem Booten erscheint die Datei mit den gewünschten Lese- und Schreibrechten rw-rw-rw- (ich habe dazu nach der Anzeige des Login-Fensters auf eine Textkonsole umgeschaltet und mich darunter als root angemeldet). Sobald ich aber den normalen Benutzer über das grafische Login anmelde, werden die Rechte wieder auf rw------ zurückgesetzt. Es muß doch folglich irgendeinen verwarzten Prozeß geben, der nach dem Anmelden eines "normalen" Benutzers angestoßen wird und die Rechte ändert. Hat da irgendjemand eine Idee???

Ergänzung zum Thema logindevperm:
in der Datei /etc/logindevperm ist eine Zeile mit

Code: Alles auswählen

:0 0666 /dev/nvram
enthalten, also auch hier habe ich explizit Lese- und Schreibrechte für nvram gesetzt!
Lenovo Thinkpad X60, SuSE 13.2
Lenovo Thinkpad X61s, SuSE 13.2

Benutzeravatar
TomcatMJ
Guru
Guru
Beiträge: 2480
Registriert: 1. Apr 2004, 00:29
Wohnort: Köln
Kontaktdaten:

Beitrag von TomcatMJ » 14. Jan 2008, 21:40

Für alle die sich fragen was /dev/nvram eigentlich ist: nvram=Non-Volatile-RAM (nicht-flüchtiger Speicher)->Das CMOS-RAM des BIOS
Übrigens kann man Devicerechte genau wie Dateirechte auch in den /etc/permissions.* Dateien setzen. Welche Datei man davon nehmen sollte kommt ganz drauf an auf was man den Security-Level gesetzt hat.

Bis denne,
Tom

vgruetzm
Newbie
Newbie
Beiträge: 28
Registriert: 22. Aug 2006, 14:48
Wohnort: Nieder-Olm

Beitrag von vgruetzm » 14. Jan 2008, 22:03

Hallo Tom,
danke für den Hinweis, jetzt weiß ich wenigstens, wofür nvram steht.
Ich habe in permissions.local ja schon die Zeile

Code: Alles auswählen

/dev/nvram                  root:kmem       666
eingefügt, um die die Device-Rechte zu ändern, allerdings bisher ohne Erfolg :(
Lenovo Thinkpad X60, SuSE 13.2
Lenovo Thinkpad X61s, SuSE 13.2

jengelh
Guru
Guru
Beiträge: 4039
Registriert: 20. Nov 2004, 17:42
Kontaktdaten:

Beitrag von jengelh » 15. Jan 2008, 02:12

/etc/permissions* wird nur bei Softwareinstallation beachtet.

vgruetzm
Newbie
Newbie
Beiträge: 28
Registriert: 22. Aug 2006, 14:48
Wohnort: Nieder-Olm

Beitrag von vgruetzm » 9. Mär 2008, 14:42

... so, nach einigen intensiven Studien habe ich eine Lösung gefunden:

Ich bin durch Zufall darauf gestoßen, daß es auf dem System bereit seine Anleitung gibt, die allerdings ein wenig abgeändert werden mußte, damit das alles funktioniert:

/usr/share/doc/packages/tpctl/README.SUSE

Voraussetzung ist generell, daß die Pakete tpb, tpctl, km_tcptl, configure_thinkpad installiert sind.

Zunächst habe ich als root alle normalen Benutzer mit Hilfe von YaST zur Gruppe kmem hinzugefügt:

YaST -> Sicherheit und Benutzer -> Gruppen bearbeiten und anlegen und oben links Gruppen auswählen, unter Filter den Eintrag Systemgruppen auswählen. Die Gruppe kmem auswählen und die entsprechenden Benutzer hinzufügen.

Anschließend in der Datei /etc/udev/static_devices.txt eine Zeile für nvram eingefügt bzw. - falls bereits vorhanden - modifiziert:

Code: Alles auswählen

#
# udev.static_devices.txt
#
# List of all devices which have to be created statically as automatic
# detection does not work.
#
# Format:
# name type major minor mode
nvram c 10 144 666
Dann für udev noch folgende Zeile in

/etc/udev/rules.d/50-udev.rules

eingefügen:

Code: Alles auswählen

# rule to access /dev/nvram as a normal user
KERNEL=="nvram", NAME="%k", MODE="666", GROUP="kmem", OPTIONS="ignore_remove"
... muß natürlich Kernel=="nvram" heißen, danke für den Hinweis...

Schließlich habe ich in die Datei /etc/sysconfig/kernel noch eingetragen

Code: Alles auswählen

MODULES_LOADED_ON_BOOT="nvram"
damit das Modul auf jeden Fall nach dem Start vorhanden ist.

Siehe da, jetzt läßt sich das KMilo Plugin auch als normaler Benutzer im Kontrollzentrum aktivieren und an die persönlichen Wünsche/Bedürfnisse anpassen.
Zuletzt geändert von vgruetzm am 8. Feb 2009, 13:31, insgesamt 1-mal geändert.
Lenovo Thinkpad X60, SuSE 13.2
Lenovo Thinkpad X61s, SuSE 13.2

Leizar
Newbie
Newbie
Beiträge: 1
Registriert: 22. Jul 2008, 10:17

Re: [gelöst] Schreibrechte auf Gerätedatei /etc/nvram

Beitrag von Leizar » 22. Jul 2008, 10:20

Danke für den Tip - ich möchte noch für die Suse 11 User anmerken, dass nach KERNEL
hier zwei "==" Zeichen stehen müssen:

Code: Alles auswählen

ACTION=="remove", NAME=="?*", TEST=="/lib/udev/devices/$name", OPTIONS+="ignore_remove"
Dann funktioniert das Ganze auch auf meinem R60 mit Suse 11.

Antworten