系列篇:
1. 组管理和权限管理
1.1 Linux 组基本介绍
在 linux 中每个用户必须属于一个组,不能独立于组外,在 linux 中每个文件有所有者、所在组、其他组的概念。
- 所有者
- 所在组
- 其它组
- 改变用户所在的组
示意图:
1.2 文件/目录 所有者
一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者
1.2.1 查看文件的所有者
指令:ls -ahl
应用实例:
- 创建一个组 police,在创建一个用户 tom,将 tom 放在 police 组, 然后使用 tom 来创建一个文件 ok.txt,看看情况如何
1.2.2 修改文件的所有者
指令:chown 用户名 文件名
应用案例:
- 使用 root 创建一个文件 apple.txt,然后将其所有者修改成 tom
1.2.2 修改文件的所在的组
基本指令:chgrp 组名 文件名
应用实例:
- 使用 root 用户创建文件 orange.txt,看看当前这个文件属于哪个组,然后将这个文件所在的组,修改到 police 组。
1.3 其它组
除文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组。
1.4 改变用户所在组
在添加用户时,可以指定将该用户添加到哪个组中,同样的使用 root 的管理权限可以改变某个用户所在的组。
1.4.1 改变用户所在组
1.4.1.1 基本指令
usermod -g 组名 用户名
usermod -d 目录名 用户名 改变该用户登陆的初始目录
1.4.1.2 应用实例
- 创建一个土匪组(bandit)将 tom 这个用户从原来所在的 police 组,修改到 bandit(土匪组)。
1.5 权限的基本介绍
ls -l 中显示的内容如下:
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
0-9 位说明
1)第 0 位确定文件类型(d,-,l,c,b)
2)第 1-3 位确定所有者(该文件的所有者)拥有该文件的权限。–User
3)第 4-6 位确定所属组(同用户组的)拥有该文件的权限。–Group
4)第 7-9 位确定其他用户拥有该文件的权限。–Other
如下图所示:
1.6 rwx 权限详解
1.6.1 rwx 作用到文件
- 【r】代表可读 read:可以读取,查看
- 【w】代表可写 write:可以修改,但是不代表可以删除该文件,删除一个文件的的前提条件是对该文件所在的目录有写权限,才能删除该文件。
- 【x】代表可执行 execute:可以被执行
1.6.2 rwx 作用到目录
- 【r】代表可读 read:可以读取,ls 查看目录内容
- 【w】代表可写 write:可以修改,目录内创建+删除+重命名目录
- 【x】代表可执行 execute:可以进入该目录
1.7 文件及目录权限实际案例
ls -l 中显示的内容如下:
-rwxrwr-- 1 root root 1213 Feb 2 09:39 abc
10 个字符确定不同用户能对文件干什么
第一个字符代表文件类型:文件(-),目录(d),链接(l)
其余字符每3个一组(rwx),读®写(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 文件名称
1.8 修改权限 chmod 指令
1.8.1 基本说明
通过 chmod 指令,可以修改文件或者目录的权限。
1.8.2 权限示意图
1.8.3 变更权限
1.8.4 第一种方式:+、-、=变更权限
u:所有者、g:所有组、o:其他人、a:所有人(u、g、o的总和)
1)chmod u=rwx,g=rx,o=x 文件目录命
2)chmod o+w 文件目录名
3)chmod a-x 文件目录名
案例演示
- 给 abc 文件的所有者读写执行的权限,给所在组读执行权限,给其他组读执行权限。
- 给 abc 文件的所有者除去执行的权限,增加组写的权限
- 给 abc 文件的所有用户只设置读的权限
1.8.5 第二种方式:通过数字变更权限
数字变更权限的规则如下:
r=4 w=2 x=1 rwx=4+2+1=7
chmod u=rwx,g=rx,o=x 文件目录名
相当于 cmod 751 文件目录名
案例演示:
- 将 /home/abc.txt 文件的权限修改成 rwxr-xr-x,使用数字的方式实现
1.9 修改文件所有者 chown
1.9.1 基本介绍
chown newowner file 改变文件的所有者
chown newowner:newgroup file 改变用户的所有者和所有组
-R 如果是目录,则使其下的所有子文件或目录递归生效
1.9.2 案例演示
- 将 /home/abc.txt 文件的所有者修改成 tom
- 将 /home/kkk 目录下的所有的文件和目录的所有都修改成 tomc
1.10 修改文件所在组 chgrp
1.10.1 基本介绍
chgrp newgroup file 改变文件的所有组
1.10.2 案例演示
- 请将 /home/abc.txt 文件所在的组修改成 bandit
- 请将 /home/kkk 目录下所有的文件和目录的所在组都修改成 shaolin
1.11 最佳实践—警察和土匪游戏
police、bandit
jack,jerry:警察
xh,xq:土匪
- 创建组。
groupadd police
groupadd bandit - 创建用户。
useradd -g police jack
useradd -g police jerry
useradd -g bandit xh
useradd -g bandit xq - jack 创建一个文件,自己可以读写、本组人可以读,其它组没任何权限。
【r=4 w=2 x=1】640理解为 6自己读写、4本组人读、0其它组没权限
- jack 修改该文件,让其它组人可以读,本组人可以读写。
- xh 投靠警察,看看是否可以读写。
首先修改xh的组
然后修改 jack 的目录权限【同一组用户具备rx读、执行的全写】
最后使用 xh 进入 jack 的目录即可操作 jacko1.txt 文件
1.12 最佳实践2—西游记
-
建立两个组(神仙,妖怪)
-
建立四个用户(唐僧,悟空,八戒,沙僧),为其设置密码,把悟空、八戒放入妖怪组,唐僧、沙僧放入神仙组
-
用悟空建立一个文件 monkey.java 该文件要输出 i am monkey
-
给八戒一个可以 rw 读写的权限
-
八戒修改 monkey.java 加入一句话 i am pig
首先修改 wukong 目录同组 rx 权限
然后 bajie 进入 wikong 目录修改 monkey.java 文件即可
-
唐僧沙僧对该文件没有权限(默认情况下其它组没有任何权限)
-
把沙僧放入妖怪组
-
让沙僧修改 monkey.java ,加入一句话 “我是沙僧,我是妖怪!”