Wie schreibe ich Dateien auf einen USB-Stick, ohne root zu sein?

10

Ich habe einen 4 GB USB-Stick, den ich mit partitioniert sudo cfdisk /dev/sdbund formatiert habe sudo mkfs /dev/sdb1. Es ist derzeit auf ID 83mit System eingestellt, Linuxwenn ich sudo fdisk -lauf meinem Debian Squeeze laufe .

Ich verwende pmount, um die externen USB-Laufwerke zu mounten. Also mache ich pmount /dev/sdb1es, /media/usb0weil ich das ff habe. Zeile in /etc/fstab:

/dev/sdb1    /media/usb0    auto    rw,user,noauto    0    0

Nach der Ausgabe - pmountBefehl wird der USB montiert /media/usb0- tun ein ls -l /media/usb0mir gibt:

drwx------ 2 root root 16384 Mar   2 20:08 lost+found

Also gehe ich meinem Geschäft nach und versuche, eine Datei zu kopieren, /media/usb0aber ich erhalte den folgenden Fehler:

$ cp ~/foo.bar /media/usb0
cp: cannot create regular file `/media/usb0/foo.bar': Permission denied

Wenn ich jedoch denselben cpBefehl mit ausführe sudo, kann ich die Datei kopieren.

Warum passiert das? Ich habe ein anderes USB-Laufwerk ausprobiert und kann ohne diesen Fehler darauf schreiben. War etwas falsch an der Art und Weise, wie ich den USB-Stick formatiert oder neu partitioniert habe?

Eric
quelle

Antworten:

7

Sie haben die sdb1-Partition mit einemext* Dateisystem formatiert (entweder ext2 , ext3 oder ext4 ; ich kann mich nicht an die Standardeinstellung erinnern). Dies ist das Standarddateisystem auf Linux-Systemen und verwendet Unix-Dateiberechtigungen , um zu bestimmen, wer Dateien oder Verzeichnisse ändern kann. Neue Dateisysteme beginnen immer mit dem Root ( /media/usb0in diesem Fall), dessen Eigentümer sie sind root:root, und normalerweise mit Berechtigungen, die nur Änderungen durch den Eigentümer zulassen.

Um dies selbst zu sehen, mounten Sie das Dateisystem und führen Sie es aus ls -ld /media/usb0, um den aktuellen Besitz / die aktuellen Dauerwellen anzuzeigen . Meine Vermutung ist:

drwx------ 2 root root 16384 Mar   2 20:08 /media/usb0

Eine einfache Lösung wäre, a) chowndas gemountete Dateisystem auf Ihr eigenes Linux-Konto zu übertragen oder b) jedem die Schreibberechtigung zu erteilen chmod.

Am Ende wäre dies jedoch keine gute Lösung, da die erstellten Dateien Ihrer UID und nicht dem Benutzernamen gehören würden. Dies würde schnell zu Kontoinkongruenzen führen, wenn das USB-Laufwerk an ein anderes System angeschlossen ist. Angenommen, Sie können überhaupt eine Verbindung herstellen, dh Windows unterstützt ext3 nicht ohne zusätzliche Tricks, sodass NTFS ( mkfs.ntfs) oder FAT32 ( mkfs.vfat) eine viel bessere Wahl für das Dateisystem sind.

user1686
quelle
Ich habe es versucht sudo mkfs.ntfs /dev/sdb1und sudo mkfs.vfat /dev/sdb1aber ich bekomme den Fehler sudo: mkfs.xxxx: command not foundwo xxxxist entweder ntfsund vfat. Wie kann ich das bei Debian Squeeze zum Laufen bringen?
Eric
@Eric: Installiere ntfs-3g + ntfsprogs + dosfstools .
user1686
Ok, das habe ich installiert. Wenn ich jetzt versuche zu mounten, erhalte ich folgende Fehlermeldung : ntfs-3g-mount: failed to open /dev/fuse: Permission denied. Was mache ich dagegen?
Eric
4

Dies geschieht auch auf späteren Debian-Systemen (z. B. Jessie) mit bestimmten USB-Flash-Laufwerken im Format fat32 oder ext3,4. Sie müssen die folgende Zeile aus Ihrer / etc / fstab entfernen (oder auskommentieren) :

/dev/sdb1    /media/usb0    auto    rw,user,noauto    0    0

Danach wird Ihr USB-Laufwerk automatisch mit der Erlaubnis Ihres regulären Benutzerkontos und nicht mit root gemountet. Ausführliche Informationen zu Debian-Foren finden Sie unter diesem Link.

Danach wird Ihr USB-Laufwerk mit der Schreibberechtigung Ihres Benutzers reibungslos gemountet :)

miklosq
quelle
2

Verwenden sudound ändern Sie Berechtigungen mit chmodBefehl.

Siehe meine Antwort in dieser Frage, um zu sehen, wie man verwendet chmod:

Ich schlage vor, dass Sie verwenden chmod 777, um alle zuzulassen ( wenn Sie es verwenden , ls -lwird dies angezeigt drwxrwxrwx).

Kokbira
quelle
1

Wenn Ihr Dateisystem FAT16 oder FAT32 ist, müssen Sie diesen Befehl verwenden:

sudo mount -t vfat /dev/sdb1 /media/usb0 -o uid=1000,gid=1000,utf8,dmask=027,fmask=137

Weitere Informationen finden Sie unter dem Link https://help.ubuntu.com/community/Mount/USB#Mount_the_Drive

kamy22
quelle
0

Wechseln Sie über die GUI zum Dateisystemmedium. Klicken Sie mit der rechten Maustaste auf das USB-Laufwerk, auf das Sie kopieren möchten, und wählen Sie - Als Root öffnen. Geben Sie das Passwort ein. Anschließend können Sie Löschen, Ziehen und Ablegen kopieren. Alles gut

Sven
quelle
Wie oben von @Sven erwähnt, ist root: root im Besitz der Grund, der als root am Terminal oder in der Benutzeroberfläche geöffnet ist, oder verwenden Sie chown, um entweder den Eigentümer oder die Gruppe zu ändern, damit Sie diesen USB wie erwartet verwenden können.
linuxdev2013