如何在不使用chown和chgrp的情况下访问另一台计算机创建的ext4分区中的文件
这个问题其实是ext4文件系统的权限机制导致的——它认的是用户ID(UID)和组ID(GID),不是你看到的用户名!原来机器上的theuser对应某个UID(比如Linux默认新建用户的UID通常是1000),现在新机器的用户名虽然不一样,但只要绕开用户名匹配,直接对应用户ID或者调整权限映射就行,给你几个可行的办法:
挂载时指定UID/GID映射(推荐长期使用)
挂载ext4分区的时候,直接把分区的所有文件权限映射到当前机器的用户和组上。首先得知道当前用户的UID和GID,可以用id命令查看(输出里的uid=xxx(yourusername)和gid=xxx(yourgroup)就是)。
临时挂载的话,执行:mount /dev/sdXn /mnt/ext4drive -o uid=你的UID,gid=你的GID要是想开机自动挂载,编辑
/etc/fstab文件,添加类似这样的一行:/dev/sdXn /mnt/ext4drive ext4 defaults,uid=你的UID,gid=你的GID 0 2这样每次挂载后,分区里的文件都会被当前用户拥有,直接就能访问了。
临时切换到原用户的UID
如果你知道原来机器上theuser的UID(比如默认是1000),可以直接切换到对应UID的用户身份来访问文件,不需要修改任何权限。执行以下命令之一就行:su -l -u 1000 # 切换到UID为1000的用户环境 # 或者用sudo(需要sudo权限) sudo -u \#1000 bash这个方法适合偶尔访问文件的场景,用完退出就行,不会改动分区里的任何权限设置。
使用ACL(访问控制列表)添加权限
给当前用户单独添加对该分区的访问权限,这个不需要修改文件的所有者,只是额外增加权限。首先确保ext4分区挂载时支持ACL,如果已经挂载了,先重新挂载开启ACL:mount -o remount,acl /mnt/ext4drive然后给当前用户添加递归的读写执行权限:
setfacl -R -m u:你的当前用户名:rwx /mnt/ext4drive要是想开机自动开启ACL,同样在
/etc/fstab里的挂载选项加上acl,比如defaults,acl。这个方法适合需要给多个用户分配权限的场景。
备注:内容来源于stack exchange,提问作者kstn

