一、权限的基本介绍
1.位数含义
-
ls -l
中显示的内容
其中第0行中一共有9位,对这9位进行分析 -
第0位:确定文件类型(d,-,l,c,b)
- l:表示链接,相当于window中的快捷方式;
- -:表示普通文件,如txt文件等
- d:表示目录,相当于windows中的文件夹;
- c:表示字符设备文件,鼠标,键盘等;
- b:表示是块设备,如硬盘等
-
第1-3位:确定所有者(该文件的所有者) 拥有该文件的权限——User
-
第4-6位:确定所属组(同用户组的)拥有该文件的权限——Group
-
第7-9位:确定其他用户拥有该文件的权限——Other
2.rwx权限的含义
注意除了第0位,其他位都有不同的rwx的写法
-
rwx作用到文件
【r】
代表可读(read):可以读取,查看【w】
代表可写(write):可以修改,但是不代表可以删除文件,删除一个文件的前提条件是对该文件所在目录有写权限,才能删除该文件【x】
代表可执行(execute):可以被执行
-
rwx作用到目录
【r】
代表可读(read):可以读取,ls查看目录内容【w】
代表可读(write):可以修改,对目录内创建+删除+重命名目录【x】
代表可读(execute):可以进入该目录
3. 其他说明
- rwx可以用数字表示,其中
- r=4;w=2;x=1
- 剩余说明
- 1表示文件:硬连接数或目录:子目录
- root表示用户
- root表示组
- 1926表示文件大小(字节)
- 时间表示最后修改日期
- 最后一栏表示文件名
二、修改权限
1. 概述-chmod
- 通过chmod指令,可以修改文件或目录的权限
2. 第一种方式:+,-,=变更权限
- u:所有者 g:所在组 o:其他人 a:所有人(ugo的总和)
chmod u=rwx,g=rx,o=x 文件/目录名
(表示直接给权限)chmod o+w 文件/目录名
(表示单独添加w权限)chmod a-x 文件/目录名
(表示去掉x权限)
- 上诉的中=:赋予权限;+:单独赋予权限;-:去掉某一权限
3.案例
3.1给abc文件的所有者读写执行的权限,给所在组读执行权限,给其他组读执行权限
chmod u=rwx,g=rx,o=rx abc.txt
3.2给abc文件的所有者除去执行的权限,增加组写的权限
chmod u-x,o+w abc.txt
3.3给abc文件的所有用户添加读的权限
chmod a+r abc.txt
4. 第二种方式:通过数字变更权限
-
r =4 w=2 x=1
-
rwx=r+w+x=7
-
chmod u=rwx,g=rx,o=x 文件目录名
相当于chmod 751 文件目录名
5. 案例
将/home/abc.txt文件的权限修改程rwxr-xr-x,使用给数字的方式实现:
chmod 755 /home/abc.txt
三、修改文件/目录所有者-chown
chown newowner 文件/目录名
:改变所有者chown newowner:newgroup 文件/目录
:改变所有者和所在组-R
:如果是目录 则使其下所有子文件或目录递归生效
案例
四、修改文件/目录所在组-chgrp
chgrp newgroup 文件/目录
:改变所在组- 如果想要修改修改一整个文件,需要加-R。与上面修改所有者一样
案例
五、警察和土匪游戏
问题描述:警察阵营:jack,jerry;土匪阵营:xh,xq;要求:
- 创建组
- 创建用户
- jack创建一个文件,自己可以读写,本人组可以读,其他组没有人有权限
- jack修改该文件,让其他组人可以读,本人组可以读写
- xh投靠警察,看看是否可以读写
groupadd police
groupadd bandit
useradd -g police jack
useradd -g police jerry
useradd -g bandit xh
useradd -g bandit xq
//创建文件,自己可以读写,让本组人可读,其他组无权限
vim jack.txt
chmod 640 jack.txt
//修改该文件,让其他组人可以读,本组人可以读写
chmod g=wr,o=r jack.txt
//修改小红的组
usermod -g police xh
//修改本组的权限,小红才能读去到jack写的文件
chmod 770 jack
该类问题有个特征
- 同组的用户,用户一创建一个文件,给予用户二一个w的操作,
- 用户二并没有进入该文件目录的权限。
- 因为在用户一的目录下,并没有给所在组进行权限的设置。
- 用户一设置的仅仅是对该文件的权限并没有给予进入该文件的目录权限
- 如果对一个目录夺取r(读)的权限,就不能使用ls展示该目录下的东西,但是对该文件有e(执行)的权限,依然可以执行,如执行cd指令