组管理
在linux中每个用户必须属于一个组,不能独立于组外,在linux中每个文件的所有者,所有组,其他组的概念
- 所有者
- 所有组
- 其他组
- 改变用户所在组
文件/目录 所有者
一般为文件的创建者,谁创建了文件,就自然成为该文件的所有者
查看文件的所有者
ls -l
或者ll
- 应用实例:创建一个组police,再创建一个用户tom,将tom放在police组,然后使用tom创建文件ok.txt
[root@localhost /]# groupadd police [root@localhost /]# useradd -g police tom [root@localhost /]# passwd tom [root@localhost /]# su tom [tom@localhost /]$ cd /home/tom/ [tom@localhost ~]$ ll 总用量 0 [tom@localhost ~]$ touch ok.txt [tom@localhost ~]$ ll 总用量 0 -rw-r--r--. 1 tom(所有者) police(所有组) 0 8月 9 23:30 ok.txt
修改文件的所有者
chown 用户名 文件名
- 应用实例:使用root创建文件apple.txt,然后再将其所有者修改成tom
[root@localhost tom]# ll 总用量 0 -rw-r--r--. 1 tom police 0 8月 9 23:30 ok.txt [root@localhost tom]# touch apple.txt [root@localhost tom]# ll 总用量 0 -rw-r--r--. 1 root root 0 8月 9 23:36 apple.txt -rw-r--r--. 1 tom police 0 8月 9 23:30 ok.txt [root@localhost tom]# chown tom apple.txt [root@localhost tom]# ll 总用量 0 -rw-r--r--. 1 tom root 0 8月 9 23:36 apple.txt -rw-r--r--. 1 tom police 0 8月 9 23:30 ok.txt
文件/目录所有组
组的创建
goupadd 组名
- 应用案例:创建一个组monster,创建一个用户fox,并放在monster中
[root@localhost tom]# groupadd monster [root@localhost tom]# useradd -g monster fox [root@localhost tom]# id fox uid=1005(fox) gid=1006(monster) 组=1006(monster)
查看文件/目录所有组
ls -l
或ll
修改文件/目录所在组
chgrp 组名 文件名
- 使用root用户创建orange.txt,看看当前文件属于哪个组,然后将这个文件所在组修改到police组
[root@localhost tom]# ll 总用量 0 -rw-r--r--. 1 tom root 0 8月 9 23:36 apple.txt -rw-r--r--. 1 tom police 0 8月 9 23:30 ok.txt [root@localhost tom]# touch orange.txt [root@localhost tom]# ll 总用量 0 -rw-r--r--. 1 tom root 0 8月 9 23:36 apple.txt -rw-r--r--. 1 tom police 0 8月 9 23:30 ok.txt -rw-r--r--. 1 root root 0 8月 9 23:48 orange.txt [root@localhost tom]# chgrp police orange.txt [root@localhost tom]# ll 总用量 0 -rw-r--r--. 1 tom root 0 8月 9 23:36 apple.txt -rw-r--r--. 1 tom police 0 8月 9 23:30 ok.txt -rw-r--r--. 1 root police 0 8月 9 23:48 orange.txt
其他组
除文件的所有者和所有组的用户外,系统的其他用户都是文件的其他组
权限管理
权限的基本介绍
rwx(7)作用详解
r(4)
:作用在文件表示可以读取,查看,作用在目录,表示可以读取(ls)w(2)
:作用在文件,可以修改文件,但是不能删除文件,作用在目录,则表示可以修改,目录内创建+删除+重命名目录x(1)
:作用在文件,代表可执行,作用在目录,代表可以进入
[root@localhost hz]# ll
总用量 60
drwx------. 4 hz hz 4096 7月 21 22:35 hz
-rw-r--r--. 1 root root 17589 7月 20 22:32 mydate.txt
drwxr-xr-x. 2 root root 4096 7月 21 22:30 test
drwxr-xr-x. 2 hz hz 4096 8月 9 23:19 公共
drwxr-xr-x. 2 hz hz 4096 8月 9 23:19 模板
drwxr-xr-x. 2 hz hz 4096 8月 9 23:19 视频
drwxr-xr-x. 2 hz hz 4096 8月 9 23:19 图片
drwxr-xr-x. 2 hz hz 4096 8月 9 23:19 文档
drwxr-xr-x. 2 hz hz 4096 8月 9 23:19 下载
drwxr-xr-x. 2 hz hz 4096 8月 9 23:19 音乐
d(A)rwx(B)r-x(C)r-x(D). 2(E) hz(F) hz(G) 4096(H) 8月 9 23:19(I) 桌面(J)
A文件类型(一个一组):
-
:普通文件d
:目录l
:软连接c
:字符设备(键盘、鼠标)b
:块文件(硬盘)
B文件所有者的权限(三个一组):
r
:只读w
:只写-
:没有权限
C文件所在组拥有的权限(三个一组):
r
:只读w
:只写-
:没有权限
D文件其他组的用户所拥有的权限(三个一组):
r
:只读w
:只写-
:没有权限
E表示: 如果是文件,则表示硬链接的数量,如果是目录,则表示该目录下的子目录个数
F表示: 所属用户
G表示: 所属组
H表示: 如果是文件,则表示文件大小,如果是目录,则固定是4096
I表示: 文件最后的修改时间
J表示: 文件名称
管理权限
chmod
指令,可以修改文件或者目录的权限
-
第一种方式:+、-、=变更权限
u
:所有者、g
:所有组、o
:其他人、a
:所有人chmod u=rwx,g=rx,o=x 文件/目录名称
:表示修改文件/目录的权限(直接覆盖原来的权限)chmod o+w 文件/目录名称
:在某文件/目录原来权限的基础上加权限chmod a-x 文件/目录名称
:在某文件/目录原来的基础上减权限
# 案例演示
# 1. 给abc文件的所有者读写执行权限,给所在组读执行权限,给其他组读执行权限
[tom@localhost ~]$ ll
总用量 0
- rw-r--r--. 1 tom bandit 0 8月 11 22:54 abc.txt
- rw-r--r--. 1 tom root 0 8月 9 23:36 apple.txt
- rw-r--r--. 1 tom bandit 0 8月 9 23:30 ok.txt
- rw-r--r--. 1 root bandit 0 8月 9 23:48 orange.txt
[tom@localhost ~]$ chmod u=rwx,g=rx,o=rx abc.txt
[tom@localhost ~]$ ll
总用量 0
- rwxr-xr-x. 1 tom bandit 0 8月 11 22:54 abc.txt
- rw-r--r--. 1 tom root 0 8月 9 23:36 apple.txt
- rw-r--r--. 1 tom bandit 0 8月 9 23:30 ok.txt
- rw-r--r--. 1 root bandit 0 8月 9 23:48 orange.txt
# 2. 给文件的所有者除去执行权限,增加所有组写的权限
[tom@localhost ~]$ ll
总用量 0
- rwxr-xr-x. 1 tom bandit 0 8月 11 22:54 abc.txt
- rw-r--r--. 1 tom root 0 8月 9 23:36 apple.txt
- rw-r--r--. 1 tom bandit 0 8月 9 23:30 ok.txt
- rw-r--r--. 1 root bandit 0 8月 9 23:48 orange.txt
[tom@localhost ~]$ chmod u-x,g+w abc.txt
[tom@localhost ~]$ ll
总用量 0
- rw-rwxr-x. 1 tom bandit 0 8月 11 22:54 abc.txt
- rw-r--r--. 1 tom root 0 8月 9 23:36 apple.txt
- rw-r--r--. 1 tom bandit 0 8月 9 23:30 ok.txt
- rw-r--r--. 1 root bandit 0 8月 9 23:48 orange.txt
# 3. 给abc文件所有用户添加读权限
[root@localhost tom]# ll
总用量 0
- rw-rwxr-x. 1 tom bandit 0 8月 11 22:54 abc.txt
- rw-r--r--. 1 tom root 0 8月 9 23:36 apple.txt
- rw-r--r--. 1 tom bandit 0 8月 9 23:30 ok.txt
- rw-r--r--. 1 root bandit 0 8月 9 23:48 orange.txt
[root@localhost tom]# chmod a+r abc.txt
[root@localhost tom]# ll
总用量 0
- rw-rwxr-x. 1 tom bandit 0 8月 11 22:54 abc.txt
- rw-r--r--. 1 tom root 0 8月 9 23:36 apple.txt
- rw-r--r--. 1 tom bandit 0 8月 9 23:30 ok.txt
- rw-r--r--. 1 root bandit 0 8月 9 23:48 orange.txt
-
第二种方式:通过数字变更权限
r=4、w=2、x=1、rwx=7
chmod u=rwx,g=rx,o=x 文件/目录名
相当于chmod 751 文件/目录名
# 案例演示 # 将abc.txt文件的权限修改成rwxr-xr-x,使用给数字的方式实现 [root@localhost tom]# ll 总用量 0 -rw-r--r--. 1 root root 0 8月 11 23:14 abc.txt [root@localhost tom]# chmod 755 abc.txt [root@localhost tom]# ll 总用量 0 -rwxr-xr-x. 1 root root 0 8月 11 23:14 abc.txt
修改文件所有者
chown newowner file
:改变文件的所有者
chown newowner:newgroup file
:改变用户所有者和所有组
-R 如果是目录,则使其下所有子文件或目录递归生效
# 案例演示
# 请将abc.txt文件的所有者修改成tom
[root@localhost fox]# ll
总用量 0
-rw-r--r--. 1 fox monster 0 8月 11 23:23 abc.txt
[root@localhost fox]# chown tom abc.txt
[root@localhost fox]# ll
总用量 0
-rw-r--r--. 1 tom monster 0 8月 11 23:23 abc.txt
# 请将kkk目录下所有文件和目录的所有者都修改成tom
[root@localhost fox]# ll
总用量 4
-rw-r--r--. 1 tom monster 0 8月 11 23:25 abc.txt
drwxr-xr-x. 2 fox monster 4096 8月 11 23:32 kkk
[root@localhost fox]# ll kkk
总用量 0
-rw-r--r--. 1 fox monster 0 8月 11 23:32 abcd.txt
[root@localhost fox]# chown -R tom kkk
[root@localhost fox]# ll
总用量 4
-rw-r--r--. 1 tom monster 0 8月 11 23:25 abc.txt
drwxr-xr-x. 2 tom monster 4096 8月 11 23:32 kkk
[root@localhost fox]# ll kkk
总用量 0
-rw-r--r--. 1 tom monster 0 8月 11 23:32 abcd.txt
修改文件所在组
chgrp newgroup file
:修改文件所在组
-R 如果是目录,则使其下所有子文件或目录递归生效
# 案例演示
# 请将abc.txt文件的所在组改成bandit
[root@localhost fox]# ll
总用量 4
-rw-r--r--. 1 tom monster 0 8月 11 23:25 abc.txt
drwxr-xr-x. 2 tom monster 4096 8月 11 23:32 kkk
[root@localhost fox]# chgrp bandit abc.txt
[root@localhost fox]# ll
总用量 4
-rw-r--r--. 1 tom bandit 0 8月 11 23:25 abc.txt
drwxr-xr-x. 2 tom monster 4096 8月 11 23:32 kkk
# 请将kkk目录下的所有文件/目录的所在组修改成bandit
[root@localhost fox]# ll
总用量 4
-rw-r--r--. 1 tom bandit 0 8月 11 23:25 abc.txt
drwxr-xr-x. 2 tom monster 4096 8月 11 23:32 kkk
[root@localhost fox]# ll kkk
总用量 0
-rw-r--r--. 1 tom monster 0 8月 11 23:32 abcd.txt
[root@localhost fox]# chgrp -R bandit kkk/
[root@localhost fox]# ll
总用量 4
-rw-r--r--. 1 tom bandit 0 8月 11 23:25 abc.txt
drwxr-xr-x. 2 tom bandit 4096 8月 11 23:32 kkk
[root@localhost fox]# ll kkk
总用量 0
-rw-r--r--. 1 tom bandit 0 8月 11 23:32 abcd.txt
最佳实践:警察土匪游戏
police,bandit
jack,jerry:警察(police)
xh,xq:土匪(bandit)
# 1. 创建组
[root@localhost home]# groupadd police
[root@localhost home]# groupadd bandit
# 2. 创建用户
[root@localhost home]# useradd -g police jack
[root@localhost home]# useradd -g police jerry
[root@localhost home]# useradd -g bandit xh
[root@localhost home]# useradd -g bandit xq
# 3. jack创建文件,自己可以读写,本组人可以读,其他组没有任何权限
[root@localhost jack]# su jack
[jack@localhost ~]$ cd /home/jack/
[jack@localhost ~]$ ll
总用量 0
[jack@localhost ~]$ vim abc.txt
[jack@localhost ~]$ ll
总用量 4
-rw-r--r--. 1 jack police 17 8月 12 23:23 abc.txt
[jack@localhost ~]$ chmod u=rw,g=r,o=- abc.txt
[jack@localhost ~]$ ll
总用量 4
-rw-r-----. 1 jack police 17 8月 12 23:23 abc.txt
# 4. jack修改文件,让其他组人可以读,本组人可以写
[jack@localhost ~]$ ll
总用量 4
-rw-r-----. 1 jack police 17 8月 12 23:23 abc.txt
[jack@localhost ~]$ chmod g=rw,o=r abc.txt
[jack@localhost ~]$ ll
总用量 4
-rw-rw-r--. 1 jack police 17 8月 12 23:23 abc.txt
# 5. xh投靠警察,看看是否可以读写
[root@localhost jack]# usermod -g police xh
[root@localhost jack]# su xh
[xh@localhost jack]$ ll
总用量 4
-rw-rw-r--. 1 jack police 17 8月 12 23:23 abc.txt
[xh@localhost jack]$ vim abc.txt