Linux权限管理(用户+文件)


Linux权限的概念

Linux下有两种用户:

  1. 超级用户(#)
  2. 普通用户($)
  • 超级用户可以在Linux系统下做任何事情,没有限制
  • 普通用户:在Linux下只能做有限事情

用户切换
语法:su [用户名]

从普通用户切换到root用户直接输入 su 命令(root 可以省略),再输入密码就好了

在这里插入图片描述

从root用户切换到普通用户,输入命令 su 用户名

在这里插入图片描述

sudo命令

语法:sudo [想要提升权限的命令]
功能:如果我们单纯想提升当前命令的权限,可以给指令带上sudo

比如我们作为一个普通用户要修改另外一个普通用户的密码(肯定是修改不了的)

在这里插入图片描述

(1)在root用户下,打开 /etc下的 sudoers文件

在这里插入图片描述

(2)在文件中找到 %wheel这一行,在当前行下面添加要提升当前命令权限的用户名

在这里插入图片描述
(3)添加成功后保存突出,那么当前用户就可以使用 sudo命令提升当前指令权限了
在这里插入图片描述
测试sodo

通过dudo命令修改其它用户的密码
注意:sudo命令每隔一段时间都需要输入当前用户的密码才能执行
在这里插入图片描述

Linux权限管理

文件拓展名

我们都知道,Windows是依赖文件的拓展名来区分文件的,比如 “.txt是文本文件”,“.exe是可执行文件”,但Linux不是通过拓展名来区分文件类型的,Linux的拓展名只是为了更好的区分文件类型

常见的系统文件目录

  • /bin/:存放系统命令,普通用户和root都可以执行(比如 ls、pwd)
  • /boot/:系统启动目录,保存与系统启动相关的文件,入内核文件和启动引导程序
  • /dev:设备文件保存位置
  • /etc/:配置文件保存位置,系统内所有采用默认安装方式(rpm安装)的服务配置文件全部保存在此目录中,比如用户信息、服务的启动脚本、常用服务的配置文件等
  • /home/:存放普通用户的根目录(每个用户都有一个根目录)
  • /lib/:系统调用的函数库保存位置
  • /media/:挂载目录。系统用来挂载媒体设备,如软盘和光盘
  • mnt:挂载目录,早期的Linux中只有这一个挂载目录,并没有细分。系统建议这个目录用来挂载额外的设备,如U盘、移动硬盘和其它操作系统分区
  • misc:挂载目录,系统建议采用来挂载NFS服务的共享目录,虽然系统准备了三个默认挂载目录 /media/、/mnt/、/misc/,但是到底在哪个目录中挂载什么设备可以由管理员自己决定。例如,笔者在接触 Linux 的时候,默认挂载目录只有 /mnt/,所以养成了在 /mnt/ 下建立不同目录挂载不同设备的习惯,如 /mnt/cdrom/ 挂载光盘、/mnt/usb/ 挂载 U 盘,都是可以的
  • opt第三方安装的软件保存位置。这个目录是放置和安装其他软件的位置,手工安装的源码包软件都可以安装到这个目录中,不过笔者还是习惯把软件放到 /usr/local/ 目录中,也就是说,/usr/local/ 目录也可以用来安装软件
  • /root/:root的主目录,普通用户主目录在/home/下,root主目录直接在 “/” 下
  • sbin:保存系统环境设置相关的命令,只有 root 可以使用这些命令进行系统环境设置,但也有些命令可以允许普通用户查看
  • srv:服务数据目录,一些系统服务启动后,可以在这个目录中保存所需要的数据
  • /tmp:临时目录,系统存放临时文件的目录,在该目录下,所有用户都可以访问和写入。这个目录不建议保存重要数据,最后定期清楚tmp目录的数据
  • lost+found/:当系统意外崩溃或意外关机时,产生的一些文件碎片会存放在这里。在系统启动的过程中,fsck 工具会检查这里,并修复已经损坏的文件系统。这个目录只在每个分区中出现,例如,/lost+found 就是根分区的备份恢复目录,/boot/lost+found 就是 /boot 分区的备份恢复目录
  • proc:虚拟文件系统。该目录中的数据并不保存在硬盘上,而是保存到内存中。主要保存系统的内核、进程、外部设备状态和网络状态等。如 /proc/cpuinfo 是保存 CPU 信息的,/proc/devices 是保存设备驱动的列表的,/proc/filesystems 是保存文件系统列表的,/proc/net 是保存网络协议信息的
  • sys:虚拟文件系统。和 /proc/ 目录相似,该目录中的数据都保存在内存中,主要保存与内核相关的信息

文件访问者的分类(人)

对对Linux的用户权限分类,可以分为三类

  1. 文件拥有者(就是创建文件的人)
  2. 文件所属组(文件属于哪个组)
  3. 其它人(other)(不是文件拥有者也不属于文件所属组的人)

解释:
对于一个用户,无论是root还是普通用户都能充当 拥有者和所属组或者是其它

文件所属组就是文件属于哪个组,每个文件在创建时默认都是属于创建人的那个小组。

举个列子
比如一台Linux服务器上有两个组,A组不想让B组的人看见A组的代码或文件,就可以通过文件所属组的权限来让自己小组的人能看见,让组外的其它人开不见。
这样的分组,可以灵活分配让大家的团队意识更强,如果没有所属组这个分类的话就会非常乱。
所以所属组就是为了更灵活的进行权限配置,满足团队协作

在这里插入图片描述
通过查看文件详细信息可以看到,文件所属组和文件拥有者

在这里插入图片描述

文件类型和权限

在这里插入图片描述

常见的文件类型主要是普通文件和目录

  • -:普通文件(文本、可执行程序、库)
  • d:目录
  • c:字符文件、显示器、键盘
  • p:管道文件
  • l:链接文件(类似Windows快捷方式)
  • s:套接口文件
  • b:块设备文件(比如硬盘)

在这里插入图片描述

在Linux当中文件类型是和拓展名没有关系的
文件信息的前一段由10个字符组成,分别表示不同的意思

第一个字符:文件类型
后续9个三个为一组,分别表示你
文件所属者权限
文件所属组权限
其它人的权限

在这里插入图片描述

文件权限表示

权限属性

  • r:读取
  • w:写入
  • x:可执行
  • -:无权限

(1)字符表示法

符号表示 权限
r - - 只读权限
- w - 只写权限
- - x 仅可执行权限
r w - 可读可写权限
- w x 可写可执行权限
r - x 可读可执行权限
r w x 可读可写可执行权限

(2)八进制表示法

假如把三个权限位看成三个比特位,1代表有权限0代表没有权限,那么三个比特位最大能表示的数字是7,刚好够表示所有情况。
比如:1 1 1 表示可读可写可执行,1 0 0 表示只有读权限,0 0 0 表示没有任何权限

在这里插入图片描述
如果用8进制表示这三个比特位就刚好表示从0到7的所有情况

符号表示 二进制表示 八进制表示 权限
- - - 0 0 0 0 无任何权限
- - x 0 0 1 1 仅可执行权限
- w - 0 1 0 2 只写权限
- w x 0 1 1 3 可写可执行权限
r - - 1 0 0 4 只读权限
r - x 1 0 1 5 可读可执行权限
r w - 1 1 0 6 可读可写权限
r w x 1 1 1 7 可读可写可执行权限

设置文件权限

chmod命令

功能:设置文件的访问权限
语法:chmod [参数] [权限] [文件名]
注意:只有文件的拥有者和root才可以修改文件的权限
选项可以用字符也可以用3位8进制

用户表示符+、-、=

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

用户符号

  • u:文件拥有者
  • g:拥有者同组用户
  • o:其它用户
  • a:所有用户

字符选项示例

取消文件所属者的读取和写入权限

在这里插入图片描述
取消用户所属组的所有权限
在这里插入图片描述
给其他用户添加写权限
在这里插入图片描述
取消所有用户的写权限

在这里插入图片描述
如果要同时设置不同的用户权限可以用 逗号隔开

在这里插入图片描述
=示例
可以直接用 =给对应用户赋予对应的权限

在这里插入图片描述

八进制选项示例

符号表示 二进制表示 八进制表示 权限
- - - 0 0 0 0 无任何权限
- - x 0 0 1 1 仅可执行权限
- w - 0 1 0 2 只写权限
- w x 0 1 1 3 可写可执行权限
r - - 1 0 0 4 只读权限
r - x 1 0 1 5 可读可执行权限
r w - 1 1 0 6 可读可写权限
r w x 1 1 1 7 可读可写可执行权限

在这里插入图片描述
-R 递归修改权限

-R递归修改文件权限
在这里插入图片描述

设置文件拥有者(chown)

语法:chown [参数] [用户名] [文件名]
功能:修改文件拥有者
常用选项:-R递归修改文件拥有者

注意:修改文件拥有者需要root用户,或者用sudo命令提升权限

在这里插入图片描述
使用sudo命令提升权限

sudo命令使用教程

在这里插入图片描述

设置文件所属组(chgrp命令)

语法:chgrp [参数] [要修改新用户组名]
功能:修改文件所属组
常用选项:-R递归修改文件或者目录的所属组

注意:chgrp也需要 sudo命令提升权限
在这里插入图片描述

同时修改文件所属者和所属组

语法:sudo chown [用户名]:[用户名] [文件名]

在这里插入图片描述

umask命令

语法:umask
功能:查看或修改文件掩码
为什么创建的普通文件,或者对应都有一个默认权限,默认权限为何又是当前的样子?

  • 新建的文件默认权限是 0666
  • 新建的目录默认权限是 0777
    这两默认的权限位只要关注后面三位即可,文件权限上面讲了使用八进制位标识

我们发现文件和目录的默认权限,和我们创建出来的文件和目录和默认权限不一样。
这是为什么呢?

在这里插入图片描述

其实真正的权限位是通过计算得来的
计算方法为,先将umask按位取反再按位与上默认的文件或者目录权限值
(~umask)&[文件或者目录的权限值]

在这里插入图片描述

如果我们将文件掩码修改成 777
那么默认的文件权限就是 不可读、不可写也不可执行

在这里插入图片描述
就可以理解为凡是在 umask中出现的权限位,都不应该在 最终 权限位中出现
最终权限 = 默认权限&(~umask)
在这里插入图片描述

目录权限

  • 可执行权限:如果没有可执行权限,就无法cd到目录中
  • 可读权限:如果没有可读权限,则无法用ls等其它查看命令查看目录中的文件内容
  • 可写权限:如果目录没有可写权限,就无法在目录中创建文件,也无法在目录中上删除文件

那么问题来了。
文件权限只有读写和可执行,并没有删除权限,那么就是说只要某个用户只要有写目录的权限,用户就可以删除目录中的文件,而不用管这个用户是否有这个文件的写权限

我们发现hhy 用户也可以删除root用户的文件
在这里插入图片描述

粘滞位

注意:粘滞位一般用于公开的目录上,也就是其它用户有权,读写执行
语法:chmod +t [目录名]
只要给目录加上粘滞位,其它用户就无法删除你的文件了

注意:如果这个目录本身就是你自己的那么你想怎么删就怎么删,加粘滞位也没用

在这里插入图片描述

在这里插入图片描述


猜你喜欢

转载自blog.csdn.net/weixin_53946852/article/details/125412907