两种场景:
场景 A:把目录属主改成这个用户,然后给属主 rwx(简单常用,chown + chmod) 场景 B:不改动属主,单独给某个指定用户加 rwx(推荐 ACL setfacl,适合多用户分权)
场景 A:将目录归属给 user1,所有者拥有读写执行
# 修改目录属主为 user1(root执行)
sudo chown user1 /data/testdir
# 给所有者读写执行 rwx
chmod u=rwx /data/testdir
# 如果要递归子目录、子文件全部生效
sudo chown -R user1 /data/testdir
chmod -R u=rwx /data/testdir
数字写法等价:chmod 700 /data/testdir(只有属主 rwx,其他人无权限)
场景 B:单独给指定用户 user1 增加 rwx(ACL,推荐!不改变原有属主)
适合:目录属于 root,但是想让 user1 也有 rwx 权限,不影响其他人权限
# 给 user1 添加 rwx 权限
sudo setfacl -m u:user1:rwx /data/testdir
# 递归(子目录子文件一起加)
sudo setfacl -R -m u:user1:rwx /data/testdir
# 设置默认ACL:以后新建文件/目录自动继承这个权限(非常常用)
sudo setfacl -d -m u:user1:rwx /data/testdir
查看 ACL 权限:
getfacl /data/testdir
删除该用户 ACL 权限:
setfacl -x u:user1 /data/testdir
⚠️ 注意:部分精简系统默认没装 acl 包,CentOS/RHEL:
yum install acl;Debian/Ubuntu:apt install acl
符号模式 chmod 补充(给原有属主加权限)
# 给所有者【增加】rwx(不是覆盖,原有权限保留叠加)
chmod u+rwx /data/testdir
u= owner 属主;g= 组;o= 其他用户;+增加、=设置覆盖、-移除
重要提醒(目录 x 权限和文件不一样)
目录的 x 权限 = 能否 cd 进入目录、访问里面文件,目录要正常读写,x 必须要有,只有 rw 是进不去目录的