當前位置: 首頁>>技術問答>>正文


USB設備顯示為隻讀

, , ,

問題描述

我使用的是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.vfatfsck.[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 $UIDid -u學習)時設置,然後您可以嘗試這個&看看之後是否有效:

sudo mount -o remount,rw,uid=[userid] /dev/sdb1 /media/simon/LYDIA
  • 注意:有時,您可能需要重新啟動gui文件管理器才能將”notice”更改為允許您寫入文件係統/驅動器的安裝更改,但終端應該始終有效。

或者,如果以上操作無效,請嘗試sudo su到”become” root,看看是否有任何東西可以寫入USB上的文件(使用touchecho等)?

第八種方案

轉到Disks

選擇您的USB驅動器。

單擊“其他分區選項”並選擇“格式化分區”。

然後選擇擦除用零覆蓋現有數據(慢)並鍵入FAT。

我在互聯網上搜索後嘗試了很多東西,但這對我有用。

參考資料

本文由Ubuntu問答整理, 博文地址: https://ubuntuqa.com/zh-tw/article/1210.html,未經允許,請勿轉載。