我有一个 4GB 的 USB 记忆棒,我用 对其进行了分区,sudo cfdisk /dev/sdb
并用 对其进行了格式化。当我在 Debian Squeeze 上运行时,sudo mkfs /dev/sdb1
它目前设置83
为系统的ID。Linux
sudo 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 身份打开。输入密码。然后您可以复制、删除、拖放。一切顺利