1. 权限基本概述
1.1 什么是权限?
权限 : 操作系统对用户能够执行的功能所设立的限制 , 主要用于约束用户能对系统所做的操作 ,
以及内容访问的范围 , 或者说 , 权限是指某个特定的用户具有特定的系统资源使用权力 .
1.2 为什么要有权限?
因为系统中不可能只存在一个root用户 , 一定会存在多个用户 , 为了保护每个登陆用户的隐私和工作环境 , 所以就有了权限 .
1.3 权限与用户之间的关系?
在Linux系统中 , 针对文件定义了三种身份 ,
分别是属主 ( owner ) 、属组 ( group ) 、其他人 ( others ) ,
每一种身份又对应三种权限 , 分别是可读 ( readable ) 、可写 ( writable ) 、可执行 ( excutable ) .
用户对文件资源 , 有三种角色 , 一个用户访问文件流程如下 : 1. 判断用户是否为文件所有者 , 如果是 , 则按所有者的权限进行访问
2. 判断用户是否为文件所有组成员 , 如果是 , 则按组的权限进行访问
3. 如果不是所有者 , 也不是该文件所属组 , 则按匿名权限进行访问
1.4 权限中的rwx分别代表什么含义?
使用ls -l查看一个文件的详细属性时 , 能看到每个文件都有一个 9 位基本权限位 ,
比如 : rwxr-xr-x 其中每三位字符为一组 , 分别表示属主权限位 , 属组权限位 , 匿名权限位 .
linux中基本权限位则是使用这 9 位字符来表示 , 主要控制文件属主 ( User ) 、属组 ( Group ) 、其他用户 ( Other )
字母 含义 对应权限 r(read) 读取权限 4 w(write) 写入权限 2 x(execute) 执行权限 1 -(没有权限) 没有权限 0
PS : 如果权限位不可读、不可写、不可执行 , 则全部使用-作为占位符表示 .
文件示例 : rwxrw-r– alice hr file1 . txt Q1 : alice对file1文件拥有什么权限? alice是文件的属主对应rwx , 拥有文件读写执行权限 . Q2 : jack 对 file1 . txt 文件有什么权限? 前提 : jack 属于 hr 组 jack 属于 hr , hr属组对应rw- , 拥有文件的读写权限 . Q3 : tom 对 file1 . txt 文件有什么权限? tom没有前题条件输入其他用户对应-r– , 对文件只有读的权限 .
2. 权限设置方法
Linux下使用chmod命令来变更权限 , root用户可以变更所有文件的权限 , 而普通用户仅能变更属于自己的文件 .
选项 : -R递归修改
2.1 文件设置权限方式1
字母缩写含义 :
a = all
u = user
g = group
o = other 运算符含义 :
= 设置权限 a = rwx 为所有用户设置读写执行权限
+ 添加权限 g + x 为属组设置添加执行权限
- 删除权限 g-x 为属组设置删除执行权限
[ root@kid ~]
[ root@kid ~]
[ root@kid ~]
[ root@kid ~]
[ root@kid ~]
[ root@kid ~]
-rwxrw-r-- 1 root root 0 Apr 13 03:29 file
2.2 文件设置权限方式2
number
[ root@kid ~]
[ root@kid ~]
[ root@kid ~]
[ root@kid ~]
-rw------- 1 root root 0 Apr 13 03:29 file
2.3 目录设置权限
[ root@kid ~]
[ root@kid ~]
[ root@kid ~]
[ root@kid ~]
drwxr-xr-x 2 root root 6 Apr 13 03:34 dir/
针对 hr 部门的访问目录 / home / hr 设置权限 , 要求如下 :
1. root 用户和 hr 组的员工可以读、写、执行
2. 其他用户没有任何权限
[ root@kid ~]
[ root@kid ~]
[ root@kid ~]
[ root@kid ~]
[ root@kid ~]
drwxrwx--- 2 root hr 6 Apr 13 03:26 /home/hr
3. 文件权限与目录权限
在Linux中权限对文件和对目录的影响是有不同区别的 .
权限 对文件的影响 对目录的影响 读取权限(r) 具有读取阅读文件内容权限 具有浏览目录及子目录 写入权限(w) 具有新增、修改文件内容的权限 具有增加和删除目录内文件 具有增加和删除目录内文件(需要x权限, 单独w屁都没有) 执行权限(x) 具有执行文件的权限 具有访问目录的内容(取决于目录中文件权限)
3.1 文件权限
[ root@kid ~]
[ root@kid ~]
-rw-r--r--. 1 root root 5 Aug 31 15 :19 filename
[ root@kid ~]
s/1
[ qq@kid /] $ cat /root/filename
cat: /root/filename: Permission denied
[ qq@kid ~] $ cd /
[ qq@kid /] $ ll
.. .
dr-xr-x---. 2 root root 180 Aug 31 15 :19 root
.. .
[ qq@kid /] $ su - root
Password:
[ root@kid ~]
[ root@kid ~]
[ qq@kid ~] $ cat /root/filename
date
[ root@kid ~]
[ root@kid ~]
-rw-r--r-x. 1 root root 5 Aug 31 15 :19 /root/filename
[ root@kid ~]
Wed Aug 31 16 :01:39 CST 2022
[ root@kid ~]
[ root@kid ~]
-rw-r----x. 1 root root 5 Aug 31 15 :19 /root/filename
[ root@kid ~]
[ qq@kid ~] $ /root/filename
bash: /root/filename: Permission denied
[ root@kid ~]
[ root@kid ~]
-rw-r--rwx 1 root root 5 Jan 24 08:24 /root/filename
[ kid@kid ~] $ vim /root/filename
.. .
PS : 总结rwx对文件的影响
读取权限(r)具有读取阅读文件内容权限
1. 只能使用查看类命令cat、head、tail、less、more 写入权限(w)具有新增、修改文件内容的权限
1. 使用vim编辑会提示权限拒绝 , 但可强制保存 , 会覆盖文件的所有内容
2. 使用echo命令重定向的方式可以往文件内写入数据 , > > 可以进行追加
3. 不能删除文件 , 因为删除文件看的不是文件的属性 , 需要看上级目录是否有w的权限 执行权限(x)具有执行文件的权限
1. 执行权限对文本文件没有实际的用处
2. 如果普通用户需要执行文件 , 需要配合r权限 文件r权限 , 只给用户查看 , 无其他操作
文件rw权限 , 可以查看和编辑文件内容
文件rx权限 , 允许查看和执行文件、但不能修改文件
文件rwx权限 , 能读 , 能写 , 能执行 , 但不能删除 , 因为删除需要看上级目录的权限有没有w权限
文件的x权限小心给予 , 文件通常设定的权限是 644
3.2 目录权限
创建目录 , 并在该目录下创建文件 , 匿名用户对目录没有w权限 , 所有对文件有 777 权限
[ root@kid ~]
[ root@kid ~]
.. .
drwxr-xr-x. 2 root root 6 Aug 31 16 :21 dirname
..
[ root@kid ~]
[ root@kid ~] [ root@kid ~]
-rwxrwxrwx. 1 root root 5 Aug 31 16 :23 filename
[ kid@kid ~] $ cat ./dirname/filename
test
[ kid@kid ~] $ rm -f /dirname/filename
rm: cannot remove ‘/dirname/filename’: Permission denied
PS : 总结rwx对目录的影响
读取权限(r) , 如果目录只有r权限 : 仅仅只能浏览目录内的文件名 , 无其他操作权限 1. 可以使用ls命令浏览目录及子目录 , 但同时也会出现权限提示 2. 使用ls -l命令浏览目录及子目录 , 文件属性会带问号 , 并且只能看到文件名 写入权限(w) , 如果目录只有w权限 : 什么权限都没有 . . .
执行权限(x) , 如果目录只有x权限 : 只能进入目录 , 不能进行浏览、复制、移动、删除的操作 目录rx权限 , 允许浏览目录内文件以及子目录、 不允许创建、删除文件和目录
目录wx权限 , 能进入目录 , 能删除内容 , 能写入内容 , 但就是无法使用ls cat这样的命令
目录rw权限 , 能看 , 能写 , 但无法进入目录
* 目录的 w权限小心给予 , 通常目录设定的权限是 755
4. 属主属组设置
变更文件属主和属组的意义?
比如 :
A出售房子dir进行变现 , 将房子dir过户给B , 过户成功房字dir就属于B ,
那么此时房子dir的拥有者就属于属于B而不再属于A .
在Linux中如何变更一个文件或者一个资源的属主和属组呢 , 可以使用chown、chgrp命令实现 .
chown能设置属主和属组 , chgrp仅能设置属组 .
4.1 测试环境
[ root@kid ~]
[ root@kid ~]
uid = 1009 ( q1) gid = 1017 ( q1) groups = 1017 ( q1)
4.2 chowm命令
设置属主和属组命令 :
chown [ 属主 ] . [ 属组 ] 参数
仅设置属主 chown [ 属组. ] 参数
设置属主 chown [ 属组 ] 参数 或chown [ .属组 ] -R:递归修改
1. 仅修改属主
[ root@kid ~]
[ root@kid ~]
drwxr-xr-x. 2 q1 root 18 Sep 1 16 :58 dir
.. .
2. 仅修改属组
[ root@kid ~]
[ root@kid ~]
drwxr-xr-x. 2 q1 q1 18 Sep 1 16 :58 dir
.. .
3. 修改属主与属组
[ root@kid ~]
[ root@kid ~]
drwxr-xr-x. 2 root root 18 Sep 1 16 :58 dir
.. .
4.3 chgrp命令
设置属组命令 : chgrp [ 属组 ] 参数
-R:递归修改
[ root@kid ~]
[ root@kid ~]
drwxr-xr-x. 2 root q1 18 Sep 1 16 :58 dir
.. .