1. ┌─[root@parrot]─[/home/jtz/Desktop]
  2. └──╼ #ls -al | grep Temp
  3. drwxrwx---+ 2 jtz jtz 4096 12 сар 16 19:57 Temp

查看当前ACL

  1. ┌─[root@parrot]─[/home/jtz/Desktop]
  2. └──╼ #getfacl Temp/
  3. # file: Temp/
  4. # owner: jtz
  5. # group: jtz
  6. user::rwx
  7. group::rwx
  8. other::---

这个目录并没有 ACL 因为列出的唯一权限是针对用户、组和其他人

设置访问控制列表

  1. # 语法
  2. setfacl [option] [action/specification] file
  3. # -m 修改
  4. # -x 删除
  5. # -d 默认值
  6. # action/specification : 是指用户和组,后跟我们要设置的权限
  7. # 在设置组 ACL 时需要在组名前加 g: (eg: g:jtz:rwx) 对于用户将 g 改为 u 即可,不过 u 为默认

现在我们设置一个默认 ACL

  1. ┌─[root@parrot]─[/home/jtz/Desktop]
  2. └──╼ #setfacl -d -m jtz:rwx Temp/
  3. # mask 有效权限掩码,此条目限制所有组和指定用户的有效权限,文件所有者和其他人不受此权限影响
  4. ┌─[root@parrot]─[/home/jtz/Desktop]
  5. └──╼ #getfacl Temp/
  6. # file: Temp/
  7. # owner: jtz
  8. # group: jtz
  9. user::rwx
  10. group::rwx
  11. other::---
  12. default:user::rwx
  13. default:user:jtz:rwx
  14. default:group::rwx
  15. default:mask::rwx
  16. default:other::---

现在在我们当前组添加一个用户 Fred

  1. ┌─[✗]─[root@parrot]─[/home/jtz/Desktop]
  2. └──╼ #useradd fred
  3. ┌─[root@parrot]─[/home/jtz/Desktop]
  4. └──╼ #usermod -g jtz fred
  5. ┌─[root@parrot]─[/home/jtz/Desktop]
  6. └──╼ #cat /etc/passwd | grep 1003
  7. jtz:x:1000:1003:JTZ:/home/jtz:/bin/bash
  8. fred:x:1001:1003::/home/fred:/bin/sh

我们让 fred 在 Temp 目录中创建一个文件

  1. ┌─[fred@parrot]─[/home/jtz/Desktop/Temp]
  2. └──╼ $touch test
  3. ┌─[fred@parrot]─[/home/jtz/Desktop/Temp]
  4. └──╼ $ls -al
  5. 总用量 8
  6. drwxrwx---+ 2 jtz jtz 4096 12 сар 17 10:17 .
  7. drwxr-xr-x 3 jtz jtz 4096 12 сар 17 09:33 ..
  8. -rw-rw----+ 1 fred jtz 0 12 сар 17 10:17 test
  9. ┌─[fred@parrot]─[/home/jtz/Desktop/Temp]
  10. └──╼ $getfacl test
  11. # file: test
  12. # owner: fred
  13. # group: jtz
  14. user::rw-
  15. user:jtz:rwx #effective:rw-
  16. group::rwx #effective:rw-
  17. mask::rw-
  18. other::---

现在我们创建第三个用户 Kenny ,使用该用户尝试在 Temp 中创建一个文件

  1. ┌─[root@parrot]─[/home/jtz/Desktop]
  2. └──╼ #useradd Kenny
  3. ┌─[✗]─[root@parrot]─[/home/jtz/Desktop]
  4. └──╼ #su Kenny
  5. $ bash
  6. ┌─[Kenny@parrot]─[/home/jtz/Desktop]
  7. └──╼ $cd Temp/
  8. bash: cd: Temp/: 权限不够
  9. # 现在我们设置权限让 Kenny 可以创建文件
  10. ┌─[root@parrot]─[/home/jtz/Desktop]
  11. └──╼ #setfacl -m Kenny:rwx Temp/
  12. ┌─[root@parrot]─[/home/jtz/Desktop]
  13. └──╼ #getfacl Temp/
  14. # file: Temp/
  15. # owner: jtz
  16. # group: jtz
  17. user::rwx
  18. user:Kenny:rwx
  19. group::rwx
  20. mask::rwx
  21. other::---
  22. default:user::rwx
  23. default:user:jtz:rwx
  24. default:group::rwx
  25. default:mask::rwx
  26. default:other::---

现在我们创建 Kenny 自己的文件夹,赋予他所有权,让 jtz 组成为组所有者,以便 jtz 组中其他人可以查看其中内容

  1. ┌─[root@parrot]─[/home/jtz/Desktop]
  2. └──╼ #cd Temp/
  3. ┌─[root@parrot]─[/home/jtz/Desktop/Temp]
  4. └──╼ #mkdir Kenny
  5. ┌─[root@parrot]─[/home/jtz/Desktop/Temp]
  6. └──╼ #chown Kenny:jtz Kenny/
  7. ┌─[root@parrot]─[/home/jtz/Desktop/Temp]
  8. └──╼ #getfacl Kenny/
  9. # file: Kenny/
  10. # owner: Kenny
  11. # group: jtz
  12. user::rwx
  13. user:jtz:rwx
  14. group::rwx
  15. mask::rwx
  16. other::---
  17. default:user::rwx
  18. default:user:jtz:rwx
  19. default:group::rwx
  20. default:mask::rwx
  21. default:other::---
  22. # 现在 Kenny 用户就可以在 Kenny 文件夹中创建文件

现在 Kenny 文件夹归 jtz 组所有,这个组的所有人都可以将文件放在那里,但是如果我们r让 Kenny 成为首席审计师并对 Fred 保密

  1. ┌─[root@parrot]─[/home/jtz/Desktop/Temp]
  2. └──╼ #setfacl -m fred:- Kenny/
  3. ┌─[root@parrot]─[/home/jtz/Desktop/Temp]
  4. └──╼ #getfacl Kenny/
  5. # file: Kenny/
  6. # owner: Kenny
  7. # group: jtz
  8. user::rwx
  9. user:jtz:rwx
  10. user:fred:---
  11. group::rwx
  12. mask::rwx
  13. other::---
  14. default:user::rwx
  15. default:user:jtz:rwx
  16. default:group::rwx
  17. default:mask::rwx
  18. default:other::---
  19. ┌─[root@parrot]─[/home/jtz/Desktop/Temp]
  20. └──╼ #su fred
  21. $ bash
  22. ┌─[fred@parrot]─[/home/jtz/Desktop/Temp]
  23. └──╼ $cd Kenny/
  24. bash: cd: Kenny/: 权限不够

如果我们不让所有人查看 Kenny 文件,应该怎么设置

  1. ┌─[root@parrot]─[/home/jtz/Desktop/Temp]
  2. └──╼ #setfacl -m g:jtz:- Kenny/
  3. ┌─[root@parrot]─[/home/jtz/Desktop/Temp]
  4. └──╼ #chmod g-rwx Kenny/
  5. ┌─[root@parrot]─[/home/jtz/Desktop/Temp]
  6. └──╼ #ls -al
  7. 总用量 16
  8. drwxrwx---+ 3 jtz jtz 4096 12 сар 17 10:35 .
  9. drwxr-xr-x 3 jtz jtz 4096 12 сар 17 09:33 ..
  10. drwx------+ 2 Kenny jtz 4096 12 сар 17 10:35 Kenny
  11. -rw-rw----+ 1 fred jtz 0 12 сар 17 10:17 test
  12. ┌─[root@parrot]─[/home/jtz/Desktop/Temp]
  13. └──╼ #getfacl Kenny/
  14. # file: Kenny/
  15. # owner: Kenny
  16. # group: jtz
  17. user::rwx
  18. user:jtz:rwx #effective:---
  19. group::rwx #effective:---
  20. group:jtz:---
  21. mask::---
  22. other::---
  23. default:user::rwx
  24. default:user:jtz:rwx
  25. default:group::rwx
  26. default:mask::rwx
  27. default:other::---
  28. ┌─[jtz@parrot]─[~/Desktop/Temp]
  29. └──╼ $cd Kenny/
  30. bash: cd: Kenny/: 权限不够

参考文章