Linux终端之旅: 权限管理三剑客与特殊权限

server/2025/1/24 13:16:07/
Linux 权限的概念
Linux 下有两种用户:超级用户( root )、普通用户。
超级用户:可以在linux下做任何事,不受-rwx权限的影响
普通用户:linux使用者,受权限的影响
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
命令:su [用户名]
功能:切换用户。
例如, 要从 root 用户切换到普通用户 user ,则使用 su user 。 要从普通用户 user 切换到 root 用户则使用 su  root root 可以省略),此时系统会提示输入 root用户的口令。

 1.linux文件属性

文件访问者分为:

- 文件和文件目录的 所有者(u-Usr)。

- 文件和文件目录的 所有者所在组的用户(g-group)。

- 其它用户(o-Others)。

字符表示权限方法 :

r 、w、x分别表示可读、可写、可执行

开头字符意义:

d:目录-:普通文件c:字符设备文件b:块设备文件p:管道文件c:链接文件

八进制表示权限的方法 :

 

2. 权限管理三剑客

2.1chmod

在 Linux 中,`chmod`(更改模式的缩写)是一条用于更改文件或目录权限的命令。权限决定了谁可以读取、写入或执行某个文件或目录,权限分为以下三组:

1. 拥有者(用户):拥有文件的用户。
2. 所属组:与文件相关联的用户组。
3. 其他人:不属于上述两者的其他用户。

用法格式为:
chmod [类别][操作][权限] 文件名

类别:

- `u`:用户(文件所有者)
- `g`:组
- `o`:其他人
- `a`:所有人(用户、组和其他人)

操作:

- `+`:添加权限
- `-`:移除权限
- `=`:设置为指定权限

权限可以通过字符模式或八进制数值模式来设置:

字符模式
符号模式使用字母表示权限类别和操作。例如:
- `r` 代表读取权限
- `w` 代表写入权限
- `x` 代表执行权限

八进制数字模式
数字模式使用八进制数字表示权限,每个权限类别的值如下:
- `4`:读取权限
- `2`:写入权限
- `1`:执行权限

三个数字分别对应所有者、组和其他人的权限。

例如:

chmod 755 file.txt

表示:

- 所有者 有读、写、执行权限(7 = 4 + 2 + 1)
- 组和其他人 有读和执行权限(5 = 4 + 1)

(1)将可读权限删除后,无法读取内容

(2)可以多项操作

(3)使用八进制修改权限

(4)对所有用户进行操作

使用a或者不用类别

注意:

超级用户(root):可以在linux下做任何事,不受-rwx权限的影响
普通用户:linux使用者,受权限的影响
如果你是超级用户,则不受-rwx权限的影响。
补充:
1.只有文件的拥有者和超级用户可以修改自己的权限
2.可执行程序 = 文件是可执行文件 + 可执行权限(x)
3.user、group、others和我自己进行身份对比时只对比一次

这里“wang”依次和拥有者、所属组进行对比,与拥有者身份匹配成功,拥有者没有读写权限 

更改文件所属组需要root权限或者使用sudo提取权限 

2.2 chgrp

chgrp - 更改文件或目录的所属组
- 语法:chgrp [选项] 新组 文件名
- chgrp 仅更改文件或目录的所属组。

例如:

- 常用选项:

2.3 chown

chown - 更改文件或目录的所有者和组
- 语法:chown [选项] [新所有者][:新组] 文件名
- chown 用于更改文件或目录的所有者或所属组。

(1)更改文件或目录的所有者

(2)更改文件或目录的所有者和所属组

(3)常用选项

3. 关于权限的三个问题

3.1目录权限(控制用户对目录的访问行为)

(1)x:进入一个目录需要的权限

有权限可以进入

 无权限不能进入

(2)r:查看目录需要的权限

有权限可以查看

无权限不能查看

(3)w:在目录中新建文件,删除、修改文件名等修改文件的操作

有权限可以操作

无权限不能操作

3.2 缺省权限(文件和目录的默认权限)

在Linux中,缺省权限(Default Permissions)是指系统为新建的文件和目录分配的初始权限。这个默认权限是通过 umask 值来控制的,`umask` 会“屏蔽”掉某些权限,从而设置文件和目录的初始权限。

(1)初起始限

新文件的起始权限一般为 666(可读写,但无执行权限)。
新目录的起始权限一般为 777(可读写执行)。

(2)umask的权限掩码

- 当 umask 为 022 时,新建文件的权限为 644,新建目录的权限为 755。

我们这里只看后三位,转成二进制的

000 000 010

- 可以通过 umask 命令查看或设置缺省权限的屏蔽位,例如 `umask 777`。 这让我们可以通过修改权限掩码达到修改Linux文件缺省的问题。

(3)最终权限(缺省权限)

最终权限 = 起始权限 & (~umask)
       ~ 000 000 010111 111 101& 
起始权限  110 110 110   (666)最终权限  110 110 100 -> 664

要永久更改umask,可以在 `~/.bashrc` 或 `/etc/profile` 中添加 `umask` 配置。这使得创建的文件和目录能自动获得合适的权限,更加安全和便捷。

3.3 粘滞位

在Linux中,“粘滞位”(Sticky Bit)是一种文件权限设置,用于目录或文件上,控制用户对文件或目录内容的删除权限。通常设置粘滞位主要用于目录,使目录下的文件或子目录只能被文件的所有者、目录的所有者或者超级用户删除或重命名,其他用户即使有写权限,也无法删除或修改这些文件。
(1)常见的使用场景包括:
- 共享目录:例如`/tmp`目录,允许所有用户进行读写操作,但防止非所有者删除其他用户的文件。

(2)设置方法
可以使用`chmod`命令设置粘滞位:

添加粘滞位
chmod +t 目录名移除粘滞位
chmod -t 目录名

(3)权限表示
在执行`ls -l`查看文件权限时,粘滞位会以“`t`”显示在目录的执行权限位置上。例如:

这里的`-rw-rw-r-T`中的 T 表示粘滞位已经设置。

当一个目录被设置为 " 粘滞位 "( chmod +t), 则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删

4.总结

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

http://www.ppmy.cn/server/161025.html

相关文章

图像点处理

怎么理解灰度图? RGB很明显有三个通道 我们看红色通道,因为天空中红色含量(R值)最少,因此红色通道中的天空最暗,而因为建筑红色含量(R值)最高,所以红色通道中的建筑最亮…

数据分析 six库

目录 起因 什么是six库 智能识别py2或3 ​编辑 起因 ModuleNotFoundError: No module named sklearn.externals.six sklearn.externals.six 模块在较新版本的 scikit-learn 中已经被移除。如果你在尝试使用这个模块时遇到了 ModuleNotFoundError: No module named sklear…

FPGA产业全景扫描

随着芯片种类日益丰富、功能日益强大,人们不禁好奇:一块FPGA是如何从最初的概念一步步呈现在我们面前的? FPGA设计、FPGA原型验证/仿真、FPGA板级调试和应用,是FPGA从概念到应用的必经之路。本文将围绕这几个核心环节&#xff0c…

Pytorch - YOLOv11自定义资料训练

►前言 本篇将讲解目前最新推出的YOLOv11搭配Roboflow进行自定义资料标注训练流程,透过Colab上进行实作说明,使大家能够容易的了解YOLOv11的使用。 ►YOLO框架下载与导入 ►Roboflow的资料收集与标注 进行自定义资料集建置与上传 透过Roboflow工具进行…

蚁群算法 (Ant Colony Optimization) 算法详解及案例分析

蚁群算法 (Ant Colony Optimization) 算法详解及案例分析 目录 蚁群算法 (Ant Colony Optimization) 算法详解及案例分析1. 引言2. 蚁群算法 (ACO) 算法原理2.1 蚂蚁觅食行为2.2 算法步骤2.3 数学公式3. 蚁群算法的优势与局限性3.1 优势3.2 局限性4. 案例分析4.1 案例1: 旅行商…

数据结构-二叉树

树的相关概念: 1、节点的度:树中一个节点的孩子个数称为该节点的度, 所有节点的度的最大值是树的度 2、分支节点:度大于0的节点称为分支节点 3、叶子结点:度为0的节点称为叶子结点 4、节点的层次(深度&…

Javaweb之css

css的三种引入方式 1内行式 2.内嵌式 3.外部样式表 内行式和内嵌式 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0&quo…

OpenCV相机标定与3D重建(66)对立体匹配生成的视差图(disparity map)进行验证的函数validateDisparity()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 使用左右检查来验证视差。矩阵 “cost” 应该由立体对应算法计算。 cv::validateDisparity 函数是 OpenCV 库中用于对立体匹配生成的视差图&…