Linux权限管理

目录

前言

[1. Linux权限的概念](#1. Linux权限的概念)

[2. Linux权限管理](#2. Linux权限管理)

[2.1 修改权限](#2.1 修改权限)

拓展

[2.2 修改拥有者](#2.2 修改拥有者)

[2.3 修改所属组](#2.3 修改所属组)

[3. 文件类型](#3. 文件类型)

[3.1 file指令](#3.1 file指令)

[4. 权限掩码](#4. 权限掩码)

umask指令

5.目录权限

[6. 粘滞位](#6. 粘滞位)

总结


前言

Linux作为一款开源操作系统,其权限管理机制是非常重要的一部分。熟练掌握Linux权限,可以帮助我们更好地管理文件和目录,保障系统的安全性和稳定性。

1. Linux权限的概念

Linux中分为两种用户:

  • 超级用户(root)
  • 普通用户

超级用户可以再Linux系统下做任何事情,不受限制

普通用户在Linux下是受限制的,Linux权限的管理也就是对普通用户权限的管理

比如:

用户test(普通用户)访问www(普通用户)的文件夹被拒绝访问

root账户不受任何限制直接进入:

所以root用户的密码非常重要,不要泄露!!

命令:su +【用户名】

**功能:**切换用户

从root用户切换到普通用户,则使用 su+user

从普通用户切换到root用户则使用 su+root(root可以省略)

普通用户执行sudo -ls,在正常的情况下:

没有设置权限的情况下无法执行

sudo + 指令 :以root身份运行

执行显示test(用户)不再sudoers文件里

解释:

sudoers文件相当于一个白名单,在名单里的用户才可以使用sudo

注意:

sudoers文件拥有者是root(超级管理员)

普通用户无法访问修改

2. Linux权限管理

文件访问者分类:

  • 文件和文件目录的所有者:u---User
  • 文件和文件目录的所有者所在组的用户:g---Group
  • 其它用户:o---Others

使用 " ls -l "指令可以查看文件的详细信息

这些信息都代表着什么意思?

权限字符表示:

进制数表示:

2.1 修改权限

语法:chmod +【参数】 + 文件
功能: 设置文件访问权限
常用选项:

  • 字符修改

比如:

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

用户符号:

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

去除拥有者的r权限

增加拥有者可读可执行权限

去除拥有者可执行权限,去除所属组可写权限,去除其他人可读权限

给所有人写权限:

  • 进制数修改权限

3位进制数:

  1. 第1位代表拥有者权限
  2. 第2位是所属组权限
  3. 第3位是其他用户权限

拓展

上述的指令是对文件的权限进行修改,私下大家可以进行权限验证

Linux执行文件:

  • 有可执行权限
  • 是可执行文件

注意:

当拥有者和和所属组一样,而拥有者没有可执行权限,拥有者将无法执行文件:

**当拥有者和和所属组一样时,**权限判断时有优先次序,系统在判断时,拥有者没有可执行权限就直接禁止,不会再进行后续判断

如果是root账户,即使没有读写执行权限依然可以操作:

root之下没有权限

2.2 修改拥有者

语法:chown +【用户】 + 文件
功能: 修改文件拥有者

正常情况下,普通用户无法私自将自己所属文件修改为其他用户所属:

需要以root身份执行:

其他用户使用sudo指令也可以修改

2.3 修改所属组

语法:chgrp +【用户组】 + 文件
功能: 修改文件所属组

常用选项:

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

同时修改拥有者和所属组:

3. 文件类型

Linux的文件类型不通过后缀区分(不代表Linux不用后缀)

常见文件类型:

  • -开头: 普通文件,文本、源代码、图片、视频、库、可执行等
  • d开头: 目录文件
  • b开头: 块设备文件 ->磁盘
  • c开头: char,字符设备文件 ->键盘显示器
  • l开头: 链接文件
  • p开头: 管道文件
  • s开头: socket文件

3.1 file指令

功能: 辨识文件类型。

语法:file 【选项】 文件或目录...
常用选项:

  • -c 详细显示指令执行过程,便于排错或分析程序执行的情形。
  • -z 尝试去解读压缩文件的内容

比如:

4. 权限掩码

权限顶格写权限就是777(所有人都有rwx权限)

那为什么每次创建目录 默认权限不是777?每次创建的文件默认权限不是666?

这里就要引入权限掩码的概念了

umask指令

**功能:**查看或修改文件掩码

  • 查看权限掩码:

    umask

我的设备上的权限掩码是002

我创建的文件默认权限是664

创建文件时:从起始权限中,去掉umask中出现的权限

666二进制:110 110 110

002二进制:000 000 010

去除002:110 110 100 ->664

  • 修改权限掩码

**语法:**umask 【权限掩码】

权限掩码是怎么去除的?

去除:不是二进制相减

计算规则:

起始权限& (~按位取反umask)=最终权限(默认)

比如:

666:

110 110 110

000 000 011->按位取反:111 111 100

110 110 110

111 111 100 &


110 110 100 ->664


777:

111 111 111

111 111 100 &


111 111 100 ->774

5.目录权限

前边我们提到的例子都是对文件的限制,那权限对目录有什么影响呢?

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

注意:

没有w(写)权限,仍然可以修改文件权限(可能有些版本操作系统里不允许),但不允许移动和修改文件名

6. 粘滞位

那么现在问题来了,只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不管这个用户是否有这个文件的写权限

这样似乎很不复合常理,我的文件,凭什么你可以删?

也就是说:

一个文件能否被删除,并不取决于文件本身,取决于文件所在的目录,目录拥有者是否有w权限

一般情况下普通用户无法进入到其他用户目录下,更无法创建文件

如果不能将文件创建到其他用户的文件下,那用户之间如何进行数据交换呢?

为了解决这个问题,Linux中有一个特殊的目录:

特殊目录(tmp,拥有者root)

来实现文件共享,other权限:rwx

tmp目录允许所有用户将临时文件创建在该目录。

那么问题来了:

用户都有W权限,那都可以删除文件,那如何防止自己的文件被其他用户删除?

把所有的用户都去除w权限不行,因为去除other的w权限,其他用户无法删除的同时,也无法创建文件。

为了解决这个问题,Linux给其他用户新增一个权限:t(粘滞位)

粘滞位 :给目录中的other设置一个权限位,具有x的意义,同时也进一步对目录权限进行特殊限定:该目录里的文件,只有root和文件(或目录)的拥有者有权利进行删除。


总结

掌握Linux权限管理,可以更好地管理文件和目录,提高系统的安全性和稳定性,上述的内容,大家可以私下实验一下,亲身体验才能更有感触。好了,以上便是本期全部内容。最后,感谢阅读!

相关推荐
NiNg_1_23415 分钟前
使用Docker Compose一键部署
运维·docker·容器
萠哥啥都行20 分钟前
Linux安装Docker以及Docker入门操作
运维·docker·容器
王哲晓20 分钟前
Linux通过yum安装Docker
java·linux·docker
小江湖199426 分钟前
元数据保护者,Caesium压缩不丢重要信息
运维·学习·软件需求·改行学it
gopher951134 分钟前
linux驱动开发-中断子系统
linux·运维·驱动开发
码哝小鱼1 小时前
firewalld封禁IP或IP段
linux·网络
鼠鼠龙年发大财1 小时前
【x**3专享】安装SSH、XFTP、XShell、ARM Linux
linux·arm开发·ssh
nfgo1 小时前
快速体验Linux发行版:DistroSea详解与操作指南
linux·ubuntu·centos
河南宽信李工1503806 16861 小时前
测绘航空摄影专项资质在洛阳市的获取流程
服务器
吃面不喝汤662 小时前
如何配置和使用自己的私有 Docker Registry
运维·docker·容器