USB设备显示为只读


122

我正在使用Ubuntu 14.04。

我有一个8gb FAT32 USB记忆棒和一个500gb FAT32硬盘;这些都突然变成了只读设备。

我尝试删除其中的目录/media,然后再次创建它,重命名它,然后赋予该目录完全权限。但是,这没有用。

结果mount

$ mount
/dev/sda5 on / type ext4 (rw,errors=remount-ro) 
proc on /proc type proc (rw,noexec,nosuid,nodev) 
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev) 
none on /sys/fs/cgroup type tmpfs (rw)
none on /sys/fs/fuse/connections type fusectl (rw) 
none on /sys/kernel/debug type debugfs (rw) 
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755) 
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620) 
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755) 
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880) 
none on /run/shm type tmpfs (rw,nosuid,nodev)
none on /run/user type tmpfs (rw,noexec,nosuid,nodev,size=104857600,mode=0755) 
none on /sys/fs/pstore type pstore (rw) 
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
systemd on /sys/fs/cgroup/systemd type cgroup (rw,noexec,nosuid,nodev,none,name=systemd)
gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,user=simon)

结果sudo parted -l

Model: ATA ST9500325AS (scsi)
Disk /dev/sda: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End    Size    Type      File system     Flags
 4      1049kB  500GB  500GB   extended
 5      2097kB  496GB  496GB   logical   ext4
 6      496GB   500GB  4238MB  logical   linux-swap(v1)


Model: Verbatim STORE N GO (scsi)
Disk /dev/sdb: 8028MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      24.6kB  8028MB  8028MB  primary  fat32        boot

结果lsblk

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 465.8G  0 disk 
├─sda4   8:4    0     1K  0 part 
├─sda5   8:5    0 461.8G  0 part /
└─sda6   8:6    0     4G  0 part [SWAP]
sdb      8:16   1   7.5G  0 disk 
└─sdb1   8:17   1   7.5G  0 part /media/simon/LYDIA
sr0     11:0    1  1024M  0 rom 

USB写入测试:

$ cd /media/simon/LYDIA
$ touch newfile001
touch: cannot touch ‘newfile001’: Read-only file system 

结果dmesg

[  159.366772] FAT-fs (sdb1): Volume was not properly unmounted. Some data may be       corrupt. Please run fsck.
[  159.383252] FAT-fs (sdb1): error, fat_get_cluster: invalid cluster chain (i_pos 0)
[  159.383258] FAT-fs (sdb1): Filesystem has been set read-only
[  159.383571] FAT-fs (sdb1): error, fat_get_cluster: invalid cluster chain (i_pos 0)
[  159.384251] FAT-fs (sdb1): error, fat_get_cluster: invalid cluster chain (i_pos 0)
[  159.384319] FAT-fs (sdb1): error, fat_get_cluster: invalid cluster chain (i_pos 0)
[  159.475111] systemd-hostnamed[2966]: Warning: nss-myhostname is not installed.
Changing the local hostname might make it unresolveable. Please install nss-myhostname!
[  159.480141] FAT-fs (sdb1): error, fat_get_cluster: invalid cluster chain (i_pos 0)
[  159.480224] FAT-fs (sdb1): error, fat_get_cluster: invalid cluster chain (i_pos 0)
[  159.480497] FAT-fs (sdb1): error, fat_get_cluster: invalid cluster chain (i_pos 0)
[  159.480516] FAT-fs (sdb1): error, fat_get_cluster: invalid cluster chain (i_pos 0)
[ 2893.091767] wlan0: deauthenticating from c0:3e:0f:31:21:05 by local choice   (reason=3)

穿上它,什么时候装?如何安装?作为根?使用文件管理器的自动挂载自动挂载?
davidbaumann 2014年

我通常插入USB记忆棒,然后弹出窗口,或者可以使用它来打开和拖放文件。我通常不使用终端进行任何复制或类似操作。
oodles2do 2014年

插入,打开,然后添加mount请的结果。
davidbaumann 2014年

并不是说听起来很蠢,但是您到底是什么意思?我应该在终端中输入什么代码?如果那是您要做的意思,谢谢!
oodles2do 2014年

mount恰好;)
davidbaumann 2014年

Answers:


248

看到这个错误

运行以下命令杀死Nautilus(文件):

killall nautilus

45
哇,我
简直

11
我该死的,这个作品哈哈
Tek

6
我正在使用nemo,所以我做到了killall nemo,而且效果很好。
奥基·伊利·里纳尔迪

14
令人遗憾的是,它在2018年仍然有效(Ubuntu 16.04.3 LTS)
Andrew

2
我见过最奇怪的修复。仍适用于Ubuntu 18.04
CodeMonkey

74

将USB密钥连接到笔记本电脑时:

  • 运行sudo -i(这样您就不会一直输入密码)
  • 运行df -Th(以查看USB随身碟的安装位置)
  • 卸下USB记忆棒
  • dosfsck在您先前命令中看到的设备上运行。例:dosfsck /dev/sdc1
  • 卸下并重新连接USB记忆棒

现在应该解决问题。

现在,对于您的HDD,请按照此问题的答案进行操作。它是关于外部硬盘驱动器的,但对于您的情况是相同的。


1
谢谢你的帮助!我试图按照您说的做,是否正确卸载了umount / dev / sdb1才能卸载USB记忆棒?另外,我不知道如何使用dosfsck。也感谢您的链接
oodles2do 2014年

3
@SimonBremford如果您的USB /dev/sdb1当然已经安装,则您的命令正确。对于您的其他问题,只需键入:dosfsck -a /dev/sdb1

23
感谢您的帮助,但是没有成功。USB记忆棒仍是只读的。我认为这是Ubuntu的问题,而不是USB记忆棒本身,因为它是如此突然。而且它同时影响多个USB设备。
oodles2do 2014年

3
有时最简单的方法是重新启动
Gayan Weerakutti

2
将答案添加为确实确实需要重新引导将很有用。
Artem Pelenitsyn

20

使用GParted设置分区表并格式化USB记忆棒时,我遇到了同样的错误。所有USB驱动器都变为“只读”之后。

但是在根目录下可以正常工作...

机器重启后问题不再存在。因此,我猜想在使用GParted时可能会出现此问题。


请参阅下面发布的工作解决方案Serrano以及对此的评论。对我来说,起源也来自使用GPated...
Antonio

15

我也有这个问题。复制到USB记忆棒时出现错误,我正在使用薄荷17.1肉桂,内核3.13.0-43和Caja文件管理器。

当我查看终端'dir / media'中的媒体目录时,我发现布局已更改,通常您希望看到此处列出的驱动器,但是现在它们已列在您的用户名下,您猜怎么着?该用户名仅具有ROOT权限。

我要做的是打字

sudo chown [username] /media/[username]

sudo chgrp [username] /media/[username]

您用您的用户名替换[用户名],卸下USB记忆棒,等待,然后放回去,问题解决了,我现在可以写信给它!


对我来说sudo chown [username] /media/[username]很好。我什至不必拿出USB棒(也不需要chgrp-我在Xubuntu 16.04上)
Nicolas

感谢您的回答。这应该是公认的答案,因为介质本身并不是真正的问题,但安装点确实没有问题。
agim

chown也可以更改组,chown [username]:[groupname] files相当于运行chown然后chgrp。请参阅man chown
Xen2050 '17

1
@ Xen2050,甚至更好,chown [username]: files因为`chown`将默认为用户登录组。
卢卡斯

@Lucas谢谢,那更好。它巧妙地隐藏在man页面中,但在info页面中可见[如果man&info页面匹配,这将非常好...]
Xen2050

11

我在Ubuntu上也遇到了同样的问题,到目前为止,这里给出的答案都没有对我有用。这是我尝试过的:

  • 使用GParted格式化设备。我什至尝试重新创建分区表,但均未成功。
  • 用检查设备fsck。找不到问题。
  • 修复了挂载点的权限。原来,挂载点是root拥有的,但是即使将自己设为所有者,我也只能从命令行写入设备(我仍然无法从GUI创建文件)。

当我连接USB记忆棒时,它将安装在下方/media/<username>/<label>/,这<username>是我的用户名, <label>是USB记忆棒或存储设备的标签。

我再次查看了权限:

$ ls -ld /media/<username>
drwxrwx---+ 2 <username> <username> 4096 Mar  4 18:32 /media/<username>

注意+权限末尾的。这对我来说是新的,我之前从未注意到。这意味着目录具有称为访问控制列表(ACL)的扩展权限(请参阅此相关问题)。我列出了此目录的ACL详细信息:

$ getfacl /media/<username>
# file: <username>/
# owner: <username>
# group: <username>
user::rwx
user:<username>:r-x
group::---
mask::r-x
other::---

如您所见,user:<username>:r-x我的用户名还有一个附加条目,它仅使我具有读取权限。我用一个简单的命令解决了这个问题:

setfacl -m u:<username>:rwx /media/<username>

我拆下USB设备,再次连接,问题解决了。


1
好。谢谢,这是解决方案。但是,最后您需要才能restart your computer完全访问mounted USBs。我认为值得考虑的另一点是,此问题是creating a new gpt partition tableUSB stick与一起使用之后发生的GParted。随后,我所有的USB都受影响。毫无疑问,这些家伙的GParted行为应该有所不同……
安东尼奥


6

当您mount仅运行sda5(您的/)时,它已被装载,并且是可读写的(rw),因此您应该能够对其进行写入。通常,大多数目录(如/sys/bin只能由root用户写入(您需要sudo首先写入),但您的主文件夹应为常规用户可写入。

您可以在主文件夹中创建任何文件吗?也许您的gui文件管理器会一直以为它们是只读的,如果您在终端中尝试了,是否可以使用?例如,这些命令有效吗?:

cd ~
touch newfile001
echo stuff >> newfile001
cat newfile001

如果这些工作成功,则可以写入HD(sda5)。


对于USB驱动器,在插入并安装USB驱动器之后,请查看mount以找到它(该/dev/sdb1 ...行),然后查看()s中的mount选项是否为rw(读写),那么您应该可以对其进行写入。如果是ro(只读),请尝试以下操作并查看是否更改:

sudo mount -o remount,rw /dev/sdb1 /media/simon/LYDIA

如果文件系统(fs)出错,则可能会挂载为ro,在dmesg&中/var/log/syslog也应包含有关该文件的消息。这是您的日志显示的内容:

[  159.366772] FAT-fs (sdb1): Volume was not properly unmounted. Some data may  
be corrupt. Please run fsck.
[  159.383252] FAT-fs (sdb1): error, fat_get_cluster: invalid cluster chain (i_pos 0)
[  159.383258] FAT-fs (sdb1): Filesystem has been set read-only

其中包括有关fs如何损坏的提示-“未正确卸载”,在拔出任何东西之前,应始终先卸载。大多数文件管理器都有一个“弹出”可以帮助您。

dmesg日志也说如何解决它:fsck可以尝试修复FS错误,它会尝试选择正确的检查程序,或者你可以选择一个显式fsck.vfatfsck.[other]TABfsck.应列出的选项。

  • 对于FAT系统(通常必须运行两次,但不一定总是在第一次修复所有错误)
    • fsck.vfat -vaV [device] 应该自动运行(-a)并显示更多信息(-v)并进行“验证”通过(-V),或者仅:
    • fsck.vfat -a [device]

注意:这不能保证文件系统会保持固定,它可能会再次损坏,并且可能无法确切知道原因。在卸下USB驱动器之前,请务必先卸载/“弹出”。

请注意,如果fs 挂载为rw,但是会看到错误并且它会自动重新ro挂载,那么mount命令可能仍会报告已挂载rw。用这个文件less /proc/mounts查看通常会显示更多可靠的信息(请参阅参考资料man mount)。


如果已挂载某些内容,rw但仍然无法在其上添加/删除/编辑文件,则您可能不是文件的所有者。在某些fs中,您可以chown成为所有者,但是sdb1上的FAT32 fs没有这些权限;它们是在使用mount选项安装时设置的uid=value(值是您的用户ID,可通过echo $UID或学习id -u),然后您可以尝试使用此方法并查看其是否可以正常工作:

sudo mount -o remount,rw,uid=[userid] /dev/sdb1 /media/simon/LYDIA
  • 注意:有时,您可能需要重新启动gui文件管理器,以使其“通知”安装更改,该更改使您可以写入文件系统/驱动器,但是终端应始终运行。

或者,如果上述方法不工作,尝试sudo su以“成为”根,看看是否有什么可以写入文件上的USB(与touchecho等)?


感谢您的回答,我做了newfile001命令,并得到了“填充”作为响应。另外,在mount命令中,usb支架的括号中有rw,因此我应该可以对其进行读写。我只是在回答的最后尝试了命令,但没有用,它仍然是只读设备。
oodles2do 2014年

至少HD可以正常工作... USB应该是可写的...如果您cd进入USB文件夹,可以写入任何具有echo stuff >> newusbfile或类似的文件吗?还是echo stuff | sudo tee newusbfile?还是先跑到sudo su“成为”根,然后回声,猫等等?
Xen2050 2014年

我如何将cd命令放入USB文件夹?我想我只是在/ media / simon中完成了它,但是它起作用了,但是USB是/ media / simon / LYDIA
oodles2do 2014年

如果未安装USB,则/ media / simon / LYDIA只是一个空文件夹(如果在该文件夹中)。挂载后,您可以使用mount或来查看其挂载文件夹的位置lsblk,然后cd mounted_folder尝试写入文件mkdir等,sudo su以查看是否也可以以root身份写...
Xen2050 2014年

感谢您的所有帮助,我只是试图将文件写入usb文件,但没有成功,它说这是一个只读文件系统。我已将代码添加到问题中,以便您可以看到我的工作。
oodles2do 2014年

4

转到磁盘

选择您的USB驱动器。

单击其他分区选项,然后选择格式化分区

然后选择擦除以零(慢)覆盖现有数据并键入FAT

在互联网上搜索后,我尝试了很多事情,但这对我有用。


1
这将擦除驱动器上的所有数据。
cst1992

如果我需要NTFS怎么办?对于NTFS来说,同样的方法对我不起作用。
瓦迪姆·科托夫


0

快速修复方法:

方法1

有时我们可以轻松完成bash任务,而我通常不会做(不需要sudo)

mkdir /media/$USER/mydrive/myfolder
cp -r src/ /media/$USER/mydrive/myfolder

但是,有时候,当我需要使用文件浏览器时,

sudo nautilus /media/$USER/mydrive/

注意:这是一个快速解决方案,仅当您感到沮丧时才使用它,因为上述其他答案均无效

方法2

重新启动操作系统


0

尝试以下策略

  1. 以超级用户身份编辑/etc/fuse.conf

    更改#user_allow_otheruser_allow_other

  2. 启用对外部设备的写支持

    • sudo apt-get install ntfs-config
    • sudo ntfs-config

0

这是因为您的文件系统是NTFS,并且处于不安全状态,也许您正在Windows中使用磁盘,原因之一是您使Windows处于休眠状态或快速重新启动它。因此,请使用以下步骤之一:

  1. 使用以下命令卸载媒体,进入Windows(可能是双启动模式,或者在另一台计算机上),然后完全关闭Windows,不要进入休眠或快速重启状态,

    sudo umount /media/"your media label"

然后再次进入Linux并使用以下命令挂载介质:

'sudo mount -o rw,mount /your media'
  1. 如果您使用的是macOs,请将媒体插入到Mac设备并使用以下命令:

    'sudo / usr / sbin / diskutil disableJournal / Volumes /媒体名称'


0

您只需要遵循以下3条命令。

  1. df -Th

结果- 在此处输入图片说明

  1. umount /media/user/KINGSTON (这是安装在路径上)
  2. dosfsck -a /dev/sdb1 (这是文件系统路径)

0

在终端(ubuntu)上运行以下命令,以为Pendrive授予写权限。

  1. df -Th
  2. umount /media/madusanka/KINGSTON

    • “ / media / madusanka / KINGSTON”是第一个命令给出的“ Mounted on”值
  3. sudo dosfsck -a /dev/sdb1

    • “ / dev / sdb1”是第一个命令给出的“文件系统”值。
  4. 输入密码

  5. 通过粘贴或创建新文件来检查Pendrive。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.