Linux 权限

什么叫做权限,简明得说就是一件事是否允许被你做
权限与两点有关:

  1. 权限与身份有关,权限认证的是你的身份而不是你这个ren
  2. 权限与事物的属性有关

Linux下的用户

Linux下有2种用户: 1.root超级用户 2.普通用户
root用户可以在Linux下做任何事,不受权限限制
普通用户受权限的限制

切换用户的命令:su

  • su 命令,可以使普通用户切换到root用户身份上,但也只是身份上的转变,所在的当前目录不会改变。输入exitctrl + D可以退回普通身份
  • su -以重新登录的方式切换用户,这样身份和所处目录就都改变了
  • su user切换到普通用户,user为普通用户的名
  • 从root转换到普通用户不需要输入密码,从普通用户切换到root需要密码

对指令的提权: sudo xxx指令,首次执行要输入password
这样执行一些高权限的指令时,就可以以root的身份进行操作
但是目前我们用add user 新建的用户时没有办法使用sudo的,因为系统不信任这些用户
除非将普通用户添加到白名单中


Linux下用户的身份

开头说了,权限与身份有关,与用户无关
怎么理解呢?可以理解为在某一个公司小组内,只有组长有设定任务的权限,无论时谁担任组长都可以,不论是小王还是小张,这要他们是组长的身份,就有相关的权限

在Linux中,有三种身份:

  1. 拥有者 u
  2. 所属组 g
  3. 其他人 o

要注意几点:

  • 权限身份与linux中具体的用户并不冲突
  • 无论是root还是普通用户,都可以是拥有者、所属组、其他人
  • 拥有者、所属组、其他人都要有具体的用户承担

在这里插入图片描述

那么思考一个点,既然有了拥有者、其他人这两种身份,为什么还有有所属组这个权限身份呢?

假设,在一个公司内,有2个竞争关系的小组,员工A和员工B分别在这2个小组内
在这里插入图片描述
假设现在只有拥有者和其他人2种身份
对于A的项目,A为拥有者,B为其他人,这可以很好的防止B去 “偷窥” A的文件
但是如果在同一组内的领导C,假如C想看A的项目,但此时C的身份也为其他人,此时C就不能成功地浏览A的项目

所以这才有了第三种身份——所属组
这样A为拥有者,B为其他人,C为所属组。
既保证了组内协同,也保证了other访问


在执行 ll 指令后,我们是可以看见在打印的信息中看见每个文件的拥有者、所属组和其他人的
在这里插入图片描述
第一个用户名为拥有者,第二个用户名为所属组
其他不是拥有者和所属组的用户都是其他人

当一个用户访问一个文件时,其身份会与文件的拥有者和所属组队进行对比,如果发现不是拥有者和所属组,就是other


文件类型和访问权限

文件的相关属性和权限,可以使用指令ll查看

使用ll后,可以看到,显示出很多列的内容
这里我们先介绍第一列,第一列一个共有10个字符,第一例的第一个字符表示文件的类型
在这里插入图片描述

d :普通文件,如:源代码,文本文件,库文件等都是普通文件
- :目录文件
b:块设备文件,如磁盘文件
c:字符设备文件 如键盘文件,显示器文件等
p:管道文件
.....

针对文件的类型:
windows下,文件以后缀的方式来分类,如:.txt .exe .png等
而在Linux下,后缀没有直接的意思(不代表没用)


例如:在Linux下,将a.out改名为a.exe 或a,./a,exe./a都可以执行这些文件
但是把test.c文件改为test.txt,gccs是不能够编译的。
原因是:gcc是一个编译器,运行在Linux上的软件,而linux系统是对文件的后缀没有要求,但不代表在Linux上的其他软件不需要后缀。

下面研究剩下的9个字符

r:可读
w:可写
x:可执行
-:没有对应位置的权限

这9个字符,从左到右,三三为一组

  • 位置是什么含义是固定的,第一个为读权限,第二个为写权限,第三个为执行权限
  • 每一个位置只有是或否,具有指定的权限

在这里插入图片描述

访问文件的流程: 用户与文件的拥有者、所属组、其他人进行对比,确认用户的角色,然后识别该角色的权限,然后看权限,如果有权限,就进行操作,如果没有权限,就拦截

值得注意的是:
root不受权限的控制,即使root为某一用户的other角色,other没有此文件的写权限,但root仍能写入内容,因为它是root

进行权限认证的时候,只能选择一个角色进行认证
假如一个文件的拥有者和所属组都是用户A,那么用户A访问这个文件的时候,只认证它的拥有者的角色
权限认证的优先级:u > g > o


对文件权限的修改指令

chmod

功能:修改文件的权限
语法:chmod [选项] [权限] [文件名]

只有文件的拥有者或者root用户可以修改权限

+: 向权限范围增加权限代号所表示的权限 
-: 向权限范围取消权限代号所表示的权限 
=: 向权限范围赋予权限代号所表示的权限 
用户符号:   
u:拥有者 
g:拥有者同组用 
o:其它用户 
a:所有用户 

常用选项:R可以递归修改目录下面所有文件的权限

下面举几个例子:
chmod u+r test.txt给拥有者添加读权限
chmod o-rwx test.txt 给其他人减去读,写,执行权限
chmod a+rwx 给所有人添加读,写,执行权限
chmod u+r, g-w,o+x给拥有者添加读权限 ,所属组去掉写权限 ,其他人添加执行权限

权限三三一组,每个权限都是确定的,有或没有
所以可以用1表示有,0表示没有。用比特位的方式与是否有权限一一对应
例如 111 101 000 也就可以用八进制表示7,5,0

所以三三一组,可以用三位八进制数字表示权限
也可以用三个八进制数字修改权限:

chmod 777 test.txt
chmod 640 test.txt

chown

语法: chown [选项] [用户名] [文件名]
功能:修改文件的拥有者
常用选项:R可以递归修改目录下面所有文件的拥有者
只有root可以修改文件的拥有者
或者普通用户执行的时候,前面加上sudo

举两个例子:
chown root test.txt
chown -R root dir1/

一个指令改变拥有者和所属组;
chown root:root test.txt

chgrp

语法: chgrp [选项] [用户名] [文件名]
功能:修改文件的所属组
常用选项:R可以递归修改目录下面所有文件的拥有者

怎么修改other身份呢?没有直接的命令,不是拥有者和所属组的人,就是other了


权限掩码

思考一个问题,为什么我们新建的普通文件和目录文件的默认权限是固定的,并且是我们看到的样子?
在这里插入图片描述

为什么普通文件的权限是664?
为什么目录文件的权限是775?

这里介绍一下预备知识:
linux默认给普通文件的初始权限是666
给目录文件的初始权限是777

原因是有一个东西叫做 权限掩码umask
凡是在umask中出现的权限,不会在最终文件权限中出现

我们查看一下默认的umask:输入umask指令就可以查看
在这里插入图片描述
这里的权限掩码为0002,下面我们就可以知道为什么新建普通文件和目录权限为664和775了
在这里插入图片描述

最终权限 = 初始权限&(~umask)

我们也可以手动修改umask:指令umask xxxx
如果想让创建的文件和目录默认不可读不可执行:修改umask为 101 101 101555


目录的权限

r:读权限,如果一个目录没有读权限,就无法用ls指令等指令查看目录中的文件
w:写权限,如果没有写权限,无法在目录中新建文件,删除文件,修改文件
x:执行权限,如果没有执行权限,就无法用cd命令,移动到目录中

创建目录的时候,权限基本是满的,因为如果没有权限,那么建目录没有意义
它默认权限为775,说明只限制了other用户无法在目录中新建删除修改文件,other也可以cd进去,ls其下的文件

普通用户的家目录权限为700,并且家目录的拥有者和所属组也都是自己,所以其他普通用户无法看见其他用户下的文件


共享文件夹以及粘滞位

有点时候,多个用户想进行文件数据的共享
我们就需要建议一个共享文件夹,这个文件夹不能在任何一个用户的家目录下,因为其他用户无法访问其他用户的家目录

跟目录的权限为555,拥有者和所属组都为root,所以普通用户也无法在根目录下建立这个文件夹
但是根目录下有一个文件夹叫做tmp,权限为777,所以我们可以把在tmp下建立共享文件夹或者直接把tmp当作共享文件夹

这时,我们解决了共享文件夹位置的问题
普通用户可以随意创建文件,修改文件

一个文件,我可以不让别人读,不让别人写,但是从本文件的权限上,我无法让这个文件不被删除
因为一个文件能否被删除,兵部右这个文件本身决定,而是由所处目录所决定

假如我为了不让别人删除我的文件,我去除文件的w权限
此时,别人的确无法删除我的文件了,但是痛仰也创建文件了,就体现不出共享文件的性质了

所以Linux中引入了粘滞位,粘滞位的用t表示
chmod o+t shared/ 给共享文件夹shared/添加t权限
设置了t权限后,other的x权限就变成了t
在这里插入图片描述

t权限就限制了:一个人可以删除自己建立的文件,但是不能删除别人建立的文件


粘滞位:

  • 给目录设置,一般是共享目录,大家可以在目录中进行各自文件的增上查改
  • 只允许文件的拥有者或者root去删除文件,其他人不允许
  • t是一种特殊的权限
  • 33
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯癫了的狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值