TS: Raspi, Dateisystem, Partitionen

Hello,

ich wollte "mal eben schnell" bei meinem Raspi einen symbolischen Link auf /media/pi/Storage/pictures/webcam anlegen, weil /var/www/html/ auf einer fast vollen Partition liegt.


pi@raspberrypi:~ $ df
Dateisystem     1K-Blöcke  Benutzt Verfügbar Verw% Eingehängt auf
/dev/root        15608796 13444756   1348120   91% /
devtmpfs           443152        0    443152    0% /dev
tmpfs              447760        0    447760    0% /dev/shm
tmpfs              447760    45708    402052   11% /run
tmpfs                5120        4      5116    1% /run/lock
tmpfs              447760        0    447760    0% /sys/fs/cgroup
/dev/mmcblk0p6      66528    22855     43673   35% /boot
tmpfs               89552        4     89548    1% /run/user/1000
/dev/mmcblk0p9   11431852    34164  10793940    1% /media/pi/Storage
/dev/mmcblk0p8     524008   145616    378392   28% /media/pi/System
/dev/mmcblk0p5      30701     1592     26816    6% /media/pi/SETTINGS
/dev/mmcblk0p10    499656      408    462552    1% /media/pi/data

Die Zielpartition ist unter / eingehängt.

Wie kann ich herausfinden, wo/wann die P. mounted wird?

/etc/fstab ist nur sehr dürftig.

pi@raspberrypi:~ $ cat /etc/fstab
proc            /proc           proc    defaults          0       0
/dev/mmcblk0p6  /boot           vfat    defaults          0       2
/dev/mmcblk0p7  /               ext4    defaults,noatime  0       1
# a swapfile is not a swap partition, no line here
#   use  dphys-swapfile swap[on|off]  for that

mount zeigt allerdings einen Wust von Devices an:

pi@raspberrypi:~ $ mount
/dev/mmcblk0p7 on / type ext4 (rw,noatime)
devtmpfs on /dev type devtmpfs (rw,relatime,size=443152k,nr_inodes=110788,mode=755)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
mqueue on /dev/mqueue type mqueue (rw,relatime)
sunrpc on /run/rpc_pipefs type rpc_pipefs (rw,relatime)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=34,pgrp=1,timeout=0,minproto=5,maxproto=5,direct)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/mmcblk0p6 on /boot type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro)
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=89552k,mode=700,uid=1000,gid=1000)
gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
/dev/mmcblk0p9 on /media/pi/Storage type ext4 (rw,nosuid,nodev,relatime,uhelper=udisks2)
/dev/mmcblk0p8 on /media/pi/System type vfat (rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2)
/dev/mmcblk0p5 on /media/pi/SETTINGS type ext4 (rw,nosuid,nodev,relatime,uhelper=udisks2)
/dev/mmcblk0p10 on /media/pi/data type ext4 (rw,nosuid,nodev,relatime,uhelper=udisks2)  

Das nächste Problem wird sein, dass /media/pi/ mit ACL arbeitet.

pi@raspberrypi:~ $ ls -l /media
insgesamt 4
drwxr-x---+ 6 root www-data 4096 Nov 26 00:08 pi
  
pi@raspberrypi:~ $ getfacl /media/pi
getfacl: Entferne führende '/' von absoluten Pfadnamen
# file: media/pi
# owner: root
# group: www-data
user::rwx
user:pi:r-x
group::---
mask::r-x
other::---  

pi@raspberrypi:~ $ getfacl /media/pi/Storage/pictures/webcam/
getfacl: Entferne führende '/' von absoluten Pfadnamen
# file: media/pi/Storage/pictures/webcam/
# owner: pi
# group: www-data
# flags: -s-
user::rwx
group::rwx
other::r-x  

Was muss ich da ändern, damig der www-data auf genau das softverlinkte Verzeichnis zugreifen darf, aber auf kein datüberliegendes?

Ich hätte den Artikel von Jörg neulich aufmerksamer lesen/verstehen sollen. Nun finde ich ihn nicht mehr.

Nochmal die Fragen:

  • wo wird gemounted?
  • warum ist soviel Geraffel einzeln gemountet?
  • wie muss ich die ACL für www-data und das Zielverzeichnis ergänzen?

Glück Auf
Tom vom Berg

--
Es gibt nichts Gutes, außer man tut es!
Das Leben selbst ist der Sinn.

akzeptierte Antworten

  1. ich wollte "mal eben schnell" bei meinem Raspi einen symbolischen Link auf /media/pi/Storage/pictures/webcam anlegen, weil /var/www/html/ auf einer fast vollen Partition liegt.

    wo wird gemounted?

    Hm. Und jetzt weißt Du vermutlich nicht, wo eigentlich steht, dass irgend ein Gerät mit dem Label /Storage/ nach /media/pi/Storage/ gemountet wird. Was auch Mist ist. Wieso hast Du übrigens noch den Benutzer "Pi"?

    Vermutlich ist udisks oder einer seiner Brüder (gvfsd-fuse hab ich gesehen) am Werk.

    Du kannst /etc/fdisk aber ergänzen, denn udisks,gvfsd und Co. behandeln nur Zeug, welches da nicht drin steht.

    LABEL=Storage /media/Storage ext4 nofail,errors=remount-ro
    

    Dann sollte aber /media/Storage als Verzeichnis existieren und die Rechte sollten passend gesetzt sein.

    wie muss ich die ACL für www-data und das Zielverzeichnis ergänzen?

    su (oder sudo -s)
    cd /media/Storage
    find -type d -exec setfacl  -m www-data:rx {} \;
    find -type f -exec setfacl  -m www-data:r {} \;
    

    (Getestet, man find und man setfacl hilft Dir zu lernen was das macht.)

    Danach würde ich vielleicht sogar soweit gehen, keinen Link zu setzen sondern in /etc/fstab wie folgt ergänzen um die Verzeichnisse zu mounten:

    /media/Storage/pictures/webcam /var/www/webcam none bind,nofail 0 0
    

    (Blind geschrieben, ungetestet. man fstab hilft.)

    warum ist soviel Geraffel einzeln gemountet?

    Nun ja. Früher wurde viel von dem "Geraffel" auf die Platte geschrieben und viele der Dateien wurden ständig offen gehalten bzw. auf Änderungen überwacht. Heute - speziell im Hinblick auf die in einem Raspi verwendeten, langsamen und wohl auch auf empfindliche Speichermedien wie SSDs - will man nicht mehr und legt das Zeug (primär) in den Arbeitsspeicher (z.B. tempfs, ). Dazu hat man dann noch sehr spezielle "Dateisysteme" parat, die der Kernel gut und schnell bedienen kann. Ja: Es ist ein Fortschritt.

    Ich hab z.B. noch außerdem noch ramlog und also:

    /dev/mmcblk0p1 on /var/log.hdd type ext4 (rw,noatime,nodiratime,errors=remount-ro,commit=600)
    /dev/zram0 on /var/log type ext4 (rw,relatime,discard)
    

    "gemountet".

    den Artikel von Jörg neulich aufmerksamer lesen/verstehen sollen.

    Hehe. Der Teufel hört jeden, der nach ihm ruft.

    1. warum ist soviel Geraffel einzeln gemountet?

      Nun ja. Früher wurde viel von dem "Geraffel" auf die Platte geschrieben und viele der Dateien wurden ständig offen gehalten bzw. auf Änderungen überwacht. Heute

      Das "Heute" gilt vor allem für moderne Linux-Kernel und Systeme mit systemd statt dem alten initd. Hat also schon ganz schön was auf den Buckel…

    2. su (oder sudo -s)
      cd /media/Storage
      find -type d -exec setfacl  -m www-data:rx {} \;
      find -type f -exec setfacl  -m www-data:r {} \;
      

      wobei ich mich frage, warum Du explizit nach einer acl für den www-data fragst. Ich würde das so regeln, dass die Dateien dem normalen Benutzer gehören, der diese anlegen und bearbeiten soll und Welt (other) Leserechte (ggf. auch schreiben oder ausführen) bekommt.

      Das, was ich bei Dir gesehen habe, mit der acl für pi

      user::rwx
      user:pi:r-x
      group::---
      mask::r-x
      other::---  
      

      Das kommt wohl vom Automounter.

      sudo chown pi:pi /media/pi; chmod 0755 /media/pi
      

      hätte "getan". Aber ich würde, wie gezeigt, auf den Benutzer ganz verzichten wollen, mittels fstab mounten und die Rechte wie auch die Eigentümerschaft dann ganz klassisch setzen (keine ACL).