Raspi, Dateisystem, Partitionen
TS
- dateisystem
- raspberry
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.
Glück Auf
Tom vom Berg
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.
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…
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).