小易说IT 小易说IT

Linux 系统操作目录属主与权限

两种场景:

场景 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 是进不去目录的

快速对比

方式

命令

优点

缺点

chown+chmod

chown user + chmod u=rwx

简单、兼容所有系统

只能给属主,一个目录只能一个属主

setfacl ACL

setfacl -m u:xxx:rwx

支持多个独立用户分权

需要 acl 包,cp/rsync 默认不携带 acl