Jak zapisywać pliki na USB bez rootowania?

10

Mam pamięć USB o pojemności 4 GB, którą partycjonowałem za pomocą sudo cfdisk /dev/sdbi formatowałem za pomocą sudo mkfs /dev/sdb1. Obecnie jest ustawiony na ID 83w Systemie, Linuxkiedy uruchamiam sudo fdisk -lna moim Debian Squeeze.

Używam pmountdo montowania zewnętrznych napędów USB. Więc robienie tego pmount /dev/sdb1montuje, /media/usb0bo mam ff. linia w /etc/fstab:

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

Po wydaniu pmountpolecenia podłączany jest USB /media/usb0- wykonanie polecenia ls -l /media/usb0daje mi:

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

Więc zajmuję się moją firmą i próbuję skopiować plik, /media/usb0ale pojawia się błąd poniżej:

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

Ale kiedy wydam to samo cppolecenie sudo, jestem w stanie skopiować plik.

Dlaczego to się dzieje? Wypróbowałem inny dysk USB, który mam i mogę na nim pisać bez tego błędu. Czy było coś nie tak ze sposobem, w jaki sformatowałem lub ponownie sformatowałem pamięć USB?

Eric
źródło

Odpowiedzi:

7

Sformatowałeś partycję sdb1 przy użyciuext* systemu plików ( ext2 , ext3 lub ext4 ; nie mogę przywołać wartości domyślnej). Jest to domyślny system plików w systemach Linux i korzysta z uprawnień do plików Unix, aby określić, kto może modyfikować pliki lub katalogi. Świeże systemy plików zawsze zaczynają się od roota ( /media/usb0w tym przypadku) będącego własnością root:rooti zwykle z uprawnieniami pozwalającymi tylko na modyfikację przez właściciela.

Aby zobaczyć to dla siebie, zamontuj system plików, a następnie uruchom, ls -ld /media/usb0aby zobaczyć bieżącą własność / perms. Moim gościem jest:

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

Prostą poprawką byłoby a) chownzamontowany system plików na własnym koncie Linux lub b) udzielenie wszystkim uprawnień do zapisu chmod.

Jednak ostatecznie nie byłoby to dobre rozwiązanie, ponieważ utworzone pliki stałyby się własnością Twojego UID, a nie nazwy użytkownika; szybko spowodowałoby to niezgodności kont, gdy napęd USB jest podłączony do innego systemu. Zakładając, że możesz go w ogóle podłączyć, to znaczy - Windows nie obsługuje ext3 bez dodatkowych sztuczek, więc NTFS ( mkfs.ntfs) lub FAT32 ( mkfs.vfat) byłyby znacznie lepszym wyborem dla systemu plików.

użytkownik1686
źródło
Próbowałem robić sudo mkfs.ntfs /dev/sdb1i sudo mkfs.vfat /dev/sdb1ale pojawia się błąd sudo: mkfs.xxxx: command not found, gdzie xxxxjest albo ntfsa vfat. Jak sprawić, żeby działało to w Debian Squeeze?
Eric
@Eric: Zainstaluj ntfs-3g + ntfsprogs + dosfstools .
user1686
Ok, zainstalowałem to. Teraz, gdy próbuję zamontować, otrzymuję ten błąd: ntfs-3g-mount: failed to open /dev/fuse: Permission denied. Co mam z tym zrobić?
Eric
4

Dzieje się tak w późniejszych systemach Debiana (np. Jessie), a także w przypadku niektórych dysków flash USB sformatowanych w formacie fat32 lub ext3,4. Musisz usunąć (lub skomentować) następujący wiersz z / etc / fstab :

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

Następnie dysk USB zostanie automatycznie podłączony zgodnie z uprawnieniami konta użytkownika, a nie rootem. Zobacz szczegółowe informacje na forach Debiana na ten link.

Następnie dysk USB będzie się płynnie montować za zgodą użytkownika na zapis :)

miklosq
źródło
2

Używaj sudoi zmieniaj uprawnienia za pomocą chmodpolecenia.

Zobacz moją odpowiedź w tym pytaniu, aby zobaczyć, jak używać chmod:

Sugeruję, aby użyć, chmod 777aby zezwolić wszystkim (użycie ls -lgo pokaże drwxrwxrwx).

kokbira
źródło
1

Jeśli twój system plików to FAT16 lub FAT32, musisz użyć tego polecenia:

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

Aby uzyskać więcej informacji, odwiedź link https://help.ubuntu.com/community/Mount/USB#Mount_the_Drive

kamy22
źródło
0

Przejdź do nośnika systemu plików za pośrednictwem GUI. Kliknij prawym przyciskiem myszy dysk USB, na który chcesz skopiować, i wybierz - Otwórz jako root. Wpisz hasło Następnie możesz skopiować, usunąć, przeciągnąć i upuścić. Wszystko dobrze

Sven
źródło
Jak wspomniano powyżej w @Sven, root: root we własności jest przyczyną otwarcia jako root w terminalu lub GUI LUB użyj chown, aby zmienić właściciela lub grupę, aby umożliwić sobie korzystanie z tego usb zgodnie z oczekiwaniami.
linuxdev2013