Linux--权限、目录的权限、粘滞位

Linux权限的概念

Linux下有两种用户:超级用户和普通用户。

  • 超级用户:可以在Linux系统下做任何事情,不受限制。
  • 普通用户:可以在Linux系统下做有限的事情。
  • 超级用户的提示符是“#”,普通用户的提示符是“$”。

命令: su [用户名]。
功能:切换用户。

要从root用户切换到普通用户user,使用su user。要从普通用户切换到root用户则使用su root(root可以省略),此时系统会提示输入root用户的口令。

Linux权限管理

文件类型和访问权限

在这里插入图片描述

文件类型

d:文件夹
-:普通文件(源代码、图片、动静态库、可执行程序、视频音频等)
l:软连接(类似Windows的快捷方式)
b:块设备文件(硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接字文件

基本权限

读(r/4):read对文件来说,具有读取文件内容的权限;对于目录,具有浏览目录的权限。
写(w/2):write对文件来说,具有修改文件内容的权限;对于目录,具有删除移动目录内文件的权限。
执行(x/1):execute对文件而言,具有执行文件的权限;对于目录,具有进入目录的权限。

文件访问者分类

u–user:文件和文件目录的所有者。
g–group:文件和文件目录的所有者所在的组的用户。
o–others:其他用户(出去o和g都是其他人)。

文件权限值的表示方法

字符表示方法

Linux表示说明Linux表示说明
r–只读-w-只写
–x仅可执行rw-可读可写
-wx可写和可执行r-x可读可执行
rwx可读可写可执行无权限

8进制表示方法

权限符号(读写执行)八进制二进制
r–4100
-w-2010
–x1001
rw-6110
r-x5101
-wx3011
rwx7111
0000

文件访问权限的相关设置方法

chmod [参数] 权限 文件名

功能: 设置文件访问权限。

常用选项:

R 递归修改目录文件的权限。
说明:只有文件的拥有者和root才可以改变文件的权限。

用户表示符(+ - =)权限字符

+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予代号所表示的权限

用户符号:

  • u:拥有者
  • g:所属组
  • o:其他用户
  • a:所有用户
#实例代码:
chmod u+x,g+x,o-x file.txt
chmod u-x file.txt
chmod u=rwx file.txt
chmod u=rwx,g=rwx,o=rwx file.txt
三位8进制符号
#实例代码:
chmod 777 file.txt
chmod 664 file.txt
chmod 640 file.txt

chown [参数] 用户名 文件名

功能: 修改文件的拥有者。

常用选项:

R 递归修改目录文件的权限。
说明:需要root权限,可以使用sudo命令临时授权。

#实例代码:当前用户名zhangsan
sudo chown lisi file.txt  #需要输入zhangsan的密码

chgrp [参数] 用户组名 文件名

功能: 修改文件或目录的所属组。

常用选项:

R 递归修改目录文件的权限。
说明:需要root权限,可以使用sudo命令临时授权。

#实例代码:当前用户组名zhangsan
sudo chgrp lisi file.txt  #需要输入zhangsan的密码

#可以同时修改文件的拥有者和所属组
sudo chown zhangsan:li file.txt #将file.txt文件的拥有者改为zhangsan,所属组名改为lisi

sudo分配权限

sudo的概念

普通用户涉及到超级用户权限的运用,管理员如果让该普通用户通过su来切换到root获得超级权限,就必须把root权限密码告诉用户。但是如果普通用户有了root权限,可以通过root权限做任何事,这会对系统的安全造成一定的威胁。

sudo是一种权限管理机制,管理员可以授权于一些普通用户去执行一些root执行的操作,而该普通用户不需要知道root的密码,它依赖于/etc/sudoers这个文件,可以授权于某个普通用户在主机上能够以管理员的身份执行什么样的管理命令,而且是有限的。这个文件相当于就是一个授权表。

第一次执行sudo命名时需要输入普通用户的密码,在短暂的一段时间内再次用到sudo命令时,不需要再一次输入密码。

修改/etc/sudoers 文件加入普通用户让其具有可执行sudo命令

在这里插入图片描述

需要有root权限才能进入这个文件进行修改文件,看红线框内的内容,加入以下代码:

用户名 ALL=(ALL)   ALL

目录的权限

可执行权限:如果目录没有可执行权限,则无法cd(进入)这个目录中。
可读权限:如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容。
可写权限:如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件。
注意:1、对于目录而言都得先进入该目录(具有x权限)才考虑是否具有r/w权限。对于目录如果没有x权限,就算有r/w权限。权限也是不允许执行的。
2、对于目录的读(写)权限,是否允许角色进入目录(在目录下创建文件)和是否能对目录下的文件执行读(写)是没有关系的,目录下的文件的权限只和目录下文件的权限有关。不要认为不能进入目录就不能查看目录下文件的内容,两者是没有关系。

问题:只要用户有目录的写权限,那么用户就可以删除目录中的任何一个文件,而不论这个用户是否拥有这个文件的写权限。这样似乎不是很科学,试想假如张三创建的文件,那么李四拥有对目录的写权限,那么李四就可以删除属于张三的文件。请看下列过程:

设置一个root的文件所有人都可以执行可写权限

在这里插入图片描述

然后以zhangsan用户名和root用户名分别创建2个文件在这里插入图片描述

以zhangsan用户名删除root创建的文件file3在这里插入图片描述

结论:我们只要有一个目录的写权限就能删除目录中的任何一个文件,甚至是超级管理员的文件。那么这样就很糟糕。为了解决这个糟糕的问题,Linux引入了粘滞位的概念。

粘滞位

当把一个目录设置了粘滞位(sudo chmod +t 文件名),则该目录下的文件只能由

一、超级管理员
二、该目录的所有者删除
三、该文件的所有者删除

请看以下实例:

在这里插入图片描述当我们给rootdir目录设置了粘滞位时,我们进入rootdir,想要删除属于root的文件,但是我们发现我们的权限是不允许的。这样我们就能很好的解决了上述问题带来的麻烦。当设置了粘滞位,权限的最后一位由x变为了t(x->t)。

Linux系统中粘滞位的运用(根目录下的tmp目录)

在这里插入图片描述

umask

功能

查看或修改文件的掩码
新建文件的默认权限=666
新建目录的默认权限=777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask 的影响。假设默认权限是mask,则实际创建出来的文件权限是:mask&~umask。

格式:umask 权限值

实例:

//超级管理员的默认掩码值是:0022,普通用户的默认掩码值是:0002
umask #查看
umask 044 #设置

权限的总结

目录的可执行权限表示你可否在目录下执行命令。
如果目录没有x权限(可执行权限),则无法对目录执行任何命令, 即使目录仍然有r读权限,也无法进入进入目录(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
如果目录具有 x 权限,但没有 r 权限,则用户可以cd进入目录。但由于没有读权限,所以在目录下,即使可以进入目录,但仍然没有权限读出目录下的文档。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值