macos中修改文件权限需先用ls -l查看当前权限结构,再用chmod(数字或符号模式)调整读写执行权限,必要时用chown/chgrp变更归属,acl可实现更细粒度授权。
在 macos 中,通过命令行修改文件系统访问权限,核心是控制谁(用户、组、其他人)能对文件或目录执行读(r)、写(w)、执行(x)操作。这不是单纯“放开权限”就行,而是要匹配实际需求——比如让脚本可运行、让项目目录可写入、让共享文件夹被协作编辑。关键在于理解权限结构,并用对命令和参数。
看懂当前权限:先用 ls -l 确认现状
在终端中运行 ls -l 文件名 或 ls -ld 文件夹名,输出类似:-rw-r--r-- 1 john staff 1207 Jun 5 10:22 report.txt
或drwxr-xr-x 3 john staff 96 Jun 5 10:25 project/
开头的 - 表示普通文件,d 表示目录;后面每三字符一组(如 rw-、r--、r--)分别对应所有者、所属组、其他用户的权限。数字权限(如 644、755)是这三组的八进制换算结果,必须对应理解才能安全修改。
用 chmod 精确调整读写执行权限
chmod 是最常用命令,支持两种写法:
-
数字模式(推荐用于批量或明确设定):三位数分别代表所有者、组、其他人的权限总和。例如:
•chmod 644 file.txt→ 所有者可读写(6=4+2),组和其他人只读(4);
•chmod 755 script.sh→ 所有者可读写执行(7),组和其他人可读执行(5);
•chmod -R 755 myfolder/→ 递归应用到该文件夹及其全部子项(慎用,避免误改系统文件)。 -
符号模式(适合局部微调):更直观,例如:
•chmod u+x script.sh→ 给所有者加执行权限;
•chmod go-w config.plist→ 移除组和其他人的写权限;
•chmod a=rw file.log→ 所有人仅设为可读写(无执行)。
用 chown 和 chgrp 调整归属关系
光改权限不够——如果文件不属于你,即使权限是 777,你也可能被拒绝访问。这时需变更所有者或所属组:
-
sudo chown john file.txt→ 把文件所有者改为用户 john; -
sudo chown john:staff folder/→ 同时指定所有者和组; -
sudo chgrp developers log/→ 只改所属组为 developers; -
sudo chown -R $USER:staff project/→ 递归把整个项目归当前用户所有,常用于修复 Homebrew 或开发环境权限错乱。
注意:修改系统路径(如 /usr/local)必须加 sudo,且需输入管理员密码。
需要更细粒度?用 ACL 补充权限规则
当标准三元权限(用户/组/其他)不够用时,比如想让同事 Alice 对某个文件有读写权,但又不把她加进原属组,可用访问控制列表(ACL):
- 先查看当前 ACL:
getfacl filename; - 给用户 Alice 添加读写权限:
sudo setfacl -m u:Alice:rw filename; - 验证是否生效:
getfacl filename会显示新增条目; - 移除某条 ACL:
sudo setfacl -x u:Alice filename。
ACL 是叠加在基础权限之上的,不会覆盖原有设置,适合协作场景下的临时授权或精细管控。











