☰
Ubuntu /data 权限问题全解:从 Permission denied 到普通用户彻底掌控
2026/10/10 10:01:26 网站建设 项目流程

折腾过 Ubuntu 的朋友多半都碰到过这个场景:系统装好了,数据盘也挂到了根目录下的 /data,一切看起来岁月静好,直到你想把下载的东西、训练的模型、日常备份丢进 /data,终端却冷冰冰地甩给你一句 Permission denied。

我第一次遇到这问题,第一反应是盘坏了还是挂载错了,排查半天才发现,分区没问题,挂载也没问题,真正卡人的是挂载点 /data 这个目录本身的权限——属主是 root,权限 755,普通用户只有进入和读取的份,完全没有写入资格。这种感觉就像你明明拿到了钥匙进了小区门,却发现单元门锁着,而且你根本不在住户名单上。

这篇就把"普通用户掌控 /data 分区"这件事彻底说透。我会先讲清楚权限卡人的底层原因,再把 fstab 挂载参数和文件系统类型的关系拆明白,然后给出 chown 直接接管、用户组共享、ACL 精细授权三条完整路线,最后附上我亲自验证过的一整套实操流程,以及几个不踩不知道的坑。无论你是刚装好 Ubuntu 的新手,还是被权限问题反复折磨的老手,照着这篇操作,一次搞定的概率很高。

1. 为什么 /data 分区会拦住普通用户:权限问题的根源在哪里

1.1 花力气搞独立分区,到底图什么

先聊点背景。很多人喜欢把一块单独的硬盘或一个单独的分区挂载到根目录下的 /data,而不是直接塞到 /home /opt 这些既有路径里。这么干一般基于三个现实需求:

一是数据与系统隔离。系统出问题重装 Ubuntu,只要不格式化 /data,里边的文件都能留存。做机器学习的人通常把预训练权重、数据集放这里,系统折腾几遍都无所谓,数据稳如老狗。

二是 IO 隔离。数据库、日志、容器镜像这类读写频繁的数据,放在独立分区的物理盘上,不会和系统盘的读写互相抢带宽,也能避免日志把根分区塞满,导致整台机器变砖。

三是备份和扩容方便。独立分区可以直接快照、直接迁移、甚至直接挂在另一台机器上;扩容时也只需要动这个分区,不用牵扯系统盘。

好处很直观,但坏处也随之而来:分区一旦挂载到某个目录,这个目录就继承了分区根目录的属主和权限,而绝大多数 Linux 发行版默认挂载后,分区根目录的属主是 root,普通用户对挂载点只有读和执行权限。你看到的 /data 目录,本质上是"一块有独立文件系统的磁盘在目录树上的入口",但这个入口的门禁规则,由文件系统内部记录的元数据决定。

1.2 真正的卡点:挂载点属主和那三位权限位

要搞清楚为什么普通用户被拒之门外,先在终端敲两行命令:

ls -ld /data stat /data

正常情况下你会看到类似这样的输出:

drwxr-xr-x 4 root root 4096 2月 10 10:23 /data

这一行信息量很大。开头的 d 表示这是一个目录,然后 drwxr-xr-x 这九个字符分成了三组:owner 权限(前三位,rwx)、group 权限(中间三位,r-x)、others 权限(后三位,r-x)。后面紧跟的两个 root,前一个是属主(owner),后一个是属组(group)。

也就是说,/data 的属主和属组都是 root,普通用户落在 "others" 这一档,只有读取(r)和进入(x)的权限,没有写入(w)权限。这个 w 就是"能否在这个目录里创建文件、删除文件"的总开关。你没有它,就算确定了分区空间充足、文件系统没锁、硬盘没坏,也一个字都写不进去。

很多新手在这里会产生一个误解:是不是要往 /etc/fstab 里加什么挂载参数?或者给 /data 打个 chmod 777 让所有人都能写?我要泼一盆冷水:直接在根目录做 chmod 777 是最差的做法,安全性几乎等于挂空挡。真正合理的思路是——想清楚这台机器是"一个人用"还是"一群人用",再决定用哪种权限模型。这正是这一篇要带你完成的决策。

顺带一提,为什么默认新建的分区目录会卡人?因为绝大多数发行版的模板挂载行为就是这样的:新格式化文件系统的根目录默认 root 属主、755/775 权限。这不是 bug,是安全设计——先默认不让任何人操作,再由管理员按需放权。理解了这一层,你后面做的所有配置都会变得顺理成章。

2. fstab 挂载参数里其实藏着半条权限门路

2.1 搞懂 /etc/fstab 的六列,你才敢动挂载配置

既然要长期让 /data 挂载生效,就不可能每次开机手动 mount,早晚要写进 /etc/fstab。写之前必须把这六列的含义记牢,否则手一抖填错一列,机器开机可能直接进紧急模式。

先看一个典型条目:

UUID=6d8a1c22-2b5e-4c1e-9bfe-5e2d40f84ad1 /data ext4 defaults 0 2

六列依次是:

列作用示例关键点
第一列设备标识UUID /dev/sdb1 /dev/disk/by-uuid/...推荐用 UUID,设备名会漂移
第二列挂载点/data必须是真实存在的目录
第三列文件系统类型ext4 / xfs / btrfs / vfat必须和分区实际类型一致
第四列挂载选项defaults,noatime权限配置的门路主要在这里
第五列是否需要 dump 备份0 / 1几乎都写 0
第六列fsck 开机检查顺序0 / 1 / 2根分区 1,其他数据分区 2,不需要检查写 0

设备标识这一列特别重要。我刚接触 Linux 时习惯了写 /dev/sdb1,结果有一次加了一块新硬盘,系统把设备名重新分配,fstab 里的 /dev/sdb1 指向了别处,开机直接挂载失败。后来全部改为 UUID 再也没出过这种问题。获取 UUID 的方法很简单:

sudo blkid

输出里每个分区的 UUID 一目了然,直接复制进 fstab 就行。

2.2 只有 FAT 系文件系统才吃 uid/gid 参数,ext4/xfs 别白费劲

关于挂载选项这一列,我必须把一个流传很广的误区讲透:不少人以为在 fstab 里加 uid=1000、umask=000 之类的参数,就能让普通用户写入 /data。这个认知只对了一半,而且偏偏错在 Linux 原生文件系统上。

uid、gid、umask、fmask、dmask 这些挂载参数,只对 FAT(vfat)、exFAT、NTFS 这类不支持 POSIX 权限记录的文件系统有效。因为这些文件系统没有"文件属主、属组、权限位"的元数据概念,挂载时必须由内核在运行时临时指定一套权限伪装出来。所以对 U 盘、移动硬盘这类 vfat/ntfs 设备,确实可以靠挂载参数解决权限问题。

但 ext4、xfs、btrfs 这类 Linux 原生文件系统完全不吃这一套。它们的磁盘元数据里本来就老老实实记录着每个文件、每个目录的属主和权限位,挂载参数根本改不了文件系统内部已经固化的这些东西。你在 fstab 里写 uid=1000,ext4 分区会直接无视;即使挂载成功,目录权限也纹丝不动。

所以配置前一定要先确认 /data 是什么文件系统:

sudo blkid /dev/sdb1

看到 TYPE="ext4" 或 TYPE="xfs",就放弃在 fstab 参数上做文章的想法,老老实实走文件系统内部的权限修改路线。看到 TYPE="vfat" 或 TYPE="exfat",再考虑用挂载参数。这个"按文件系统类型选方案"的判断,是所有权限配置里最容易被忽视、又最影响成败的一步。

3. 普通用户掌控 /data 的三种主流做法

3.1 单人设备:chown 直接接管分区,干脆利落

如果你的 Ubuntu 主要就你一个普通用户使用,不打算给第二个人开权限,那最直接的方式就是把 /data 的属主和属组整个改成你自己的用户名。

sudo chown -R 你的用户名:你的用户名 /data

执行完再 ls -ld /data,属主已经从 root 变成你的用户名,你可以在这个目录下自由创建、修改、删除文件,整个过程没有任何中间环节。

为什么适合单人场景?因为 chown 的做法是"整体移交所有权",逻辑简单粗暴,权限模型非常清晰:这块地归你了,你说了算。适合家用电脑、个人开发机、需要存放个人数据的独立盘。

但要注意两点:第一,-R 参数会递归改变 /data 下所有现有文件的属主,如果盘上已经有很多数据,这个操作会一次性全部改标的;第二,如果 /data 里未来还要跑某些服务(比如数据库实例),这些服务往往有自己专门的运行用户(mysql、postgres),你一把梭把整个目录归到个人用户名下,反而可能让服务失去对自己数据文件的权限而拒绝启动。所以 chown 接管前,先掂量一下这个分区是不是纯个人数据区。如果还要兼顾服务,请优先看下一种方案。

3.2 多人共享:用户组 + setgid + 默认 ACL 的黄金组合

如果这台机器上有好几个普通用户都要用 /data,你当然可以把他们都设成管理员,但这完全不现实。正确姿势是创建一个专用用户组,把需要访问 /data 的人全部拉进这个组,然后让 /data 的属组变成这个组。

先建组、加人:

sudo groupadd datausers sudo usermod -aG datausers 你的用户名 # 有其他用户就再来一条 usermod -aG datausers 其他用户名

然后修改 /data 的属主和属组:

sudo chown root:datausers /data sudo chmod 2775 /data

这里的 2775 有讲究。第一位 2 是 setgid 位,它会让这个目录下新建的文件和子目录,自动继承目录的属组(datausers),而不是创建者自己的默认组。中间两位 770 的意思是属主(root)可读写执行,属组(datausers)可读写执行,末尾 5 表示其他人只能读和执行。

为什么强烈建议加 setgid?没有它,用户 A 在 /data 里创建的文件属组是 A 的个人组,用户 B 想编辑这个文件就可能因为组权限不足被拒绝。加上 setgid 之后,新建文件的属组自动变成 datausers,所有组员都能按照"组权限"访问,协作效率天差地别。

另一个关键问题是:setgid 只解决了"组归属",没有解决"组权限"。默认情况下一个用户的 umask 是 022,意味着新建文件权限是 644,组员只有读权限,依然改不了。要让整个组的成员都能互相读写协作文件,两条路:一是让用户的 umask 改成 002(改 umask 会影响全局,不推荐);二是给 /data 设置默认 ACL,让新建的文件和目录自动对 datausers 组开放读写执行:

sudo setfacl -d -m g:datausers:rwx /data

这样之后用户无论谁在这个目录下新建文件,其他组员都自动拥有读写权限,共享体验才真正到位。

最后再考虑一个实际需求:组内用户之间能不能互相删除对方的文件?默认情况下,如果目录是组可写的,同一组的用户完全有权限删掉别的组员创建的文件,这在多人协作时容易误伤。解决办法是给目录加上粘滞位(sticky bit),也就是把权限从 2775 改成 3775:

sudo chmod 3775 /data

有一个现成的例子就在你身边:/tmp 目录就是 1777 权限,任何人都能写入,但用户只能删除自己创建的文件。加上粘滞位之后,/data 既保持了组内共享,又杜绝了"我一觉醒来文件被同事顺手清了"的惨案。

3.3 精细授权:setfacl 只给指定用户开口子

前两种方案都是"一刀切"式授权:要么归一个人,要么归一组人。但现实场景里经常出现这种需求——/data 主要归 root 管理,其他人一律不碰,唯独有个临时人员需要读取其中一部分目录,或者某个开发人员只需要能写入特定子目录,其他路径禁止访问。

这种"只给某一个用户额外开口子"的诉求,用 chmod/chown 很难优雅实现,这时候就轮到 ACL(访问控制列表)出场了。Ubuntu 默认支持 ACL,你可以直接执行:

sudo setfacl -m u:zhangsan:rwx /data

这个命令的意思是:给用户 zhangsan 单独授予 /data 的读写执行权限,但完全没有改动 /data 原有的属主和属组,其他用户的权限也一点不受影响。查看当前 ACL 规则:

getfacl /data

输出里会多出一行 u:zhangsan:rwx 的特定用户授权记录。在复杂环境中,ACL 还可以对目录设置默认规则,让这个目录下所有新建的子目录自动继承指定授权:

sudo setfacl -d -m u:zhangsan:rwx /data

这就完成了"我对这个目录有长期授权,而且以后新出现的子目录也自动放行"的效果。

ACL 的另一个隐藏价值在于可撤销干净。不需要的时候一条命令就能收回权限:

sudo setfacl -x u:zhangsan /data

传统 chown 的授权如果要撤回,你得手工改属主,影响面大;ACL 则可以做到"增加一条记录、删除一条记录",像操作名单一样精准。多用户、多角色、权限边界要求清晰的环境,ACL 是最合适的工具。

三种方案各有各的适用边界,简单整理成一张表:

方案核心命令适用场景最大优势主要风险
chown 接管sudo chown -R user:user /data单人单机、纯个人数据盘逻辑简单,权限清晰会改变全盘属主,服务数据有风险
用户组 + setgidchmod 2775 /data + usermod -aG多人共享、团队协作维护成本低,新用户只需一条命令同组可互删文件,需配合粘滞位
ACL 精细授权setfacl -m u:xxx:rwx /data多角色、权限边界严格的环境精准放权、可单独撤销命令稍复杂,需要理解 mask 规则

选择核心只有一个问题:这盘数据是"一个人独占"、"一组人共享"还是"不同人不同权限"。想清楚了,方案自然浮出水面。

4. 一套可以直接抄的完整实操流程

理论聊完了,说再多不如直接跑一遍。下面这套流程我照着走完过无数次,每一步都写清楚目的。

4.1 动手前先侦察:分区、文件系统类型、当前挂载状态

第一步永远不是改权限,而是把现状看清楚。先列出所有分区:

lsblk

确认你要配置的分区是哪个设备名,比如 /dev/sdb1。然后看它的文件系统类型:

sudo blkid /dev/sdb1

记下输出里的 UUID 和 TYPE。如果 TYPE 是 ext4/xfs/btrfs,接下来走 chown/chmod/setfacl 路线;如果是 vfat/exfat,再考虑用挂载参数。

接着确认 /data 现在的挂载状态:

df -h /data mount | grep /data

如果 /data 还没有挂载任何分区,先临时挂载一次:

sudo mount /dev/sdb1 /data

如果 /data 已经挂载了分区,但你想换一个分区挂上去,记得先把旧分区卸载:

sudo umount /data

卸载之前可以用 lsof 确认没有任何进程占用:

sudo lsof +D /data

返回空白说明可以安全卸载。这里容易翻车的情况是:你正在某个终端里 cd 到 /data,理论上不影响卸载,但如果有服务进程(比如数据库)正在使用 /data,umount 会提示 device is busy。此时要么停服务,要么用 lazy 卸载(sudo umount -l /data),但这个操作有数据风险,非必要不建议。

4.2 临时挂载 + 改权限:选一个方案执行下去

挂载好之后,根据前面的决策选一个方案执行。

如果决定"单人接管":

sudo chown -R 你的用户名:你的用户名 /data

如果决定"用户组共享":

sudo groupadd datausers sudo usermod -aG datausers 你的用户名 sudo chown root:datausers /data sudo chmod 3775 /data sudo setfacl -d -m g:datausers:rwx /data

如果决定"ACL 精细授权":

sudo setfacl -m u:zhangsan:rwx /data sudo setfacl -d -m u:zhangsan:rwx /data

改完立刻验证一下,不要等到重启才发现问题:

ls -ld /data getfacl /data

正常情况下,chown 方案里属主变为你的用户名;组方案里权限位应显示 drwxrwsr-x(那个 s 就是 setgid 位)或 drwxrwsr-t(粘滞位生效);ACL 方案里 getfacl 能看到多出来的用户授权记录。

4.3 写进 fstab 并验证重启:别让配置开机后失效

权限改完只是第一步。如果不写 fstab,下次重启 /data 还是没挂载,权限白改了。用 UUID 追加一行:

echo "UUID=上面查到的UUID /data ext4 defaults 0 2" | sudo tee -a /etc/fstab

注意文件系统类型要和 blkid 查到的 TYPE 一致。写完之后先验证配置是否生效:

sudo mount -a

这条命令会重新读取 /etc/fstab 并尝试挂载所有未挂载的分区。没有任何报错说明配置基本没问题。如果报错了,立刻打开 /etc/fstab 检查改对,千万别急着重启。

确认挂载无误后,在 /data 里随便建一个测试目录,然后再重启:

mkdir -p /data/测试 && ls -ld /data/测试 sudo reboot

重启后用普通用户身份登录,试着在 /data 里创建一个文件:

cd /data && touch 权限验证.txt && ls -l 权限验证.txt

如果不报错,文件创建成功,说明整套配置已经生效。这一步往往最直观:不少人在重启后发现普通用户还是写不进去,多数原因是 fstab 里的挂载点写错了、根本没自动挂载,或者用户组变更后没有重新登录,权限状态还是旧的。

4.4 如果开机进 emergency mode,怎么救回来

这一节属于"希望你用不上,但万一碰上能保命"的内容。fstab 写错最典型的下场是:开机到一半,系统弹出一个提示,说无法挂载某个分区,让你输入 root 密码进入维护模式(emergency mode)。

遇到这种情况别慌,这是 Ubuntu 在给你机会补救。输完 root 密码后,系统挂载的是只读根分区,先把它重新挂载为可写:

mount -o remount,rw /

然后直接编辑 fstab,把刚才写错的那行注释掉或改正:

vim /etc/fstab

如果你用的是 Ubuntu Server 桌面环境都没有,vi 也一样。保存后输入 reboot 重启,基本就能正常进入系统。修复后立刻重新 blkid、mount -a,确认正确了再重新配置。

我见过有人在这个环节反复翻车的核心原因是:编辑 fstab 时用了裸设备名 /dev/sdX,但不同启动环境下设备名会变化。这就是为什么我一再强调用 UUID——设备名会漂移,UUID 是分区身份证,稳定可靠。

5. 权限配置的坑和安全边界,动手前心里要有数

5.1 盘上已有数据?先备份,别一失手成千古恨

这一节专门写给"从旧环境迁移数据到 /data"的人。很多人的 /data 不是空盘,而是从旧系统、旧硬盘整体拷过来的数据。在这种情况下执行 chown -R 是风险很高的操作:它会递归改变盘上所有文件的属主,如果这里面有数据库文件、配置文件、容器的 volume,改变属主可能导致服务启动失败。

举个例子:一台跑 MySQL 的机器,数据目录放在 /data/mysql,这个目录原本属主是 mysql:mysql。你图省事对整个 /data 执行了 chown -R youruser:youruser,MySQL 服务重新启动时会发现数据文件属主不对,直接拒绝读取并报权限错误。

所以动手前务必想清楚:第一,先备份。数据量大的话也可以用快照,但绝不能裸奔操作。第二,如果要改权限的分区上已经有服务数据,优先考虑"只对特定子目录改权限"而非全盘 chown。这也是 ACL 方案在这种场景下的优势:它不会碰原有属主和属组,只是在文件系统层面上追加一条授权记录,对服务数据的影响最小。

5.2 Ubuntu 的 AppArmor 和权限修改:什么时候会互相影响

很多从 CentOS 转过来的同学一上来就问 SELinux 怎么办。这里先澄清一个常识:Ubuntu 默认启用的是 AppArmor,不是 SELinux。普通用户配置 /data 权限,绝大多数情况下都不会碰到 AppArmor 拦截。AppArmor 的机制是给应用绑定安全配置文件(profile),限制应用能访问哪些路径,你给终端用户开放 /data 写入,跟 AppArmor 完全不是一回事。

但有一种情况要留神:如果 /data 里跑的是带独立 AppArmor profile 的系统服务,比如容器运行时、Apache/Nginx 或者数据库,而服务的 profile 明确限制了它只能访问某些路径,那你把 /data 权限改了之后,服务可能依然无法读写数据。排查这个问题用:

sudo aa-status

查看相关服务的 profile 状态。如果服务确实受限,还需要调整对应 profile 或把数据放回 profile 允许的路径。不过这只影响特定服务场景,对大多数"我就想往 /data 扔点文件"的需求来说,AppArmor 基本不需要关心。这个边界提前说清楚,能帮你少走弯路。

5.3 这些场景我真的不建议把 /data 交给普通用户

权限放开容易收紧难,下面几类场景就算你的技术手段再娴熟,我也建议保守一点。

第一,数据敏感度高的目录。如果 /data 里存的是日志、客户资料、鉴权凭证这类内容,给普通用户开放读写权限等于在数据安全上开了个大口子。这种情况下最好保持 root 属主,需要查看时用 sudo 按需放权,或者只给特定用户只读权限。

第二,多租户服务器环境。如果一个 /data 分区上同时跑多个业务、多个用户的数据,你应该考虑给每个业务分配独立子目录并配合配额(quota)管理,而不是把整个 /data 下放给所有用户。裸放权限意味着任何一个用户都可以写满整块盘,拖垮整机 IO。

第三,数据库实例的数据目录。MySQL、PostgreSQL 这类数据库对自己的数据文件有严格的属主和权限要求,通常会要求目录属主必须是专用服务用户。对这种数据目录,正确做法是保持服务用户属主,最多通过 ACL 给运维人员开只读权限,绝不能整体 chown 给普通用户。

做权限配置的基本原则永远是"最小权限":给到刚够用的程度,多一点都是负担。权限放出去之后,再想收回来往往要付出比当初大得多的代价。

6. 日常使用中最值得记下来的几个小经验

6.1 新文件的组归属和权限老不对?先查 setgid 和 umask

配置完成后,最常遇到的问题就是"我在 /data 里新建的文件,组员怎么还是不能编辑"。这种问题十有八九出在两个环节。

第一个环节:新建文件的属组没有继承 datausers。用 ls -l 看一眼新文件,如果属组显示的是你自己的个人组,说明目录的 setgid 位没生效。排查方法:ls -ld /data,权限位里应该有 s 或者 t(如 drwxrwsr-t),没有就重新执行 chmod 3775 /data。注意对 /data 本身设置 setgid,只会影响"之后新建"的文件,对已存在的旧文件无效。

第二个环节:属组对了,但组员依然没有写权限。原因是新文件的权限位是 644,即属组只有读权限。这由创建者的 umask 决定。解决方式不是强迫用户改全局 umask 002,而是给 /data 设置默认 ACL,命令我在 3.2 节给过:

sudo setfacl -d -m g:datausers:rwx /data

设置默认 ACL 后,新建文件的组权限会被 ACL 规则覆盖为 rwx,这才是多人协作的正确做法。如果你发现之前已经创建了一大批文件,但组员无法修改,可以批量修复:

sudo setfacl -R -m g:datausers:rwx /data

给已有文件补上对组员的读写权限。这个命令可以放心用,它只新增授权,不影响原有属主。

6.2 加进用户组却没权限?九成是没重新登录

这是所有权限配置里最经典、也最容易被忽视的一个坑。现象很典型:你把用户张三执行了 usermod -aG datausers 张三,命令返回成功,你以为万事大吉,结果张三登录后依然无法写入 /data。

原因不是权限没生效,而是张三的当前登录会话是在加入组之前建立的。Linux 的用户组信息在登录时加载进会话,你中途改了用户的组列表,已经打开的终端、SSH 会话不会自动刷新。排查方法也很简单:

id 张三

注意输出里 Groups 部分有没有 datausers。如果 id 输出里能看到 datausers 组,但实际操作还没有权限,说明会话没刷新,让张三重新登录一次即可。SSH 用户直接断开重连,桌面用户注销再登录。临时要立即生效也可以用:

newgrp datausers

这个命令会在当前终端切换到 datausers 组身份,适合应急验证,但新开终端仍然建议重新登录。你要是早知道了这个机制,会少跑很多冤枉路。

还有一个相似的高频坑:root 用户测试权限时能写,普通用户测试时不能写,然后你怀疑配置出错了。其实 root 在 Linux 里基本不受权限位约束(除非 AppArmor/SELinux 介入),用 root 测试权限是无效测试。真正验证时必须用目标用户身份:

sudo -u 张三 touch /data/测试文件.txt

或者 su 切换到张三再测试。这条经验看起来简单,实际排障效率翻倍。

6.3 我自己的配置习惯,以及一条终极排障技巧

按我这些年摸爬滚打的经验,个人电脑我通常会用 chown 直接接管,图省事;团队共享服务器上我一律走"用户组 + setgid + 粘滞位 + 默认 ACL"这套组合。原因很简单:新同事入职时只需要一条 usermod -aG datausers,退出时一条 gpasswd -d,不需要动 /data 的任何权限配置,维护成本最低。而 ACL 我一般用来给"组外特批用户"开临时权限,用完即删,干净利落。

这里提供一条终极排障思路,可以应对 90% 的权限问题:用户说"我写不进 /data"时,不要凭猜测改权限,而是按顺序自查——先看 df -h /data 确认分区挂载了;再 ls -ld /data 看目录权限和属主;然后用 id 用户名 看用户归属和组关系;最后 sudo -u 用户名 touch /data/test 模拟用户写入验证。这四个步骤走一遍,问题出在哪个环节一目了然。几乎所有权限困惑,最终都能在这里找到答案。

如果你现在正被 /data 的 Permission denied 气得冒烟,别急着把锅甩给分区和硬盘,按这篇的思路走一遍,你大概率会对系统的权限模型多一些理解。以后遇到其他目录的权限问题,也能举一反三,不再抓瞎。权限这件事,理解清楚了就是一层窗户纸,捅破之前隔着整座山。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询