当前位置: 首页 > article >正文

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

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 010
         111 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.kler.cn/a/515671.html

相关文章:

  • 进程、线程和协程的区别
  • 虚幻基础-1:cpu挑选(14600kf)
  • Linux 系统错误处理简介
  • 【优选算法】6----查找总价格为目标值的两个商品
  • c++模板进阶
  • MySQL四种隔离级别
  • 【玩转全栈】---基于YOLO8的图片、视频目标检测
  • 【算法笔记】力扣热题100(LeetCode hot-100)53. 最大子数组和 1.前缀和 2.动态规划
  • Kubernetes 网络插件断网恢复性能比较
  • Spring Boot中如何自定义属性配置
  • CSS 网络安全字体
  • MySQL——主从同步
  • BERT的中文问答系统69
  • w-form-select.vue(自定义下拉框组件)(与后端字段直接相关性)
  • flask实现重启后需要重新输入用户名而避免浏览器使用之前已经记录的用户名
  • Objective-C语言的安全开发
  • web3py+flask+ganache的智能合约教育平台
  • TCP全连接队列
  • Lisp语言的物联网
  • Golang:使用DuckDB查询Parquet文件数据
  • Charles 4.6.7 浏览器网络调试指南:介绍与安装(一)
  • 【赵渝强老师】K8s中Pod探针的HTTPGetAction
  • 浅谈VPP与DPDK技术以及产业界应用实例
  • 【AI编程】记录一下windsurf中Write模式和Chat模式的区别以及 AI Rules的配置方法
  • Azure学生订阅上手实操:在Ubuntu VPS上利用Docker快速部署PostgreSQL数据库
  • 考研408笔记之数据结构(四)——树与二叉树