Linux 组基本介绍

在 linux 中的每个用户必须属于一个组,不能独立于组外。在 linux 中每个文件有所有者、所在组、其它组的概念。

  • 所有者 : 一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者。
  • 所在组 : 文件所在的组中的用户,都对该文件享有一定的权限
  • 其它组:文件不在的组都视为其他组

    文件、目录所有者

    一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者。

    查看文件的所有者

    1. ls -ahl
    1. [root@localhost ~]# ll
    2. 总用量 40
    3. -rw-------. 1 root root 2024 8 11 15:05 anaconda-ks.cfg
    4. -rw-r--r--. 1 root root 2072 8 11 15:20 initial-setup-ks.cfg
    5. drwxr-xr-x. 2 root root 4096 8 11 15:21 公共
    6. drwxr-xr-x. 2 root root 4096 8 11 15:21 模板
    7. drwxr-xr-x. 2 root root 4096 8 11 15:21 视频
    8. drwxr-xr-x. 2 root root 4096 8 11 15:21 图片
    9. drwxr-xr-x. 2 root root 4096 8 11 15:21 文档
    10. drwxr-xr-x. 2 root root 4096 8 11 15:21 下载
    11. drwxr-xr-x. 2 root root 4096 8 11 15:21 音乐
    12. drwxr-xr-x. 2 root root 4096 8 11 15:21 桌面
    image.png

    修改文件所有者

    1. chown 用户名 文件名

    使用 root 创建一个文件 apple.txt,然后将其所有者修改成 tom

  1. [root@localhost home]# touch apple.txt
  2. [root@localhost home]# ll
  3. 总用量 4
  4. -rw-r--r--. 1 root root 0 9 1 11:40 apple.txt
  5. drwx------. 15 tom tom 4096 8 11 15:45 tom
  6. [root@localhost home]# chown tom apple.txt
  7. [root@localhost home]# ll
  8. 总用量 4
  9. -rw-r--r--. 1 tom root 0 9 1 11:40 apple.txt
  10. drwx------. 15 tom tom 4096 8 11 15:45 tom

组的创建

  1. groupadd 组名

创建一个组 monster,创建一个用户 fox ,并放入到monster组中

  1. [root@localhost home]# groupadd monster
  2. [root@localhost home]# useradd -g monster fox
  3. [root@localhost home]# ll
  4. 总用量 8
  5. -rw-r--r--. 1 tom root 0 9 1 11:40 apple.txt
  6. drwx------. 3 fox monster 4096 9 1 14:03 fox
  7. drwx------. 15 tom tom 4096 8 11 15:45 tom

修改文件、目录所在的组

  1. chgrp 组名 文件名

使用 root 用户创建文件 orange.txt ,看看当前这个文件属于哪个组,然后将这个文件所在组,修改到 fruit 组

  1. 1.groupadd fruit
  2. 2.touch orange.txt
  3. 3.查看当前文件属于那个组
  4. 4.chgrp fruit orange.txt
  5. [root@localhost home]# groupadd fruit
  6. [root@localhost home]# touch orange.txt
  7. [root@localhost home]# ll
  8. 总用量 8
  9. -rw-r--r--. 1 tom root 0 9 1 11:40 apple.txt
  10. drwx------. 3 fox monster 4096 9 1 14:03 fox
  11. -rw-r--r--. 1 root root 0 9 1 14:09 orange.txt
  12. drwx------. 15 tom tom 4096 8 11 15:45 tom
  13. [root@localhost home]# chgrp fruit orange.txt
  14. [root@localhost home]# ll
  15. 总用量 8
  16. -rw-r--r--. 1 tom root 0 9 1 11:40 apple.txt
  17. drwx------. 3 fox monster 4096 9 1 14:03 fox
  18. -rw-r--r--. 1 root fruit 0 9 1 14:09 orange.txt
  19. drwx------. 15 tom tom 4096 8 11 15:45 tom
  20. [root@localhost home]#

其他组

除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组。

改变用户所在组

在添加用户时,可以指定将该用户添加到那个组中,同样的用root的管理权限可以改变某个用户所在的组。

  1. uermod -g 新组名 用户名
  2. usermod -d 目录名 用户名 改变该用户登录的初始目录。
  3. 特别说明:用户需要有进入到新目录的权限。

将用户 fox 从原来所在的组,修改到animal组

  1. [root@localhost home]# groupadd animal
  2. [root@localhost home]# usermod -g animal fox
  3. [root@localhost home]# ll
  4. 总用量 8
  5. -rw-r--r--. 1 tom root 0 9 1 11:40 apple.txt
  6. drwx------. 3 fox animal 4096 9 1 14:03 fox
  7. -rw-r--r--. 1 root fruit 0 9 1 14:09 orange.txt
  8. drwx------. 15 tom tom 4096 8 11 15:45 tom

权限的基本介绍

ls -l显示效果如下

  1. [root@localhost ~]# ls -l
  2. 总用量 40
  3. -rw-------. 1 root root 2024 8 11 15:05 anaconda-ks.cfg
  4. -rw-r--r--. 1 root root 2072 8 11 15:20 initial-setup-ks.cfg
  5. drwxr-xr-x. 2 root root 4096 8 11 15:21 公共
  6. drwxr-xr-x. 2 root root 4096 8 11 15:21 模板
  7. drwxr-xr-x. 2 root root 4096 8 11 15:21 视频
  8. drwxr-xr-x. 2 root root 4096 8 11 15:21 图片
  9. drwxr-xr-x. 2 root root 4096 8 11 15:21 文档
  10. drwxr-xr-x. 2 root root 4096 8 11 15:21 下载
  11. drwxr-xr-x. 2 root root 4096 8 11 15:21 音乐
  12. drwxr-xr-x. 2 root root 4096 8 11 15:21 桌面
  13. 0-9 位说明
  14. 0 位确定文件类型(d, - , l , c , b)
  15. - 是文件,相当于windows 的文件
  16. l 是链接,相当于 windows 的快捷方式
  17. d 是目录,相当于 windows 的文件夹
  18. c 是字符设备文件,鼠标,键盘
  19. b 是块设备,比如硬盘
  20. 1-3 位确定所有者(该文件的所有者)拥有该文件的权限 ---User
  21. 4-6 位确定所属组(同用户组的)拥有该文件的权限 ---Group
  22. 7-9 位确定其他用户拥有该文件的权限 ---Other

rwx 权限详解,难点

rwx 作用到文件

  1. r 代表可读(read): 可以读取,查看
  2. w 代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件
  3. x 代表可执行(execute):可以被执行

    rwx 作用到目录

  4. r 代表可读(read): 可以读取,ls 查看目录内容

  5. w 代表可写(write): 可以修改, 对目录内创建+删除+重命名目录
  6. x 代表可执行(execute):可以进入该目录

    文件及目录权限实际案例

    ls -l 中显示的内容如下:
    -rwxrw-r— 1 root root 1213 Feb 2 09:39 abc
  • 10 个字符确定不同用户能对文件干什么

第一个字符代表文件类型: - l d c b
其余字符每 3 个一组(rwx) 读(r) 写(w) 执行(x)
第一组 rwx : 文件拥有者的权限是读、写和执行
第二组 rw- : 与文件拥有者同一组的用户的权限是读、写但不能执行
第三组 r— : 不与文件拥有者同组的其他用户的权限是读不能写和执行

  • 可用数字表示为: r=4,w=2,x=1 因此 rwx=4+2+1=7 , 数字可以进行组合
  • 其它说明

1 文件:硬连接数或 目录:子目录数
root 用户
root 组
1213 文件大小(字节),如果是文件夹,显示 4096 字节
Feb 2 09:39 最后修改日期
abc 文件名

修改权限 chmod

基本说明

通过 chmod 指令,可以修改文件或者目录的权限。

第一种方式:+ 、-、= 变更权限

u:所有者 g:所有组 o:其他人 a:所有人(u、g、o 的总和)

  • chmod u=rwx,g=rx,o=x 文件/目录名
  • chmod o+w 文件/目录名
  • chmod a-x 文件/目录名

    案例演示

给 abc 文件 的所有者读写执行的权限,给所在组读执行权限,给其它组读执行权限。

  1. chmod u=rwx,g=rx,o=rx abc
  2. [root@localhost home]# ll
  3. 总用量 12
  4. -rw-r--r--. 1 root root 4 9 6 13:53 abc
  5. [root@localhost home]# chmod u=rwx,g=rx,o=rx abc
  6. [root@localhost home]# ll
  7. 总用量 12
  8. -rwxr-xr-x. 1 root root 4 9 6 13:53 abc

给 abc 文件的所有者除去执行的权限,增加组写的权限

  1. chmod u-x,g+w abc
  2. [root@localhost home]# chmod u-x,g+w abc
  3. [root@localhost home]# ll
  4. 总用量 12
  5. -rw-rwxr-x. 1 root root 4 9 6 13:53 abc

给 abc 文件的所有用户添加读的权限

  1. chmod a+r abc
  2. [root@localhost home]# chmod a+r abc
  3. [root@localhost home]# ll
  4. 总用量 12
  5. -rw-rwxr-x. 1 root root 4 9 6 13:53 abc

第二种方式:通过数字变更权限

r=4 w=2 x=1 rwx=4+2+1=7
chmod u=rwx,g=rx,o=x 文件目录名
chmod 751 文件/目录名 效果相同

案例演示

将 /home/abc.txt 文件的权限修改成 rwxr-xr-x, 使用给数字的方式实现

  1. chmod 755 /home/abc.txt
  2. [root@localhost home]# chmod 755 abc
  3. [root@localhost home]# ll
  4. 总用量 12
  5. -rwxr-xr-x. 1 root root 4 9 6 13:53 abc

修改文件所有者chown

基本说明

改变所有者 chown newowner 文件/目录
改变所有者和所在组 chown newowner:newgroup 文件/目录
-R 如果是目录 则使其下所有子文件或目录递归生效

案例演示

将 /home/abc.txt 文件的所有者修改成 tom

  1. [root@localhost home]# ll
  2. 总用量 16
  3. -rwxr-xr-x. 1 root root 4 9 6 13:53 abc
  4. drwx------. 3 fox animal 4096 9 1 14:03 fox
  5. drwxr-xr-x. 2 root root 4096 9 6 14:34 test
  6. drwx------. 15 tom tom 4096 8 11 15:45 tom
  7. [root@localhost home]# chown tom /home/abc
  8. [root@localhost home]# ll
  9. 总用量 16
  10. -rwxr-xr-x. 1 tom root 4 9 6 13:53 abc
  11. drwx------. 3 fox animal 4096 9 1 14:03 fox
  12. drwxr-xr-x. 2 root root 4096 9 6 14:34 test
  13. drwx------. 15 tom tom 4096 8 11 15:45 tom

将 /home/test 目录下所有的文件和目录的所有者都修改成 tom

  1. [root@localhost home]# ll
  2. 总用量 16
  3. -rwxr-xr-x. 1 tom root 4 9 6 13:53 abc
  4. drwx------. 3 fox animal 4096 9 1 14:03 fox
  5. drwxr-xr-x. 2 root root 4096 9 6 14:34 test
  6. drwx------. 15 tom tom 4096 8 11 15:45 tom
  7. [root@localhost home]# chown -R tom /home/test/
  8. [root@localhost home]# ll
  9. 总用量 16
  10. -rwxr-xr-x. 1 tom root 4 9 6 13:53 abc
  11. drwx------. 3 fox animal 4096 9 1 14:03 fox
  12. drwxr-xr-x. 2 tom root 4096 9 6 14:34 test
  13. drwx------. 15 tom tom 4096 8 11 15:45 tom

修改文件/目录所在组chgrp

基本说明

chgrp newgroup 文件/目录 【 改变所在组】

案例演示

将/home/abc .txt 文件的所在组修改成 shaolin (少林)

  1. [root@localhost home]# ll
  2. 总用量 16
  3. -rwxr-xr-x. 1 tom root 4 9 6 13:53 abc
  4. drwx------. 3 fox animal 4096 9 1 14:03 fox
  5. drwxr-xr-x. 2 tom root 4096 9 6 14:34 test
  6. drwx------. 15 tom tom 4096 8 11 15:45 tom
  7. [root@localhost home]# groupadd shaolin
  8. [root@localhost home]# chgrp shaolin /home/abc
  9. [root@localhost home]# ll
  10. 总用量 16
  11. -rwxr-xr-x. 1 tom shaolin 4 9 6 13:53 abc
  12. drwx------. 3 fox animal 4096 9 1 14:03 fox
  13. drwxr-xr-x. 2 tom root 4096 9 6 14:34 test
  14. drwx------. 15 tom tom 4096 8 11 15:45 tom

将 /home/test 目录下所有的文件和目录的所在组都修改成 shaolin(少林)

  1. [root@localhost home]# chgrp -R shaolin /home/test/
  2. [root@localhost home]# ll
  3. 总用量 16
  4. -rwxr-xr-x. 1 tom shaolin 4 9 6 13:53 abc
  5. drwx------. 3 fox animal 4096 9 1 14:03 fox
  6. drwxr-xr-x. 2 tom shaolin 4096 9 6 14:34 test
  7. drwx------. 15 tom tom 4096 8 11 15:45 tom

实践-警察与土匪游戏

警 察police : jack, jerry
土 匪bandit: xh, xq

  1. 创建组 groupadd police ; groupadd bandit

    1. [root@localhost home]# groupadd police
    2. [root@localhost home]# groupadd bandit
  2. 创建用户useradd -g police jack ; useradd -g police jerry useradd -g bandit xh; useradd -g bandit xq

    1. [root@localhost home]# useradd -g police jack
    2. [root@localhost home]# useradd -g police jerry
    3. [root@localhost home]# useradd -g bandit xh
    4. [root@localhost home]# useradd -g bandit xq
  3. jack 创建一个文件,自己可以读 r 写 w,本组人可以读,其它组没人任何权限。首先 jack 登录 ; vim jack.txt ; chmod 640 jack.txt

    1. [root@localhost home]# su - jack
    2. [jack@localhost ~]$ ls
    3. [jack@localhost ~]$ pwd
    4. /home/jack
    5. [jack@localhost ~]$ vim jack.txt
    6. [jack@localhost ~]$ cat jack.txt
    7. hello
    8. [jack@localhost ~]$ ll
    9. 总用量 4
    10. -rw-r--r--. 1 jack police 6 11 2 21:21 jack.txt
    11. [jack@localhost ~]$ chmod 640 jack.txt
    12. [jack@localhost ~]$ ll
    13. 总用量 4
    14. -rw-r-----. 1 jack police 6 11 2 21:21 jack.txt
  4. jack 修改该文件,让其它组人可以读, 本组人可以读写chmod o=r,g=rw jack.txt

    1. [jack@localhost ~]$ chmod o=r,g=rw jack.txt
    2. [jack@localhost ~]$ ll
    3. 总用量 4
    4. -rw-rw-r--. 1 jack police 6 11 2 21:21 jack.txt
  5. xh 投靠 警察,看看是否可以读写. usermod -g police xh测试,看看 xh 是否可以读写,xq 是否可以,

    1. [root@localhost ~]# usermod -g police xh
    2. [root@localhost ~]# su - xh
    3. [xh@localhost ~]$ cd /home/
    4. [xh@localhost home]$ ll
    5. 总用量 44
    6. -rw-r--r--. 1 root root 0 7 4 23:11 cat.txt
    7. -rw-r--r--. 1 root root 4 7 4 22:42 hello.txt
    8. drwxr-xr-x. 2 root root 4096 7 4 23:16 home
    9. drwx------. 5 jack police 4096 11 2 21:21 jack
    10. drwx------. 3 jerry police 4096 11 2 21:12 jerry
    11. -rw-r--r--. 1 root root 1721 7 4 23:04 myhome.tar.gz
    12. -rw-r--r--. 1 root root 3478 7 4 23:15 myhome.ter.gz
    13. -rw-r--r--. 1 root root 1847 7 4 22:51 myhome.zip
    14. -rw-r--r--. 1 root root 130 7 4 23:13 pc.tar.gz
    15. -rw-r--r--. 1 root root 0 7 4 23:11 pig.txt
    16. drwx------. 3 tom tom 4096 4 11 2018 tom
    17. drwx------. 5 xh police 4096 11 2 21:30 xh
    18. drwx------. 3 xq bandit 4096 11 2 21:13 xq
    19. [xh@localhost home]$ cd jack/
    20. -bash: cd: jack/: 权限不够
    21. [xh@localhost home]$ exit
    22. 登出
    23. [root@localhost ~]# cd /home/
    24. [root@localhost home]# ll
    25. 总用量 44
    26. -rw-r--r--. 1 root root 0 7 4 23:11 cat.txt
    27. -rw-r--r--. 1 root root 4 7 4 22:42 hello.txt
    28. drwxr-xr-x. 2 root root 4096 7 4 23:16 home
    29. drwx------. 5 jack police 4096 11 2 21:34 jack
    30. drwx------. 3 jerry police 4096 11 2 21:12 jerry
    31. -rw-r--r--. 1 root root 1721 7 4 23:04 myhome.tar.gz
    32. -rw-r--r--. 1 root root 3478 7 4 23:15 myhome.ter.gz
    33. -rw-r--r--. 1 root root 1847 7 4 22:51 myhome.zip
    34. -rw-r--r--. 1 root root 130 7 4 23:13 pc.tar.gz
    35. -rw-r--r--. 1 root root 0 7 4 23:11 pig.txt
    36. drwx------. 3 tom tom 4096 4 11 2018 tom
    37. drwx------. 5 xh police 4096 11 2 21:34 xh
    38. drwx------. 3 xq bandit 4096 11 2 21:13 xq
    39. [root@localhost home]# chmod 770 jack
    40. [root@localhost home]# ll
    41. 总用量 44
    42. -rw-r--r--. 1 root root 0 7 4 23:11 cat.txt
    43. -rw-r--r--. 1 root root 4 7 4 22:42 hello.txt
    44. drwxr-xr-x. 2 root root 4096 7 4 23:16 home
    45. drwxrwx---. 5 jack police 4096 11 2 21:34 jack
    46. drwx------. 3 jerry police 4096 11 2 21:12 jerry
    47. -rw-r--r--. 1 root root 1721 7 4 23:04 myhome.tar.gz
    48. -rw-r--r--. 1 root root 3478 7 4 23:15 myhome.ter.gz
    49. -rw-r--r--. 1 root root 1847 7 4 22:51 myhome.zip
    50. -rw-r--r--. 1 root root 130 7 4 23:13 pc.tar.gz
    51. -rw-r--r--. 1 root root 0 7 4 23:11 pig.txt
    52. drwx------. 3 tom tom 4096 4 11 2018 tom
    53. drwx------. 5 xh police 4096 11 2 21:34 xh
    54. drwx------. 3 xq bandit 4096 11 2 21:13 xq
    55. [root@localhost home]# su - xh
    56. 上一次登录:二 11 2 21:30:09 CST 2021pts/2
    57. [xh@localhost ~]$ cd /home/jack/
    58. [xh@localhost jack]$ ll
    59. 总用量 4
    60. -rw-rw-r--. 1 jack police 6 11 2 21:21 jack.txt
    61. [xh@localhost jack]$ cat jack.txt
    62. hello
    63. [xh@localhost jack]$ vim jack.txt
    64. [xh@localhost jack]$ cat jack.txt
    65. iiihello
  6. 小结论,就是如果要对目录内的文件进行操作,需要要有对该目录的相应权限

  7. 对文件夹 rwx 的细节讨论和测试
  • x: 表示可以进入到该目录, 比如 cd
  • r: 表示可以 ls , 将目录的内容显示
  • w: 表示可以在该目录,删除或者创建文件