Chmod 错误更改权限只读文件系统

Fou*_*rat 9 permissions chmod

我的光盘上有三个主要分区/dev/sda

/dev/sda1            2048   117186559    58592256   83  Linux
/dev/sda2       117186560   128905215     5859328   82  Linux swap / Solaris
/dev/sda3   *   128905216   324216831    97655808    7  HPFS/NTFS/exFAT
/dev/sda4       324216832  1250263039   463023104    b  W95 FAT32
Run Code Online (Sandbox Code Playgroud)

/dev/sda3是一个 Windows 7 分区,/dev/sda4是一个 FAT32 分区,我在其中保存我的数据。我的问题是昨天我无法写入/dev/sda4,当我尝试更改文件权限时出现错误:

$ sudo chmod 777 /media/fourat/74A7-A44E/
chmod: changing permissions of ‘74A7-A44E/’: Read-only file system
Run Code Online (Sandbox Code Playgroud)

mount 输出:

/dev/sda1 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)
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=fourat)
/dev/sda4 on /media/fourat/74A7-A44E type vfat (rw,nosuid,nodev,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,showexec,flush,uhelper=udisks2)
Run Code Online (Sandbox Code Playgroud)

解决:重新安装分区作为指示mikewhatever的评论

sudo mount -o remount,rw /dev/sda4
Run Code Online (Sandbox Code Playgroud)

Gil*_*ido 2

我之前在 Android 设备上使用并锁定为只读模式的 SD 卡也遇到过类似的问题。

\n

我什至无法写入或更改权限:
\ntouch my-test-file.txtsudo chmod -R a+rwX Pictures//或chown命令失败并显示类似消息

\n
chmod: changing permissions of 'Pictures/Screenshots': Read-only file system\n
Run Code Online (Sandbox Code Playgroud)\n

此外,名为的文件夹Android/已损坏:

\n
gilles@inspiron-15:/media/gilles/E0A4-1EEB$ ll\nls: cannot access 'Android': Input/output error\ntotal 452\ndrwxr-xr-x  16 gilles gilles 32768 janv.  1  1970 ./\ndrwxr-x---+  3 root   root    4096 juin  20 17:36 ../\ndrwxr-xr-x   2 gilles gilles 32768 janv. 11  2019 100ANDRO/\ndrwxr-xr-x   2 gilles gilles 32768 juil. 19  2020 Alarms/\nd??????????  ? ?      ?          ?              ? Android/\ndrwxr-xr-x   3 gilles gilles 32768 ao\xc3\xbbt  12  2020 DCIM/\ndrwxr-xr-x  14 gilles gilles 32768 ao\xc3\xbbt   4  2019 Download/\ndrwxr-xr-x   2 gilles gilles 32768 janv. 10  2019 LOST.DIR/\ndrwxr-xr-x   3 gilles gilles 32768 janv. 10  2019 Movies/\ndrwxr-xr-x  29 gilles gilles 32768 juil. 10  2020 Music/\ndrwxr-xr-x   2 gilles gilles 32768 juil. 19  2020 Notifications/\ndrwxr-xr-x   4 gilles gilles 32768 janv. 10  2019 Pictures/\ndrwxr-xr-x   2 gilles gilles 32768 juil. 19  2020 Playlists/\ndrwxr-xr-x   2 gilles gilles 32768 juil. 19  2020 Podcasts/\ndrwxr-xr-x   2 gilles gilles 32768 juil. 19  2020 Ringtones/\ndrwxr-xr-x   2 gilles gilles 32768 janv. 10  2019 voicecall/\ngilles@inspiron-15:/media/gilles/E0A4-1EEB$ \n
Run Code Online (Sandbox Code Playgroud)\n

重要的

\n

我的 SD 卡格式化为 vfat / FAT32。
\nit 意味着它不支持 unix rwx rwx rwx(ugo) 权限!
\nls -l文件权限总是看起来像drwxr-xr-x-rwxr-xr-x并且仅取决于我的安装选项!

\n
\n

首先,我运行命令sudo df来获取设备名称:

\n
Filesystem     1K-blocks     Used Available Use% Mounted on\nudev             3978532        0   3978532   0% /dev\ntmpfs             801580     3248    798332   1% /run\n/dev/sda4      527509864 30275276 470368876   7% /\ntmpfs            4007896      152   4007744   1% /dev/shm\ntmpfs               5120        4      5116   1% /run/lock\ntmpfs            4007896        0   4007896   0% /sys/fs/cgroup\n/dev/sda2         664280     8048    656232   2% /boot/efi\n/dev/sda6      415169488 54509064 339548004  14% /DATA\ntmpfs             801576       16    801560   1% /run/user/1000\n/dev/mmcblk0p1  15553280  4783744  10769536  31% /media/gilles/E0A4-1EEB\n
Run Code Online (Sandbox Code Playgroud)\n

我还跑去fdisk -l获取文件系统类型(不是强制性的):

\n
...\nDevice         Boot Start      End  Sectors  Size Id Type\n/dev/mmcblk0p1       2048 31116287 31114240 14,9G  b W95 FAT32\n
Run Code Online (Sandbox Code Playgroud)\n

我使用我的 uid 和 gid 再次以 RW 模式安装设备/dev/mmcblk0p1

\n
sudo mount -o remount,rw,uid=1000,gid=1000 /dev/mmcblk0p1\n
Run Code Online (Sandbox Code Playgroud)\n

并使用该fsck命令,我删除了“DIRTY BIT”,它阻止了我的卡的文件系统可写:

\n
gilles@inspiron-15:~$ sudo fsck -f /dev/mmcblk0p1 \nfsck from util-linux 2.34\nfsck.fat 4.1 (2017-01-24)\n0x41: Dirty bit is set. Fs was not properly unmounted and some data may be corrupt.\n1) Remove dirty bit\n2) No action\n? 1\n/Android\n  Contains a free cluster (149071). Assuming EOF.\nPerform changes ? (y/n) y\n/dev/mmcblk0p1: 1823 files, 149492/486040 clusters\ngilles@inspiron-15:~$\n
Run Code Online (Sandbox Code Playgroud)\n

希望之后我可以再次在 SD 卡上写入!

\n
\n

PS 1:
除了fsck命令之外,\nindosfsck也很有用。

\n

PS 2:
\n我无法恢复我的Android/目录,但我可以清除它并获得一个干净的文件系统:

\n
gilles@inspiron-15:/media/gilles/E0A4-1EEB$ sudo dosfsck /dev/mmcblk0p1 \nfsck.fat 4.1 (2017-01-24)\n/Android\n Start does point to root directory. Deleting dir. \nPerform changes ? (y/n) y\n/dev/mmcblk0p1: 1823 files, 149492/486040 clusters\ngilles@inspiron-15:/media/gilles/E0A4-1EEB$\n
Run Code Online (Sandbox Code Playgroud)\n


小智 -2

我想你可以使用下面的命令来重新安装:

adb remount 
Run Code Online (Sandbox Code Playgroud)

这个解决方案应该适用于上述问题

  • `adb`是Android Debug Bridge工具,它如何解决OP问题? (2认同)