【Linux】权限管理与相关指令

文章目录

1.权限、文件权限、用户

通过一定条件,拦住一部分人,给另一部分权利来访问资源,比如Vip、门禁等。

(1)权限 = 用户角色 + 文件属性。

(2)Linux中的用户:root超级管理员、普通用户。

(3)对于文件来说有三种角色:user 所有者、group 所属组用户(所有者所在组的用户)、others 其它用户。"组"的这种权限管理概念,主要是多人协作时有用。

文件权限的理解以及对应八进制数值表示、设置目录为粘滞位

  • r(4):读权限,用户能查看指定目录内的文件;读取文件内容;
  • w(2):写权限,用户能在目录内创建、移动、修改和删除文件;修改文件内容;
  • x(1):执行权限,用户可以进入这个目录;可以执行文件;
  • -:表示不具有权限;
  • rw(6):读写权限;
  • wx(3):写和可执行;
  • rwx(7):可读可写可执行;
  • ---:三个'-'号表示该用户无任何权限。

对于x可执行权限的理解:拥有可执行权限!=可执行,可执行==具有可执行权限+文件是可执行文件。

  • 对一个目录或文件无x权限,意味着无法cd到目录,无法在目录下执行命令;也无法执行一个可执行文件;

  • 对一个目录或文件无r权限,意味着无法用ls查看目录内有哪些文件,也不能用cat读取文件内容;

  • 对一个目录或文件无w权限,意味着无法在这个目录创建文件,也无法删除、编辑文件。

有几点要注意:目录有-r权限,不代表可以进入目录读取文件,这一点是-x控制的而不是-r。目录具有-x权限,没有-r权限,则可以cd进入这个目录,也可以在这个目录下执行命令;但由于没有-r权限,即使可以执行ls命令,也任然无法读取目录下有哪些文件或目录。

但有一点并不科学,只要用户有目录的写权限,那就可以删除目录中的文件,而不论这个用户是否有这个文件的写权限,例如张三创建的文件,凭什么李四能删除掉。一个文件能不能被删除,与用户是否有这个文件的写权限无关,只要有这个文件所在目录的写权限,即使是普通用户也可以为所欲为,为了解决这个问题,Linux引入了粘滞位

chmod +t 目录 设置目录为粘滞位,该目录下的文件只能由超级管理员、目录的所有者或文件的所有者删除。

多个Linux用户协作,如果想实现多个用户文件信息共享,注意不能在任何一个用户家目录里面创建文件来共享(只有拥有者对家目录有权限),而是在系统的非用户目录下创建共享目录,并且对other用户放开所有权限。

但这样还是会出问题,比如张三在这个共享目录创建了一个文件,这个文件张三只想给李四看,王五就不爽了把这个文件删了,所以需要使用粘滞位来防止这种情况。不开放写权限也可以解决问题,但是这样一来其它用户就无法再共享目录中创建文件,那就无法做到共享了。

文件类型

  • d:文件夹(目录);
  • -:普通文件;
  • l:软链接(类似Windows的快捷方式打开软件);
  • b:块设备文件:硬盘、光驱;
  • p:管道文件;
  • c:字符设备文件:屏幕显示器;
  • s:套接口文件。

Windows系统通过后缀区分文件类型,但是Linux不是以后缀区分,也就是Linux的文件不需要后缀。但我们习惯使用Windows,学习Linux创建文件也习惯加上后缀让我们自己好区分。

虽然Linux文件不需要后缀,但不是说Linux文件不需要文件后缀,比如在Linux使用gcc编译器变成C/C++文件,那gcc编译器就会区分了,如果不是.c或.cpp结尾,没办法编译。

2.权限相关的常用指令

su

su:切换超级用户

su [用户名]:切换用户

会提示输入密码。

超级用户的命令提示符是#,普通用户是$。

sudo

给任何指令提权,以root的身份执行:sudo 后接任何指令

需要输入你的密码,不是root用户的密码,很奇怪!

chmod

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

-R 递归修改目录权限

+号增加权限,-号减少权限,=号赋予权限

u:user,即所有者

chmod u+rwx filename

chmod u-rwx filename

g:group,即所属组

o:other,即其它用户

a:all,所有用户

普通用户如果对这个文件没有相应权限,即使这个文件的所有者是你,那也无法执行相应操作!

只有root不受权限约束!

使用权限数值修改权限:

chmod 744 fimename

第一个7即文件拥有者可读可写可执行;

第二个4即所属组成员可读;

第三个4即其它用户可读。

chown

修改文件或目录的拥有者。

-R 递归修改目录下的文件所属者

chown username filename

chown zhangsan test.c

chgrp

修改文件或目录的所属组

-R 递归修改目录下的文件所属组

chgrp [-R] 用户组 文件名

umask

查看、修改或设置文件掩码,超级管理员用户的默认文件掩码一般是0022 ,普通用户是0002

新建文件的默认权限是0666 ,新建目录的默认权限是0777 。但创建后的文件或目录不是这个默认权限值,因为会受到umask文件掩码的影响,实际上创建文件或目录的权限是:默认权限 & ~umask,按位取反后的umask文件掩码,按位与文件或目录的默认权限。

也可以不用这么麻烦去算,直接把默认权限减去文件掩码就能得到创建后的权限,不过要记住权限值的原理并不是相减得到,而是上述说的默认权限 $ ~umask

umask 查看

umask 044 设置或修改为044

whoami

显示当前登录用户

file

显示文件类型

相关推荐
栈低来信1 分钟前
klist链表
linux·数据结构·链表
一个平凡而乐于分享的小比特2 分钟前
Linux动态库与静态库技术详解
linux·动态库·静态库
XiaoHu02073 分钟前
Linux网络编程(第三弹)
linux·运维·网络
袁袁袁袁满9 分钟前
Docker服务彻底清空的所有相关资源(容器、镜像、网络、数据卷等)
linux·运维·ubuntu·docker·容器·docker清空资源·docker停掉资源
什么都不会的Tristan12 分钟前
微服务保护
运维·微服务·架构
Run_Teenage14 分钟前
Linux:匿名管道(实现个进程池)和命名管道
linux·运维·服务器
warton8815 分钟前
proxysql配置mysql mgr代理,实现读写分离
linux·运维·数据库·mysql
skywalk816315 分钟前
Ubuntu22.04安装docker并启动 dnote服务
linux·ubuntu·docker·dnote
上天_去_做颗惺星 EVE_BLUE18 分钟前
Android设备与Mac/Docker全连接指南:有线到无线的完整方案
android·linux·macos·adb·docker·容器·安卓
-dcr19 分钟前
52.kubernetes基础
运维·云原生·kubernetes