Bagaimana cara menulis file ke USB tanpa menjadi root?

10

Saya memiliki stik USB 4GB yang saya gunakan menggunakan partisi sudo cfdisk /dev/sdbdan diformat sudo mkfs /dev/sdb1. Saat ini diatur ke ID 83dengan Sistem Linuxketika saya menjalankan sudo fdisk -lDebian Squeeze.

Saya gunakan pmountuntuk memasang drive USB eksternal. Jadi melakukan pmount /dev/sdb1mounts /media/usb0karena saya punya ff. baris dalam /etc/fstab:

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

Setelah mengeluarkan pmountperintah, USB dipasang ke /media/usb0- melakukan ls -l /media/usb0memberi saya:

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

Jadi saya melanjutkan bisnis saya dan mencoba menyalin file /media/usb0tetapi saya mendapatkan kesalahan di bawah ini:

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

Tetapi ketika saya mengeluarkan cpperintah yang sama dengan sudo, saya dapat menyalin file.

Mengapa ini terjadi? Saya mencoba drive USB lain yang saya miliki dan saya dapat menulis kepada mereka tanpa kesalahan ini. Apakah ada yang salah dengan cara saya memformat atau mempartisi ulang stik USB?

Eric
sumber

Jawaban:

7

Anda memformat partisi sdb1 menggunakanext* sistem file (baik ext2 , ext3 , atau ext4 ; Saya tidak dapat mengingat defaultnya). Ini adalah sistem file default pada sistem Linux, dan menggunakan izin file Unix untuk menentukan siapa yang dapat memodifikasi file atau direktori. Sistem file baru selalu dimulai dengan root ( /media/usb0dalam hal ini) dimiliki oleh root:root, dan biasanya dengan izin hanya memungkinkan modifikasi oleh pemilik.

Untuk melihat ini untuk diri Anda sendiri, pasang sistem file, kemudian jalankan ls -ld /media/usb0untuk melihat kepemilikan / perms saat ini. Dugaan saya adalah:

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

Sebuah perbaikan sederhana akan menjadi a) chownsistem file yang dipasang ke akun Linux Anda sendiri, atau b) untuk memberi semua orang izin menulis chmod.

Namun, pada akhirnya, ini bukan solusi yang baik, karena file yang dibuat akan menjadi milik UID Anda, bukan nama pengguna; ini akan dengan cepat menghasilkan ketidakcocokan akun ketika drive USB terhubung ke sistem yang berbeda. Dengan asumsi Anda dapat menghubungkannya sama sekali, yaitu - Windows tidak mendukung ext3 tanpa tipu daya ekstra, jadi NTFS ( mkfs.ntfs) atau FAT32 ( mkfs.vfat) akan menjadi pilihan yang jauh lebih baik untuk sistem file.

pengguna1686
sumber
Saya mencoba melakukan sudo mkfs.ntfs /dev/sdb1dan sudo mkfs.vfat /dev/sdb1tetapi saya mendapatkan kesalahan di sudo: mkfs.xxxx: command not foundmana xxxxada ntfsdan vfat. Bagaimana cara saya menjalankannya di Debian Squeeze?
Eric
@ Eric: Instal ntfs-3g + ntfsprogs + dosfstools .
user1686
Ok, saya menginstalnya. Sekarang ketika saya mencoba untuk me-mount, saya mendapatkan error ini: ntfs-3g-mount: failed to open /dev/fuse: Permission denied. Apa yang harus saya lakukan?
Eric
4

Ini terjadi pada sistem Debian kemudian (misalnya jessie) juga dengan USB flash drive yang diformat fat32 atau ext3,4. Anda perlu menghapus (atau mengomentari) baris berikut dari / etc / fstab Anda :

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

Setelah ini, Anda akan memasang drive USB Anda secara otomatis di bawah izin akun pengguna biasa dan bukan root. Lihat info terperinci di forum Debian di tautan ini .

Setelah itu drive USB Anda akan dipasang dengan lancar dengan izin menulis pengguna Anda :)

miklosq
sumber
2

Gunakan sudodan ubah izin dengan chmodperintah.

Lihat jawaban saya di pertanyaan itu untuk melihat cara menggunakan chmod:

Saya sarankan Anda menggunakan chmod 777untuk mengizinkan semua (menggunakannya ls -lakan menunjukkan drwxrwxrwx).

kokbira
sumber
1

Jika sistem file Anda FAT16 atau FAT32 Anda harus menggunakan perintah ini:

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

Untuk info lebih lanjut, kunjungi tautan https://help.ubuntu.com/community/Mount/USB#Mount_the_Drive

kamy22
sumber
0

Pergi ke file sistem media melalui GUI. Klik kanan pada drive USB yang ingin Anda salin dan pilih - Buka sebagai Root. Ketikkan kata sandi. Kemudian Anda dapat menyalin hapus, seret dan lepas. Semuanya bagus

Sven
sumber
Seperti disinggung di atas oleh @Sven, root: root dalam kepemilikan adalah alasan terbuka sebagai root di terminal atau gui ATAU menggunakan chown untuk mengubah pemilik atau grup agar Anda dapat menggunakan usb itu seperti yang diharapkan.
linuxdev2013