Как мне записать файлы на USB без рута?

10

У меня есть 4 ГБ флешка, которую я разделил, используя sudo cfdisk /dev/sdbи отформатировал, используя sudo mkfs /dev/sdb1. В настоящее время он установлен на ID 83с System, Linuxкогда я запускаю sudo fdisk -lна своем Debian Squeeze.

Я использую pmountдля подключения внешних USB-накопителей. Так что делает pmount /dev/sdb1это, /media/usb0потому что у меня есть FF. строка в /etc/fstab:

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

После выдачи pmountкоманды USB подключается к /media/usb0- выполнение ls -l /media/usb0дает мне:

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

Поэтому я занимаюсь своими делами и пытаюсь скопировать файл, /media/usb0но я получаю ошибку ниже:

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

Но когда я выполняю ту же cpкоманду с sudo, я могу скопировать файл.

Почему это происходит? Я пробовал другие USB-накопители, которые у меня есть, и я могу писать на них без этой ошибки. Было ли что-то не так с тем, как я отформатировал или переделил флешку?

Эрик
источник

Ответы:

7

Вы отформатировали раздел sdb1, используяext* файловую систему ( ext2 , ext3 или ext4 ; я не могу вспомнить значение по умолчанию). Это файловая система по умолчанию в системах Linux, которая использует права доступа к файлам Unix, чтобы определить, кто может изменять файлы или каталоги. Новые файловые системы всегда начинаются с корня ( /media/usb0в данном случае), которым владеют root:root, и обычно с разрешениями, разрешающими только модификации владельцем.

Чтобы убедиться в этом, смонтируйте файловую систему, затем запустите, ls -ld /media/usb0чтобы увидеть текущее владение / права доступа. Мое предположение:

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

Простым решением будет а) chownсмонтированная файловая система к вашей собственной учетной записи Linux, или б), чтобы дать всем право на запись chmod.

Однако, в конце концов, это не будет хорошим решением, так как созданные файлы будут принадлежать вашему UID, а не имени пользователя; это быстро приведет к несоответствию учетной записи при подключении USB-накопителя к другой системе. Предполагая, что вы можете подключить его вообще, то есть - Windows не поддерживает ext3 без дополнительных хитростей, поэтому NTFS ( mkfs.ntfs) или FAT32 ( mkfs.vfat) будет гораздо лучшим выбором для файловой системы.

user1686
источник
Я пытался делать sudo mkfs.ntfs /dev/sdb1и , sudo mkfs.vfat /dev/sdb1но я получаю ошибку , sudo: mkfs.xxxx: command not foundкогда xxxxлибо ntfsи vfat. Как мне заставить это работать на Debian Squeeze?
Эрик
@Eric: установите ntfs-3g + ntfsprogs + dosfstools .
user1686
Хорошо, я установил это. Теперь , когда я пытаюсь установить, я получаю эту ошибку: ntfs-3g-mount: failed to open /dev/fuse: Permission denied. Что мне делать с этим?
Эрик
4

Это происходит в более поздних системах Debian (например, jessie), а также с некоторыми USB-накопителями в формате fat32 или ext3,4. Вам нужно удалить (или закомментировать) следующую строку из вашего / etc / fstab :

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

После этого ваш USB-накопитель будет смонтирован автоматически с разрешения вашей учетной записи обычного пользователя, а не root. Смотрите подробную информацию на форумах Debian по этой ссылке.

После этого ваш USB-накопитель будет монтироваться без проблем с вашим правом записи пользователя :)

miklosq
источник
2

Использование sudoи изменение разрешений с помощью chmodкоманды.

Смотрите мой ответ в этом вопросе, чтобы увидеть, как использовать chmod:

Я предлагаю вам использовать, chmod 777чтобы разрешить все (используя ls -lэто покажет drwxrwxrwx).

kokbira
источник
1

Если ваша файловая система FAT16 или FAT32, вы должны использовать эту команду:

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

Для получения дополнительной информации посетите ссылку https://help.ubuntu.com/community/Mount/USB#Mount_the_Drive

kamy22
источник
0

Перейдите на носитель файловой системы через графический интерфейс. Щелкните правой кнопкой мыши USB-накопитель, на который вы хотите скопировать, и выберите «Открыть как корневой». Введите пароль. Затем вы можете скопировать удалить, перетащить и отпустить. Все хорошо

Sven
источник
Как упомянуто выше @Sven, root: root в праве собственности - это причина, по которой открыт как root в терминале или графическом интерфейсе ИЛИ использует chown, чтобы изменить владельца или группу, чтобы позволить себе использовать этот usb как положено.
linuxdev2013