Linux 组介绍

在 Linux 中的每个用户必须属于一个组,不能独立于组外。

在 Linux 中每个文件有所有者、所在组、其它组的概念。

  1. 所有者
  2. 所在组
  3. 其它组
  4. 改变用户所在的组

文件/目录 所有者

当某个用户创建了一个文件后,默认这个文件的所在组就是该用户的所在组

查看文件所有者

  1. ls -ahl
  2. # 示例
  3. # 创建一个组police,再创建一个用户tom,将tom 放在police组里,然后登录 tom的账户,创建一个ok.txt
  4. groupadd police
  5. useradd -g police tom
  6. passwd tom
  7. touch a.txt
  8. ls -ahl

组管理和权限管理 * - 图1

修改文件所有者

  1. # 修改文件所有者
  2. chown 用户名 文件名
  3. # 改变用户的所有者和所有组
  4. chown 选项 用户名:组名 file
  5. # 选项
  6. # -R 如果是目录,则递归使其所有目录、子文件都生效
  7. # 示例
  8. # 1.使用root 创建一个文件apple.txt ,然后将其所有者修改成 zf
  9. chown zf apple.txt
  10. # 2. 请将 abc 文件的所有者修改成 tom
  11. chown tom abc
  12. # 3. 请将 /home/kkk 目录下所有的文件和目录的所有者都修改成tom
  13. # 需要使用root用户操作
  14. chown -R tom kkk/

组的创建

  1. # groupadd 组名
  2. # 创建一个组,monster
  3. groupadd monster
  4. # 创建一个用户 fox,放入到 monster组中
  5. useradd -g monster fox
  6. passwd fox

修改文件所在组

  1. # chgrp 选项 组名 文件名
  2. # 选项
  3. # -R 如果是目录,则递归使其所有目录、子文件都生效
  4. # 示例
  5. # 1. 使用root用户创建文件 orange.txt ,看看当前这个文件属于哪个组,然后将这个文件所在组,修改到 police组
  6. chgrp police orange.txt
  7. # 2. 将 /home/abc .txt 文件的所在组修改成 shaolin (少林)
  8. chgrp shaolin /home/abc.txt
  9. # 3. 将 /home/kkk 目录下所有的文件和目录的所在组都修改成 shaolin(少林)
  10. chgrp -R shaolin /home/kkk

其它组

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

改变用户所在组

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

  1. usermod g 组名 用户名

权限的基本介绍*

-rwxrw-r— 1 root root 1213 Feb 2 09:39 abc

作用
[ - ] 第0位 确定文件类型(d:目录, - :普通文件, l :软连接, c:字符设备 , b:块文件)
[ rwx ] 第1-3位 所有者(该文件的所有者)拥有该文件的权限
[ rw- ] 第4-6位 与所有者同组的其它用户对该文件的权限
[ r— ] 第7-9位 不同组的其他用户对该文件的权限
1 文件:硬连接;目录:子目录数
root 用户
root
1213 文件大小(字节),如果是文件夹,显示4096字节
Feb 2 09:39 最后修改日期
abc 文件名

rwx 权限详解

代表 作用到文件 作用到目录
[ r ] 代表可读( read ) 可以读取,查看 可以读取,ls查看目录内容
[ w ] 代表可写( write ) 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件. 可以修改,目录内创建+删除+重命名目录
[ x ] 代表可执行( execute ) 可以被执行 可以进入该目录

修改权限

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

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

作用
u 所有者
g 所有组
o 其他人
a 所有人(u、g、o的总和)
  1. # 示例
  2. # 1. 给abc文件 的所有者读写执行的权限,给所在组读执行权限,给其它组读执行权限。
  3. chmod u=rwx,g=rx,o=rw abc
  4. # 2. 给abc文件的所有者除去执行的权限,增加组写的权限
  5. chmod u-x,g+w abc
  6. # 3. 给abc文件的所有用户添加读的权限
  7. chmod a+r abc

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

rwx 也可以用数字表示
r = 4,w = 2,x = 1,因此 rwx = 7

  1. # 案例
  2. # 将 abc文件的权限修改成 rwxr-xr-x, 使用给数字的方式实现:
  3. chmod 755 abc

实践:警察和土匪游戏

  1. # police , bandit
  2. # # jack, jerry: 警察
  3. # xh, xq: 土匪
  4. # (1) 创建组
  5. groupadd police
  6. groupadd bandit
  7. # (2) 创建用户
  8. useradd -g police jack
  9. useradd -g police jerry
  10. useradd -g bandit xh
  11. useradd -g bandit xq
  12. # (3) jack 创建一个文件,自己可以读写,本组人可以读,其它组没人任何权限
  13. touch police.txt
  14. chmod u=rw,g=r,o-r police.txt
  15. # (4) jack 修改该文件,让其它组人可以读, 本组人可以读写
  16. chmod g+w,o=r police.txt
  17. # (5) xh 投靠 警察,看看是否可以读写
  18. rootusermod -g police xh
  19. jackchmod g=rx jack
  20. xhlogout
  21. xhcd /home/jack

练习:西游记

  1. # 1. 建立两个组(神仙, 妖怪)
  2. groupadd shenxian
  3. groupadd yaoguai
  4. # 2. 建立四个用户( 唐僧, 悟空,八戒,沙僧),把悟空,八戒放入妖怪 ,唐僧 、沙僧放在神仙
  5. useradd-g shenxian tangseng
  6. useradd -g shenxian shaseng
  7. useradd -g yaoguai wukong
  8. useradd -g yaoguai bajie
  9. # 3. 设置密码
  10. passwd wukong
  11. passwd bajie
  12. passwd shaseng
  13. # 4. 用悟空建立一个文件 ( (monkey.java 该文件要输出 i am monkey) )
  14. wukongvim monkey.java
  15. # 5. 给八戒一个可以r w 的权限
  16. wukongchmod g=rw wukong
  17. # 6. 八戒修改monkey.java 加入一句话( i am pig)
  18. bajievim monkey.java
  19. # 7. 唐僧 沙僧 对该文件没有权限
  20. wukongchmod o-r monkey.java
  21. # 8. 把 沙僧 放入妖怪组
  22. rootusermod -g yaoguai shaseng
  23. # 9. 让沙僧 修改该文件 monkey, 加入一句话 (shaseng)"
  24. shasengvim monkey.java

综合练习

  1. # 1.用root登录,建立用户mycentos,自己设定密码
  2. useradd mycentos
  3. passwd mycentos
  4. # 2.用mycentos登录,在主目录下建立目录test/t11/t1
  5. mkdir -p test/t11/t1
  6. # 3.在t1中建立一个文本文件aa,用vi编辑其内容为ls –al
  7. vi aa
  8. # 4.改变aa的权限为可执行文件[可以将当前日期追加到一个文件],运行该文件./aa
  9. chmod 700 aa
  10. date > aa
  11. # 5.删除新建立的目录test/t11/t1
  12. rm -rf test
  13. # 6.删除用户mycentos及其主目录中的内容
  14. userdel -r mycentos
  15. # 7.将linux设置成进入到图形界面的
  16. init 5
  17. # 8. 重新启动linux或关机
  18. init 6