问题描述
我使用的是Ubuntu 14.04。
我有一个8GB的FAT32 USB memory 棒和一个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)
最佳解决方案
请参阅此bug。
运行此命令以杀死Nautilus(文件):
killall nautilus
次佳解决方案
将USB密钥连接到笔记本电脑时:
-
运行
sudo -i
(这样您就不会一直输入密码) -
运行
df -Th
(查看USB memory 棒的安装位置) -
卸下你的USB memory 棒
-
在您从上一个命令中看到的设备上运行
dosfsck
。示例:dosfsck /dev/sdc1
-
移除并重新连接USB memory 棒
现在应该解决问题。
现在,对于您的硬盘驱动器,请按照此question的答案进行操作。它是关于外置硬盘驱动器,但它与你的情况是一样的。
第三种解决方案
当使用GParted设置分区表并格式化我的USB memory 棒时,我得到了同样的错误..之后所有USB驱动器都转到了”read-only”。
但在根复制工作正常…
机器重启后问题消失了。所以我猜这个问题可能在使用GParted时出现。
第四种方案
我也有这个问题。我在复制到我的usb棒时遇到错误,我使用Mint 17.1肉桂,内核3.13.0-43和caja文件管理器。
当我查看终端’dir /media’中的媒体目录时,我看到布局已更改,通常您希望看到此处列出的驱动器,但现在它们列在您的用户名下,猜猜是什么?该用户名仅具有ROOT权限。
我做的是打字
sudo chown [username] /media/[username]
和
sudo chgrp [username] /media/[username]
你用你的用户名替换[用户名],删除usb棒,等待,然后把它放回去,问题解决了,我现在可以写信给它!
第五种方案
我使用Gparted格式化。这擦除了磁盘中的所有数据,结果证明它也解决了问题。
第六种方案
我在Ubuntu上遇到了同样的问题,到目前为止这里给出的答案都没有。这是我尝试过的:
-
使用GParted格式化设备。我甚至尝试过re-creating分区表,但没有成功。
-
使用
fsck
检查设备。没有发现任何问题。 -
修复了挂载点的权限。事实证明,挂载点是root拥有的,但即使让自己成为所有者,我也只能从命令行写入设备(我仍然无法从GUI创建文件)。
当我连接USB memory 棒时,它安装在/media/<username>/<label>/
下,其中<username>
是我的用户名,<label>
是USB memory 棒或存储设备的标签。
我再次看了一下权限:
$ ls -ld /media/<username>
drwxrwx---+ 2 <username> <username> 4096 Mar 4 18:32 /media/<username>
请注意权限末尾的+
。这对我来说是新的,我以前从未注意过它。这意味着该目录具有称为访问控制列表(ACL)的扩展权限(请参阅此related question)。我列出了此目录的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设备,再次连接它,问题解决了。
第七种方案
当您运行mount
时,只安装了sda5(您的/
),并且它是read-write(rw
),因此您应该可以写入它。通常,大多数目录如/sys
,/bin
只能由root编写(您首先需要sudo
),但您的主文件夹应该可写入普通用户。
你可以在你的主文件夹中创建任何文件吗?也许你的gui文件管理器卡住认为他们是read-only,如果你在终端尝试它是否有效?例如,这些命令有用吗?:
cd ~
touch newfile001
echo stuff >> newfile001
cat newfile001
如果那些成功,那么你可以写你的HD(sda5)。
对于USB驱动器,在插入并安装后,查看mount
以找到它(/dev/sdb1 ...
线)并查看()
中的安装选项是否为rw
(read-write),那么您应该可以写入它。如果它是ro
(read-only)试试这个,看它是否改变:
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如何被破坏的线索 – “没有正确卸载”,你应该在拔掉任何东西之前总是卸下。大多数文件管理器都有”eject”来帮助解决这个问题。
dmesg
日志还说明了如何修复它:fsck
可以尝试修复fs错误,它会尝试选择正确的检查程序,或者您可以在fsck.
列出选项之后用fsck.vfat
或fsck.[other]
明确选择一个TAB
。
-
对于FAT系统(通常必须运行两次,并不总是第一次修复所有错误)
-
fsck.vfat -vaV [device]
应自动工作(-a)&显示更多信息(-v)&做一个”verification”传球(-V),或者只是: -
fsck.vfat -a [device]
-
注意:这不能保证文件系统将保持固定,它可能会再次损坏&可能无法确切知道原因。在移除USB驱动器之前,请务必卸载/”eject”。
请注意,如果fs安装为rw
,则会看到错误&它会自动重新安装为ro
,mount命令仍然可以报告它已安装的rw
。使用less /proc/mounts
查看此文件通常应显示更可靠的信息(请参阅man mount
)。
如果安装了某些东西rw
但你仍然无法在其上添加/删除/编辑文件,则可能不是文件的所有者。在某些fs中你可以成为chown
的所有者,但是在sdb1上的FAT32 fs没有这些权限;它们在安装选项uid=value
(值是您的用户ID,使用echo $UID
或id -u
学习)时设置,然后您可以尝试这个&看看之后是否有效:
sudo mount -o remount,rw,uid=[userid] /dev/sdb1 /media/simon/LYDIA
-
注意:有时,您可能需要重新启动gui文件管理器才能将”notice”更改为允许您写入文件系统/驱动器的安装更改,但终端应该始终有效。
或者,如果以上操作无效,请尝试sudo su
到”become” root,看看是否有任何东西可以写入USB上的文件(使用touch
,echo
等)?
第八种方案
转到Disks。
选择您的USB驱动器。
单击“其他分区选项”并选择“格式化分区”。
然后选择擦除用零覆盖现有数据(慢)并键入FAT。
我在互联网上搜索后尝试了很多东西,但这对我有用。