如何在没有 root 权限的情况下将文件写入 USB?

如何在没有 root 权限的情况下将文件写入 USB?

我有一个 4GB 的 USB 记忆棒,我用 对其进行了分区,sudo cfdisk /dev/sdb并用 对其进行了格式化。当我在 Debian Squeeze 上运行时,sudo mkfs /dev/sdb1它目前设置83为系统的ID。Linuxsudo fdisk -l

我用pmount它来安装外部 USB 驱动器。因此,执行 apmount /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 驱动器,我可以写入它们而不会出现此错误。我对 USB 驱动器进行格式化或重新分区的方式是否有问题?

答案1

您使用ext*文件系统(扩展2扩展, 或者ext4;我不记得默认的了)。这是 Linux 系统上的默认文件系统,使用Unix 文件权限确定谁可以修改文件或目录。新文件系统总是以/media/usb0拥有的根目录(在本例中)开始root:root,并且通常只允许所有者进行修改。

要亲自查看这一点,请挂载文件系统,然后运行ls -ld /media/usb0以查看当前所有权/权限。我的猜测是:

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

一个简单的解决方法是 a)chown将挂载的文件系统添加到您自己的 Linux 帐户,或者 b)授予每个人写入权限chmod

然而,最终,这不是一个好的解决方案,因为创建的文件将归你的 UID 所有,而不是用户名;这很快就会导致账户不匹配当 USB 驱动器连接到不同的系统时。假设您可以连接它,也就是说 –Windows 不支持 ext3无需额外的技巧,因此 NTFS ( mkfs.ntfs) 或 FAT32 ( mkfs.vfat) 将是文件系统的更好选择。

答案2

这种情况也会发生在较新的 Debian 系统(例如 jessie)以及某些 fat32 或 ext3,4 格式的 USB 闪存驱动器上。您需要消除(或注释掉)以下行/etc/fstab

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

此后,您的 USB 驱动器将自动以常规用户帐户权限安装,而不是 root 权限。请参阅 Debian 论坛上的详细信息关联。

此后,您的 USB 驱动器将以您的用户写入权限顺利安装:)

答案3

使用命令sudo并改变权限chmod

请参阅我在该问题中的回答以了解如何使用chmod

我建议您使用chmod 777允许所有(使用ls -l它将显示drwxrwxrwx)。

答案4

通过 GUI 转到文件系统媒体。右键单击要复制到的 USB 驱动器并选择 - 以 Root 身份打开。输入密码。然后您可以复制、删除、拖放。一切顺利

相关内容