[gelöst] blkid als user ausgeführt mag nicht mehr (jessie)

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
Antworten
Benutzeravatar
detix
Beiträge: 1706
Registriert: 07.02.2007 18:51:28
Wohnort: MK

[gelöst] blkid als user ausgeführt mag nicht mehr (jessie)

Beitrag von detix » 22.10.2014 09:31:03

Ein merkwürdiges Phänomen hab ich hier (jessie nach Neustart) seit ein paar Tagen:

Code: Alles auswählen

/sbin/blkid -o export /dev/sda8; # als user ausgeführt ergibt keine Ausgabe, gleicher Befehl als root:

/sbin/blkid -o export /dev/sda8
DEVNAME=/dev/sda8
UUID=7d808ebb-eb1a-4f23-bfa0-a71f6e6a497e
TYPE=swap
PARTUUID=29a5051e-08

## und jetzt nochmal als user:
/sbin/blkid -o export /dev/sda8
DEVNAME=/dev/sda8
UUID=7d808ebb-eb1a-4f23-bfa0-a71f6e6a497e
TYPE=swap
PARTUUID=29a5051e-08
und auch bei allen anderen devices, als user ausgeführt, ergibt keine Ausgabe.

Führe ich dieselbe Zeile als root und anschließend wieder als user aus,
funktioniert alles wieder, aber dann auch nur für dieses eine device...

Ich muss also, um blkid benutzen zu können, sämtliche devices mit og Befehl zuerst als root ausführen!
System ist auf heutigem Stand, was ist da los?

edit: Titel um jessie ergänzt
Zuletzt geändert von detix am 26.10.2014 11:08:22, insgesamt 2-mal geändert.
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: blkid als user ausgeführt mag nicht mehr

Beitrag von rendegast » 22.10.2014 11:17:31

(Unter wheezy)
Für normale user funktioniert es nur, wenn die Cache-Datei /etc/blkid.tab schon existiert,
hat Rechte 644.
Ist das nicht der Fall, greift /sbin/blkid mit den Rechten des ausführenden Benutzers auf die Blockdateien zu,
diese haben für "not-removable" disks aber das Recht root:disk 660.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

uname
Beiträge: 12077
Registriert: 03.06.2008 09:33:02

Re: blkid als user ausgeführt mag nicht mehr

Beitrag von uname » 22.10.2014 11:33:34

man blkid hat geschrieben: -c cachefile
Read from cachefile instead of reading from the default cache file /etc/blkid/blkid.tab. If you want to start with a clean cache (i.e. don't report devices previously scanned but not necessarily available at this time), specify /dev/null.
Hilft nach einem Test aber auch nicht bei mir mit Wheezy. Datei ist abweichend /etc/blkid.tab . Komisch.

Benutzeravatar
detix
Beiträge: 1706
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: blkid als user ausgeführt mag nicht mehr

Beitrag von detix » 22.10.2014 12:12:11

Danke euch, das sind schon mal sehr gute Hinweise, führe ich als user

Code: Alles auswählen

/sbin/blkid -c /etc/blkid.tab -o export /dev/sda5
aus, so scheint alles zu funktionieren.

Aber ohne "-c ..." wird scheinbar die blkid.tab aus /run/blkid/blkid.tab benutzt.
Da stehen allerdings nur die devices drin, die vorher mit dem root-Befehl ausgeführt wurden und nur dann entsprechend anwächst...

Das kann ja eigentlich nur bedeuten, das standardmäßig nicht mehr die /etc/blkid.tab (Rechte: 644, datiert: 21.10.14) gelesen wird, sondern die /run/blkid/blkid.tab.
Da muss sich wohl etwas geändert haben und es wird die Lösung sein.
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: blkid als user ausgeführt mag nicht mehr

Beitrag von rendegast » 22.10.2014 17:01:55

Steht so auch in der jessie/sid manpage.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
detix
Beiträge: 1706
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: blkid als user ausgeführt mag nicht mehr

Beitrag von detix » 23.10.2014 11:20:43

Bleibt die Frage warum es bei wheezy weiterhin ohne /run/blkid/blkid.tab funktioniert,
auch hier wird diese Datei erst erstellt, wenn der Aufruf als root erfolgt.
Trotzdem ist die Funktionalität bei wheezy weiterhin gegeben, bei jessie aber nicht!

Mir geht es um ein kleines kdialog-(u)mount Skript, was jetzt nicht mehr so funktioniert.
So wie es momentan ist bleiben mir nur 3 Möglichkeiten:
1. könnte ein Bug sein, also abwarten (beste Lösung)
2. versuchen das Skript auf findmnt umzuschreiben (mal sehen ob das geht)
3. am Anfang des Skripts einen sudo-blkid Befehl abzusetzen (schlecht, aber wenns denn sein müßte)
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

uname
Beiträge: 12077
Registriert: 03.06.2008 09:33:02

Re: blkid als user ausgeführt mag nicht mehr

Beitrag von uname » 23.10.2014 11:34:46

Bei meinem Wheezy finde ich weder das Verzeichnis /etc/blkid noch /run/blkid. Die Datei landelt laut Debianstrace direkt in /etc selbst nach mehrmaliger Löschung:

Code: Alles auswählen

strace -f -o out.strace -e trace=file blkid
Könnte man das Zeug nicht besser gleich aus dem /proc- und /sys-Filesystem auslesen?

Als normaler Benutzer scheint alleine das schon ein Problem zu sein:

Code: Alles auswählen

32716 open("/dev/sda1", O_RDONLY|O_LARGEFILE) = -1 EACCES (Permission denied)
Wenn jedoch /etc/blkid.tab existiert wird es als normaler Benutzer trotzdem ausgegeben.

Benutzeravatar
detix
Beiträge: 1706
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: blkid als user ausgeführt mag nicht mehr

Beitrag von detix » 23.10.2014 12:52:12

Hab nochmal wheezy gestartet, eine /run/blkid/blkid.tab gibt es nicht, dann eine vorhandene /etc/blkid.tab einfach mal gelöscht,
aber /sbin/blkid als user ausgeführt zeigt mir trotzdem sämtliche Partitionen einschl. angeschlossener usb-Laufwerke mit allen Daten.

Hier passt doch bei jessie was nicht mehr, wheezy schreibt und liest aus dem RAM?
Jessie nur von Platte und auch nur wenn /sbin/blkid vorher als root ausgeführt wurde?
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

Benutzeravatar
habakug
Moderator
Beiträge: 4313
Registriert: 23.10.2004 13:08:41
Lizenz eigener Beiträge: MIT Lizenz

Re: blkid als user ausgeführt mag nicht mehr

Beitrag von habakug » 23.10.2014 13:03:46

Hallo!

Für die User werden nur gecachte "nicht verifizierte" Informationen durch blkid ausgegeben [1].
Note that blkid reads information directly from devices and for non-root users it returns cached unverified information. It is better to use lsblk --fs to get a user-friendly overview of filesystems and devices. [...] blkid is mostly designed for system services and to test libblkid functionality.
Die gecachte Datei "/run/blkid/blkid.tb" wird erst angelegt, wenn root (oder ein Skript) blkid einmal ausgeführt hat.
Der User sollte also besser

Code: Alles auswählen

$ lsblk --fs
verwenden.

Gruss, habakug

[1] man 8 blkid
[2] man lsblk

edit:
s/lsblk -fs/lsblk --fs/
siehe weiter unten
( # = root | $ = user | !! = mod ) (Vor der PN) (Debianforum-Wiki) (NoPaste)

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: blkid als user ausgeführt mag nicht mehr

Beitrag von rendegast » 23.10.2014 13:07:28

detix hat geschrieben: dann eine vorhandene /etc/blkid.tab einfach mal gelöscht,
aber /sbin/blkid als user ausgeführt zeigt mir trotzdem sämtliche Partitionen einschl. angeschlossener usb-Laufwerke mit allen Daten.
Benutzt eine /etc/blkid.tab.old o.ä.?
->

Code: Alles auswählen

strace -f -e trace=file -o /tmp/output.strace blkid

cat /tmp/output.strace
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
detix
Beiträge: 1706
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: blkid als user ausgeführt mag nicht mehr

Beitrag von detix » 24.10.2014 11:06:28

Jetzt muss ich doch mal ganz weit ausholen...
Nach dem Löschen (da kenn ich nix) von eventuell vorhandenen:
/run/blkid
/etc/blkid.tab
/etc/blkid.tab.old
plus anschließendem Neustart von jessie und auch wheezy,
wird zumindest bei wheezy die blkid.tab und auch eine blkid.tab.old in /etc neu erstellt,
ein zusätzlich angeschlossener USB-Stick schreibt sich umgehend in die /etc/blkid.tab und wird mit /sbin/blkid (als user) erfasst,
es gibt dort aber keinen Ordner /run/blkid.

Bei jessie wird da nichts von den 3 Dateien erstellt und /sbin/blkid (als user) greift ins Leere...
Als root ausgeführt wird nur der Ordner /run/blkid mit blkid.tab erstellt, und der user -Befehl greift wieder.
Ein zusätzlich angeschlossener USB-Stick erbringt dort aber keine Änderung,
so das ich den Befehl wiederum zuerst als root ausführen muss!

Code: Alles auswählen

lsblk --fs
als user ausgeführt zeigt mir auch nur die devices an, kein LABEL, keine UUID...

Die Ausgabe von strace (root) sagt mir nichts:
http://nopaste.debianforum.de/38068
Zuletzt geändert von detix am 24.10.2014 12:14:04, insgesamt 1-mal geändert.
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

Benutzeravatar
habakug
Moderator
Beiträge: 4313
Registriert: 23.10.2004 13:08:41
Lizenz eigener Beiträge: MIT Lizenz

Re: blkid als user ausgeführt mag nicht mehr

Beitrag von habakug » 24.10.2014 11:53:22

Hallo!
lsblk -fs

als user ausgeführt zeigt mir auch nur die devices an, kein LABEL, keine UUID...
Es muss

Code: Alles auswählen

$ lsblk --fs
oder
$ lsblk -f
oder z.B.
$ lsblk -o NAME,UUID,LABEL
heissen. Sorry, ich verbessere das oben. Helfen würde auch die Manpage mal zu lesen.
Das kann man auch debuggen:

Code: Alles auswählen

$ LIBMOUNT_DEBUG=0xffff lsblk -f
[...]
2651: libmount:     INIT:     feature: debug
2651: libmount:      TAB: [0x1a388a0]: alloc
2651: libmount:    CACHE: [0x1a3b180]: alloc
2651: libmount:    UTILS: mtab: /etc/mtab
2651: libmount:      TAB: [0x1a388a0]: /proc/self/mountinfo: start parsing [entries=0, filter=not]
[...]
2096: libmount:      TAB: [0x2576af0]: /proc/self/mountinfo: stop parsing (30 entries)
2096: libmount:      TAB: [0x2576af0]: lookup DEVNO: 2049
2096: libmount:      TAB: [0x2576af0]: lookup SRCPATH: '/dev/sda1'
2096: libmount:      TAB: [0x2576af0]: lookup DEVNO: 2050
2096: libmount:      TAB: [0x2576af0]: lookup SRCPATH: '/dev/sda2'
[...]
$ ls -lisa /etc/mtab
33823 4 lrwxrwxrwx 1 root root 19 24. Okt. 10:11 /etc/mtab -> ../proc/self/mounts
$ cat /proc/self/mounts
[...]

Gruss, habakug
( # = root | $ = user | !! = mod ) (Vor der PN) (Debianforum-Wiki) (NoPaste)

Benutzeravatar
detix
Beiträge: 1706
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: blkid als user ausgeführt mag nicht mehr

Beitrag von detix » 24.10.2014 12:18:08

Natürlich lautet der Befehl

Code: Alles auswählen

lsblk --fs
habs oben korrigiert, aber auch

Code: Alles auswählen

lsblk -o NAME,UUID,LABEL
zeigt nur die devices an, sonst nichts trotz jetzt vorhandener /run/blkid/blkid.tab (keine /etc/blkid.tab).
Und natürlich lese ich vorher die manpages und schau mich im Netz um bevor ich ein Problem poste...
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

Benutzeravatar
habakug
Moderator
Beiträge: 4313
Registriert: 23.10.2004 13:08:41
Lizenz eigener Beiträge: MIT Lizenz

Re: blkid als user ausgeführt mag nicht mehr

Beitrag von habakug » 24.10.2014 16:07:54

Hallo!

Ich habe hier

Code: Alles auswählen

$ lsblk -V
lsblk von util-linux 2.25.1
$ lsblk -fs
[...]
was auch ohne zweites "-" funzt. Die Version aus Wheezy kann das wohl nicht (?).
Ich weiss, dass du liest ;-). Das bezog sich noch auf mein "Sorry" und war an mich selbst gerichtet.
Mit der "blkid.tab" hat "lsblk" nichts zu tun.
Hier sieht das so aus:

Code: Alles auswählen

$ lsblk -fs
NAME  FSTYPE LABEL UUID                                 MOUNTPOINT
sda1                                                    
└─sda                                                   
sda2  vfat   EFI   70F7-1701                            
└─sda                                                   
sda3  btrfs DATA       d96686ae-c87b-414e-98b0-aa95ad88b938 /data
└─sda                                                   
sda4  btrfs ROOT       066766b4-adb0-4ca1-a54a-69728f26883d /
└─sda                                                   
sr0                                                     
Mit der Ausgabe kann ich etwas anfangen, während
blkid is mostly designed for system services and to test libblkid functionality.

Gruss, habakug
( # = root | $ = user | !! = mod ) (Vor der PN) (Debianforum-Wiki) (NoPaste)

Benutzeravatar
detix
Beiträge: 1706
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: blkid als user ausgeführt mag nicht mehr

Beitrag von detix » 25.10.2014 09:41:00

Also langsam wirds peinlich, ...für mich natürlich!

Code: Alles auswählen

lsblk -V
lsblk von util-linux 2.25.1

lsblk --fs
NAME   FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1
├─sda2
├─sda5
├─sda6
├─sda7                   /
├─sda8                   [SWAP]
└─sda9
sr0

groups
detix adm cdrom floppy audio dip video plugdev staff fuse scanner netdev motion systemd-journal
System ist auf jetzigem Stand, hab mich als user auch schon den verschiedensten anderen Gruppen ein- und ausgetragen,
bekomme aber ums Verrecken keine gescheite Ausgabe mehr!

blkid oder lsblk als root ausgeführt zeigen mir die gewünschten Ergebnisse...
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

Benutzeravatar
detix
Beiträge: 1706
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: blkid und lsblk als user ausgeführt mag nicht mehr (jess

Beitrag von detix » 26.10.2014 11:02:35

Oh Mann, die Lösung war doch völlig einfach und tatsächlich peinlich für mich:
Beim groups -Befehl fehlt die Gruppe "disk", womit ich mich hier bei allen Beteiligten zutiefst entschuldigen muss! :oops:

Code: Alles auswählen

lsblk --fs; # als user
zeigt zwar weiterhin nichts Auswertbares an (als root schon), aber

Code: Alles auswählen

/sbin/blkid; # als user
erzeugt wieder die gewünschte Ausgabe, auch ohne die Dateien/Ordner:
/etc/blkid.tab, /etc/blkid.tab.old, /run/blkid

Die beiden ersten Dateien gibt es bei jessie nicht mehr, und der Ordner /run/blkid wird nur erstellt, wenn root "blkid" ausführt.

Vielen Dank euch dreien!
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: [gelöst] blkid als user ausgeführt mag nicht mehr (jessi

Beitrag von rendegast » 27.10.2014 12:20:07

Ein normaler Benutzer sollte NICHT(!) in der Gruppe disk sein,
das unterläuft das Sicherheitssystem.
Ein SUID /sbin/blkid wäre besser als das.

Falls es anders nicht geht, wäre auch eine sudo für blkid eine Möglichkeit.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
detix
Beiträge: 1706
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: [gelöst] blkid als user ausgeführt mag nicht mehr (jessi

Beitrag von detix » 27.10.2014 20:44:09

rendegast hat geschrieben:Ein normaler Benutzer sollte NICHT(!) in der Gruppe disk sein,
Trifft dies denn auch zu, falls root und einziger user dieselbe Person sind?
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: [gelöst] blkid als user ausgeführt mag nicht mehr (jessi

Beitrag von rendegast » 28.10.2014 09:37:13

Ein normaler Benutzer sollte NICHT(!) in der Gruppe disk sein,
Trifft dies denn auch zu, falls root und einziger user dieselbe Person sind?
Das wäre einer entsprechenden malware egal.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
detix
Beiträge: 1706
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: [gelöst] blkid als user ausgeführt mag nicht mehr (jessi

Beitrag von detix » 28.10.2014 18:39:11

Hab mich aus der Gruppe "disk" wieder ausgetragen und bei blkid die User-Id gesetzt!

Code: Alles auswählen

ls -l /sbin/blkid
-rwsr-xr-x 1 root root 72776 Okt 15 09:31 /sbin/blkid
Damit ist das Thema jetzt doch hoffentlich richtig gelöst... :mrgreen:
/sbin/blkid zeigt mir so, auch wieder als User, die gewünschte Ausgabe an.
Vielen Dank rendegast!
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

Antworten