USB-Stick Mounten mit Init.d Script

  • 34 Antworten
  • Letztes Antwortdatum
Mir wäre das mit dem Symlink eig. lieber.
Weil wie es schon erwähnt wurde am System selber nichts geändert wird. Und sollte mal der Stick gezogen werden. Müsste es immernoch passen.

Nur kann es sein das bei der Symlink erstellung der Stick bereits erkennbar sein muss?

Ich hab immer auf den Symlink übers Terminal versucht zu kommen. Und das Terminal sagte dann, Permission Denied

Ich habe das auch immer auf einem Weiteren Gerät getestet. Da ich das Originale Gerät mit gleichen Einstellungen ... nicht bei mir zuhause betreibe sondern bei meinen Eltern
Beiträge automatisch zusammengeführt:

Der Symbollink hatte wie du sagtest 777

Über Mounten kann ichs gerade nicht sagen. Aber es hatte ja Funktioniert mit dem Skript nur wird es zu früh ausgeführt

Ich fahr mal rüber und Probier es nochmal mit dem Symbolischen Link
 
Zuletzt bearbeitet:
Speedy8619 schrieb:
Mir wäre das mit dem Symlink eig. lieber.
Weil wie es schon erwähnt wurde am System selber nichts geändert wird.
Du wirst so oder so nur das Script brauchen. Aber der Symlink ist die einfachste Lösung.

Speedy8619 schrieb:
Nur kann es sein das bei der Symlink erstellung der Stick bereits erkennbar sein muss?
Nein, du kannst entweder universell den Link setzen
Code:
ln -s /mnt/media_rw /mnt/usb_share1
oder falls du direkt über den Symlink das Root-Verzeichnis des Sticks öffnen willst
Code:
ln -s /mnt/media_rw/<VOLUME_SERIAL> /mnt/usb_share1

Letzteres kann aber nur für einen Stick mit der angegebenen Volumen-Seriennr. ausgeführt werden. Ob der Stick gemountet ist oder nicht ist egal. Ohne Stick führt der Symlink halt ins Leere.
Für eine universelle Lösung, die direkt ins Root-Verzeichnis führt, müsste der Stick aber zuerst gemountet sein.
 
Ja der Symlink betrifft diesen einen Stick.
Wenn ich in dem Script den Symlink erstelle komme ich nur als Root auf den Symlink bzw. den Stick dann ...

Die App erkennt ihn daher auch nicht.

der Symlink hat
lrwxrwxrwx root:root
der inhalt hat
rwxrwx---- media_rw:media_rw

und des logfile Schreibt

failed with class java.lang.RuntimeException Failed to create subolder in '/mnt/usb_share1'

Wenn ich den Stick aber auf diesen Pfad Mounte geht es und der inhalt hat die gleichen Rechte
 
Speedy8619 schrieb:
komme ich nur als Root auf den Symlink bzw. den Stick dann ...
...oder als User »media_rw«. Die Berechtigungen von /mnt/media_rw gelten für den Symlink und die sind 750 root:media_rw. Als root hast du ja eh Zugriff auf alles, aber group=media_rw darf lesen und ausführen und sonst hat niemand Zugriff.

Ich gehe davon aus, dass du dich nicht explizit als User media_rw angemeldet hast, oder? Die Berechtigungen können nicht falsch sein, weil du einen Symlink verwendest.
Alles, was falsch sein könnte, wären die Berechtigungen für den Symlink selbst, denn du hast ja sonst nichts erstellt. Aber der hat alle Berechtigungen für jede Art von Zugriff erlaubt. Alles nach dem Symlink sind wieder reale Pfade.
 
Zuletzt bearbeitet:
nein Ich melde mich nicht als Irgendwen an. Sondern wenn er hochgefahren ist. Ist das System direkt nutzbar. Ich habe keinen Benutzer erstellt.

Die App Schaut ob sie auf /mnt/usb_share1 einen Ordner erstellen kann wenn nicht gibt er Fehler aus.

Wenn ich aber den Stick auf /mnt/usb_share1 Mounte geht es Problemlos Und ich Führe den Mountbefehl ohne Irgendwelche zusätze ja aus. Was kann ich noch testen?
 
Speedy8619 schrieb:
nein Ich melde mich nicht als Irgendwen an. Sondern wenn er hochgefahren ist. Ist das System direkt nutzbar. Ich habe keinen Benutzer erstellt
Es geht nicht um ein Benutzerkonto. Als was bist du auf deinem Ubuntu PC angemeldet, wenn du nicht root bist? Wahrscheinlich als user@xxx oder sowas, oder?
In Android ist das exakt dasselbe, wenn du in dort in der Shell unterwegs bist. In Android läuft das über eine App, die wiederum eine App-ID besitzt. In der Terminalapp bedeutet das, du bist angemeldet als bspw. u0_a138 (App-ID 10138). Damit hast du keinen Zugriff auf deinen Ordner.

Hat deine App Zugriff über den normalen Pfad? Hat sie im Manifest die Berechtigung WRITE_EXTERNAL_STORAGE und READ_EXTERNAL_STORAGE?
Beiträge automatisch zusammengeführt:

Wenn der Stick von dir gemountet wird, ohne jegliche Optionen, wird er mit Standardoptionen gemountet. Dann dürfte so ziemlich jeder Zugriff haben. Kann dir aber nicht sagen, ob das so ok ist im Laufe der Zeit oder ob es Probleme machen wird.
Beiträge automatisch zusammengeführt:

Den Zugriff immer für beide Pfade testen, mit denselben Voraussetzungen.
App => Symlink / App => realer Pfad
Beides muss gleiches Ergebnis haben, sonst stimmt was nicht.
 
Zuletzt bearbeitet:
Ich kann meines wissens über den Normalen Pfad /mnt/media_rw/... von der App aus darauf exportieren.
Aber die App kann über den Symlink nicht zugreifen.

Was kann ich weiter Korrigieren. ?
 
@Speedy8619 Also die App führt in beiden Fällen dieselbe Aktion aus, was aber nur über den normalen Pfad funktioniert und nicht über den Symlink?
 
nein Die App sucht in dem Pfad /mnt/usb_share1 ob sie dort schreiben kann. Wenn ja gibt es eine erweiterte Funktion.
Ich kann aber in der App auch die Einstellungen Exportieren was ich auf diesen Ordner Konnte. Ich habe jetzt aber nicht getestet ob ich dort hin Exportieren kann.
Die Extrafunktion habe ich mit dem Mounten bisher erreicht
 
@Speedy8619 Ich kann mir nicht erklären, wieso die App mit dem Symlink nicht zurecht kommt. Das wird bei Android überall im System benutzt und es ist völlig normal so zu arbeiten.

Die App ist doch für Android ausgelegt. Wieso versuchst du das System der App anzupassen? Du solltest dich nach Android (AOSP) richten. Der normale Pfad ist ein Standardpfad, der auf jedem Gerät mit Android verwendet wird.
Stell dir vor, alle Apps, die derzeit auf deinem Handy installiert sind, setzen eigene Standardpfade und Symlinks und mounten deine Partitionen an den verschiedensten Stellen.

Du musst dir auch darüber bewusst sein, dass der Stick für ALLE anderen Dienste und Apps auf deinem Gerät nicht mehr ansprechbar ist, sobald er woanders gemountet wurde. Der Standardpfad ist dann leer. Daher solltest du dir überlegen, die App umzuschreiben und den Standardpfad zu setzen anstatt einen eigenen.
 
Zuletzt bearbeitet:
Also ich hab mir jetzt mal angesehn Wie das mit den Rechten ist.
Wenn ich jetzt Ummounte
Hat sowohl der Ordner als auch der ganze Inhalt
als Eigentümer root : root und die Rechte sind 777

Wenn ich es Über den Symlink erstelle Hat nur der Symlink dies (root:root 777)

Der Ordner /mnt/media_rw/...
Hat als eigentümer root:media_rw mit drwxr-x---
Der Inhalt hat
Hat als eigentümer media_rw:media_rw mit 770 als rechte

Die App Findet weder den Symlink noch den Ordner /mnt/media_rw wegen Fehlender rechte vermute ich.
 
Speedy8619 schrieb:
Hat sowohl der Ordner als auch der ganze Inhalt
als Eigentümer root : root und die Rechte sind 777
Das habe ich dir schon hier erklärt.

Speedy8619 schrieb:
enn ich es Über den Symlink erstelle Hat nur der Symlink dies (root:root 777)
Dass der Symlink root:root hat ist egal. Die 777 ist interessant, die steht für die Rechte von

Owner = 7 (oder rwx)
Group = 7 (oder rwx)
other = 7 (oder rwx)

Die 7 setzt sich aus der folgenden Wertigkeit zusammen:

r (read) = 4
w (write) = 2
x (execute) = 1

Der Symlink darf von "other" (allen anderen) auch geöffnet werden. Daher ist es egal, was Owner und Group dürfen.

Das ist aber nur der Symlink selbst. Wo er hinführt ist auch wichtig. Der Zielpfad hat ja auch noch Zugriffsrechte, die eingehalten werden müssen. Kannst du nicht auf /mnt/media_rw zugreifen, kannst du auch nicht den Symlink öffnen.


Speedy8619 schrieb:
Der Ordner /mnt/media_rw/...
Hat als eigentümer root:media_rw mit drwxr-x---
Der Inhalt hat
Hat als eigentümer media_rw:media_rw mit 770 als rechte
Das steht in /init.rc, weil die Ordner während des Bootprozesses jedes mal so erstellt werden sollen vom System.

Speedy8619 schrieb:
Die App Findet weder den Symlink noch den Ordner /mnt/media_rw wegen Fehlender rechte vermute ich.
Ja klar wegen fehlender Rechte. Hier hast du nur 770, also "other" dürfen weder lesen, schreiben noch ausführen. Das darf nur nur root und media_rw.

Wie greift die App darauf denn zu?? So, wie hier beschrieben z.B.:
Access media files from shared storage | Android Developers
Beiträge automatisch zusammengeführt:

Code:
~ $ whoami
u0_a129
~ $ cd /mnt/media_rw
bash: cd: /mnt/media_rw: Permission denied
~ $ su media_rw
~ $ whoami
media_rw
~ $ cd /mnt/media_rw
:/mnt/media_rw $ ls
28E9-33C5
:/mnt/media_rw $

Erst wenn ich mich als "media_rw" anmelde anstatt als "App 129", habe ich Zugriff auf den Ordner.
 
Zuletzt bearbeitet:
Ok
Also wenn ich was speichere
SPeichert die App als root:sdcard_rw mit 660

Am besten in der Fstab ändern das die Gruppe sdcard_rw sein soll?
 
Ok ich hatte da auf den Ordner /mnt/sdcard exportiert

Jetzt habe ich nochmal in den Ordner /mnt/media_rw exportiert
Der Stick ist aber auf /mnt/media_rw/...

Der Letzte export hat u0_a125:u0_a125 mit chmod 600
Ok ich müsste nur den USB stick 777 geben dann wäre es Kein Problem oder gäb es noch eine Andere Lösung?
das der ordner /mnt/media_rw die 777 hat wäre nicht das Problem. Nur wie mache ich das mit dem Stick?
 
Zuletzt bearbeitet:
@Speedy8619 Sorry, wollte eigentlich noch antworten...

Auf dem Screenshot wird genau das ausgedrückt, was dein Problem darstellt. Die festgelegten und zusätzlich sogar noch selber definierten Pfade zu einem Verzeichnis musst du ersetzen. Bei Verwendung des media store hast du alle Probleme gleichzeitig gelöst. Die Zugriffsprobleme spielen dann keine Rolle mehr, weil ausschließlich der media store mit deiner App kommuniziert und alle Zugriffe auf den USB-Stick für dich übernimmt.
Es macht einfach keinen Sinn, neue Mountpoints zu setzen und die Zugriffsrechte zu ändern. Damit veränderst du grundlegende Strukturen im System, die nicht geändert werden sollten.

Hab sofort hieran gedacht als ich es eben gelesen hatte und dachte, ich schicke es dir einfach mal. ;-)

Quelle: Android Scoped Storage Demystified
 

Anhänge

  • Screenshot_20210103-143829-01.jpeg
    Screenshot_20210103-143829-01.jpeg
    88,5 KB · Aufrufe: 76

Ähnliche Themen

tunsies
Antworten
3
Aufrufe
856
tunsies
tunsies
Brantgaard
Antworten
9
Aufrufe
730
Nightly
Nightly
M
Antworten
1
Aufrufe
350
Klaus986
K
Zurück
Oben Unten