[File Manager] 扩展分区格式化后当前用户挂载的分区权限错误,无法读写删
Tofloor
poster avatar
深圳市耀影科技有限公司
deepin
2023-11-28 08:26
Author

扩展分区格式化后当前用户挂载的分区权限错误,无法读写删,EXT4移动硬盘插入电脑,无法读写删

前置条件】:DEEPIN V23 BATE2 最新版(当前演示用户为:HUAWEI), usb移动硬盘一个

复现步骤】:

1.插入usb移动硬盘,文件管理器右键格式化类型为“ext4

2.进入该移动硬盘分区后,会自动挂载到当前用户 HUAWEImedia目录下。路径为“/media/HUAWEI/ext4

3.我们在桌面新建一个目录命名为“1”,进入改目录新建一个文本文件 1.txt,
路径为:home/HUAWEI/Desktop/1/1.txt

4.我们把这个“1.txt” 用如下rsync命令同步到这个移动硬盘

rsync --progress -avUXX /home/HUAWEI/Desktop/1/ /media/HUAWEI/ext4/

看到终端显示:

rsync: [generator] chgrp "/media/HUAWEI/ext4/." failed: Operation not permitted (1)

5.观察同步情况,实际上同步过去啦。

进入终端 /media/HUAWEI 使用 ls -l 查看挂载目录权限,移动硬盘为 root

drwxrwxrwx 3 root   root    4096 11月28日 14:09 ext4

7.排查问题
我进入 挂载目录,查看挂载目录权限 我们看到权限是root用户,那么请问,当前用户HUAWEI为什么能够正常读写删?
如果说文件管理器为啦方便,自动自动提权,他不应该挂载root/media/下面的吗? 还有自动提前仅限于部分特殊程序,那么rsync第三方软件也能够自动提权?

预期结果】:分区权限应该为当前用户 HUAWEI

实际结果】:分区权限为 root,

截图_选择区域_20231127230413.png


注意:格式化为NTFS 格式,进入终端 /media/HUAWEI 使用 ls -l 查看挂载目录权限,移动硬盘为 HUAWEI,这是正常的, 现在优化到,支持win完美度大于自身啦?


临时解决】:扩展分区格式化后当前用户挂载的分区权限错误,deepin系统自动挂载的磁盘权限为 root:root ,但是当前用户却可以创建和删除文件,

解决1、我们用sudo权限执行一次命令‘sudo rsync --progress -avUXX 源 目标’,同步一个源为当前用户的文件,这时候在去查看分区权限就变成了当前用户

解决2、使用gnome的系统内置 gio mount

挂载

gio mount -d /dev/disk-name
Mounted /dev/disk-name at /media/username/disk-name

卸载

gio mount -u /media/username/disk-name

  • username 挂载分区的路径用户名,disk-name挂载分区的分区位置

解决3、如果GParted格式化了扩展分区,结果驱动器仅具有root访问权限。为了授予对当前用户名的访问权限,执行以下命令。(也适用于移动硬盘)

sudo chown -v username:username /media/username/disk-name
  • username:username 当前用户名
  • username/disk-name 分区挂载位置

解决4.shell#

对于纯cli的服务器或开发板,通过 mount -o指定所有者
挂载


$ mkdir $HOME/usb
$ sudo mount /dev/sdb1 $HOME/usb -o uid=$UID -o gid=`id -g $USER`

卸载


$ sudo umount /dev/sdb1
Reply Favorite View the author
All Replies
raspbian
deepin
2023-11-28 17:32
#1

exfat最大的优势就是

对于三种系统来说

不会带有任何一种系统的权限

Reply View the author
深圳市耀影科技有限公司
deepin
2023-11-28 19:11
#2
raspbian

exfat最大的优势就是

对于三种系统来说

不会带有任何一种系统的权限

  • 但是exfat 非日记 文件格式,有丢文件的可能性比较大
Reply View the author
raspbian
deepin
2023-11-28 20:37
#3
深圳市耀影科技有限公司
  • 但是exfat 非日记 文件格式,有丢文件的可能性比较大

2023年了。。。

况且

保证数据不丢失的最好方法

就是异地备份

日志式格式没你想得那么安全

少看半瓶水写的教程

Reply View the author
深圳市耀影科技有限公司
deepin
2023-11-28 22:19
#4
raspbian

2023年了。。。

况且

保证数据不丢失的最好方法

就是异地备份

日志式格式没你想得那么安全

少看半瓶水写的教程

  • 我现在就是 最近在做本地3+1备份 ,才发现这个问题,
  • 发现 deepin 的权限是相当的 混乱,提个单,看能解决不
  • 反而 是NTFS 磁盘分区,支持的很完美。。。。。
Reply View the author
sweetyfish
deepin
2023-11-29 01:56
#5

我这里使用gio也不可以呀?
2023-11-28-17-55-09-928.jpg

Reply View the author
sweetyfish
deepin
2023-11-29 02:14
#6

udisks2 挂载 ext4 时,挂载点权限为 777,用户为 root,组为 root(ext4不支持uid=$UID与gid=$GID的挂载参数);而挂载 ntfs 时,挂载的参数中有uid=$UID与gid=$GID,因此用户与组为挂载的用户本身。

因此在前者中,rsync 同步时会尝试修改用户(-o)+组(-g)+权限(-p)+时间(-t),而修改挂载点本身的 inode 需要 root 权限,rsync 会报错退出。

解决方案如 bbs 中说的,用sudo让权限等于UID即可。至于“解决2”中的gio的方法我无法复现。

同步到 GitHub 上了 https://github.com/linuxdeepin/developer-center/issues/6306#issuecomment-1829478644

Reply View the author
sweetyfish
deepin
2023-11-29 02:16
#7
sweetyfish

udisks2 挂载 ext4 时,挂载点权限为 777,用户为 root,组为 root(ext4不支持uid=$UID与gid=$GID的挂载参数);而挂载 ntfs 时,挂载的参数中有uid=$UID与gid=$GID,因此用户与组为挂载的用户本身。

因此在前者中,rsync 同步时会尝试修改用户(-o)+组(-g)+权限(-p)+时间(-t),而修改挂载点本身的 inode 需要 root 权限,rsync 会报错退出。

解决方案如 bbs 中说的,用sudo让权限等于UID即可。至于“解决2”中的gio的方法我无法复现。

同步到 GitHub 上了 https://github.com/linuxdeepin/developer-center/issues/6306#issuecomment-1829478644

如果不需要保留 用户、组、权限、时间的信息的话,可以用 --no-o --no-g --no-p --no-t 来解决,亲测可用

Reply View the author
深圳市耀影科技有限公司
deepin
2023-11-29 05:21
#8
sweetyfish

我这里使用gio也不可以呀?
2023-11-28-17-55-09-928.jpg

  • gio 需要执行俩个命令

挂载

gio mount -d /dev/disk-name
Mounted /dev/disk-name at /media/username/disk-name

根据楼主的图,如下

gio mount -d /dev/sda2
Mounted /dev/sda2 at /media/HaoSen/ext4​
Reply View the author
sweetyfish
deepin
2023-12-01 00:29
#9
深圳市耀影科技有限公司
  • gio 需要执行俩个命令

挂载

gio mount -d /dev/disk-name
Mounted /dev/disk-name at /media/username/disk-name

根据楼主的图,如下

gio mount -d /dev/sda2
Mounted /dev/sda2 at /media/HaoSen/ext4​

我图片里第一行就是gio mount呀

Reply View the author
深圳市耀影科技有限公司
deepin
2023-12-01 02:15
#10
sweetyfish

我图片里第一行就是gio mount呀

Mounted /dev/sda2 at /media/HaoSen/ext4

你还需要执行 这个命令 进行挂载分区 指定 挂载位置 到当前用户下

Reply View the author