权限
权限的基本介绍
这里讲解的权限指的是文件和目录的权限。
rwx权限详解
rwx作用到文件
[r]代表可读read,可以读写与查看; [w]代表可写write,可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在目录有写权限,才能删除该文件。 [x]代表可执行execute:可以被执行
rwx作用到目录
:::info
[r]代表可读read:可以读取,ls查看目录内容
[w]代表可写write:可以修改,目录内创建+删除+重命名目录
[x]代表可执行execute:可以进入该目录
:::
文件及目录权限实际案例
执行指令[ls –l]后显示的内容如下:
-rw-r—r—. 1 root root 0 8月 31 15:43 a1.txt
10个字符确定不同用户能对文件干什么。
- [-]代表文件类型:文件(-),目录(d),软链接(l),字符设备
(c)
,如键盘、鼠标,块文件、硬盘(b) - [rw-]表示文件所有者权限为rw,且不可执行,读(r)、写(w)、执行(x)
- [r—]与文件拥有者同一组的用户的权限为读,但是不能读与执行
- [r—]不与文件拥有者同组的其他用户权限是读,不能写和执行
可用数字表示为:r= 4,w = 2,x = 1,因此rwx = 4+2+1=7
5) [1]:文件 硬链接数;目录 子目录数(包含隐藏的目录)
6) [root]:用户
7) [root]:组
8) [0]:文件大小(字节),如果是文件夹,显示4096字节
9) [8月 31 15:43]:最后修改日期
10) [a1.txt]:文件名
修改权限 chmod
基本介绍
通过chmod指令,可以修改文件或者目录的权限。
通过+、-、= 变更权限
- 基本语法
u:所有者 g:所有组 o:其他人 a:所有人 (u,g,o的总和)
- chmod u=rwx,g=rx,o=x 文件目录名
- chmod o+w 文件目录名:给其他人增加一个写权限
- chmod a-x 文件目录名:给所有人减去一个执行权限
- 应用案例
案例1:给abc文件 的所有者读写执行的权限,给所在组读执行权限,给其他组读执行权限。
- 创建abc文件 [touch abc.txt]
- 变更权限 [chmod u=rwx,g=rx,o=x abc.txt]
案例2:给abc文件的所有者除去执行权限,增加组写的权限。
变更权限 [chmod u-x,g+w abc.txt]
案例3:给abc文件的所有用户添加读的权限。
变更权限 [chmod a+r abc.txt]
通过数字变更权限
- 基本语法
规则:r=4,w=2,x=1 rwx=4+2=1=7
chmod u=rwx,g=rx,o=x 文件目录名
相当于chmod 751 文件目录名
- 应用案例
案例1:将/home/abc.txt文件的权限修改成rwxr-xr-x,使用给数字的方式实现。
rwr = 4+2+1=7
r-x = 4+1=5
r-x = 4+1=5
变更权限 [chmod 755 abc.txt]
修改文件所有者-chown
- 基本介绍
chown newowner file:改变文件的所有者
chown newowner:newgroup file:改变用户的所有者和所有组
-R:如果是目录,则使其下所有子文件或目录递归生效。 - 应用案例
案例1:请将/home/abc.txt文件的所有者修改成tom,由于tom用户在自己的家目录下有写权限,因此如果想要新建目录,只能切换到home/tom或者以root用户登录。- 以tom进行登录
- 切换到/home/tom [cd /home/tom]
- 用tom用户新建文件夹 [touch abc.txt]
- 变更权限 [chown tom abc.txt]
案例2:请将/home/kkk目录下所有的文件和目录的所有者都修改成tom,这个必须使用root用户。
- 以root用户登录
- 在/home目录下新建kkk目录,并进入到kkk[mkdir kkk] [cd kkk/]
- 在/home/kkk目录下新建两个文件 [touch a.txt b.txt]
- 变更权限(将kkk目录下的所有文件包括子目录及子目录下的所有文件,递归的将所有者改为tom) [chown -R tom kkk/]
改变文件所在组-chgrp
- 基本语法
chgrp newgroup file :改变文件的所在组 - 应用案例
案例1:请将/home/abc.txt文件的所在组修改成bandit组
改变所在组 [chgrp bandit /home/abc.txt]
案例2:请将/home/kkk目录下所有文件和目录的所在组都修改成bandit
改变所在组 [chgrp -R bandit /home/kkk]
权限最佳实践
组:polic ,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]
- 指定用户密码
[passwd jack] [12345678]
[passwd jerry] [12345678]
[passwd xh] [12345678]
[passwd xq] [12345678]
- jack创建一个文件,自己可以读写,本组人可以读,其他组人没有任何权限
创建文件 [vim hello.txt]
修改权限 [chmod 640 hello.txt]
- jack修改该文件,让其他组人可以读,本组人可以读写
修改权限 [chmod o=r,g=rw,hello.txt]
- xh投靠警察
使用root登录
修改xh到police组 [usermod -g police xh]
- 使xh能进入到jack用户的家目录里
说明:必须给xh用户x和r权限,xh用户才能进入到jack用户的家目录,使用jack给他的家目录 /home/jack的所在组一个rx的权限
登录jack用户
改变用户所在组的权限,使xh能进入到jack的家目录 [chmod g=rx jack/]
xh用户重新登录才能进入到/home/jack目录
- xh用户进入到jack的家目录,查看xh用户是否可以读写jack用户文件
练习题1 文件权限管理
练习题要求
- 建立两个组:神仙,妖怪
- 建立4个用户:唐僧,悟空,八戒,沙僧
- 设置密码:123
- 把悟空,八戒放入妖怪组;唐僧,沙僧放入神仙组
- 用悟空创建一个文件(monkey.txt,写入I am monkey)
- 给八戒一个rw权限
- 八戒修改monkey.txt,加入一句话I am pig
- 唐僧和沙僧对该文件没有权限
- 把沙僧放入妖怪组
- 让沙僧修改该文件monkey.txt加入一句话”我是沙僧,我是妖怪”
练习题答案
- 建立组
- 创建用户
- 为用户分配组
- 用悟空创建一个文件
- 使用八戒用户往monkey.txt文件中写入内容,需要修改wukong用户所在组的权限为rwx,并且bajie用户需要利用logout指令注销,重新登录后,才能生效。
- 首先利用wukong用户登录,为bajie用户提供权限,使其能进入/home/wukong目录,指令[chmod g=rx /home/wukong/]
- 进入/home/wukong,修改monkey.txt文件权限,使同组的其他人可以修改它,指令[chmod g=rwx monkey.txt]
- 切换到bajie用户,进入到/home/wukong目录下,利用指令[vi monkey.txt]修改该文件
- 将沙僧分配到yaoguai组,并且往monkeyz中写入”我是沙僧,我是妖怪”
由于第5步,wukong已经为所在组的其他成员授权rx,所在组的其他成员可以直接访问/home/wukong目录,在这里不需要再次授权。
细节说明
xx用户给同组成员进行rx权限后,同组的其他人必须利用[logout]指令退出后,重新登录才可以进入到该组xx用户目录中。
练习题2 综合练习
练习题要求
- 用root登录,建立用户mycentos,自己设定密码
- 用mycentos登录,在主目录下建立目录test/t11/t1
- 在t1中建立一个文本文件aa,用vi编辑器编辑其内容为ls -al
- 改变aa的权限为可执行文件(可以将当前日期追加到一个文件),运行该文件./aa
- 删除新建立的目录test/t11/t1
- 删除用户mycentos及其主目录中的内容
- 将linux设置成进入到命令行界面
- 重启或者关机linux
练习题答案
- 建立mycentos用户
- 创建目录
- 创建aa文件并且用vi编辑且写入ls -al
- 为aa.txt文件增加一个可执行权限
- 追加日期到aa.txt文件中
- 删除目录 test/t11/t1,使用指令[rm -rf test]
- 删除用户及其主目录
- 将Linux设置为命令行级别,指令是[systemctl isolate multi-user.target]
- 将Linux关机
细节说明
相对路径前不应该带有/,否则就变成绝对路径了