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

Linux 权限的概念
Linux 下有两种用户:超级用户( root )、普通用户。
超级用户:可以在linux下做任何事,不受-rwx权限的影响
普通用户:linux使用者,受权限的影响
超级用户的命令提示符是"#",普通用户的命令提示符是"$"。

bash 复制代码
命令:su [用户名]
功能:切换用户。

例如, 要从 root 用户切换到普通用户 user ,则使用 su user 。 要从普通用户 user 切换到 root 用户则使用 su root ( root 可以省略),此时系统会提示输入 root用户的口令。

1.linux文件属性

文件访问者分为:

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

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

  • 其它用户**(o-Others)。**

字符表示权限方法 :

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

开头字符意义:

bash 复制代码
d:目录

-:普通文件

c:字符设备文件

b:块设备文件

p:管道文件

c:链接文件

八进制表示权限的方法 :

2. 权限管理三剑客

2.1chmod

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

  1. 拥有者(用户):拥有文件的用户。

  2. 所属组:与文件相关联的用户组。

  3. 其他人:不属于上述两者的其他用户。

bash 复制代码
用法格式为:
chmod [类别][操作][权限] 文件名

类别:

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

操作:

bash 复制代码
- `+`:添加权限
- `-`:移除权限
- `=`:设置为指定权限

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

字符模式

符号模式使用字母表示权限类别和操作。例如:

  • `r` 代表读取权限

  • `w` 代表写入权限

  • `x` 代表执行权限

八进制数字模式

数字模式使用八进制数字表示权限,每个权限类别的值如下:

  • `4`:读取权限

  • `2`:写入权限

  • `1`:执行权限

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

例如:

bash 复制代码
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。

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

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

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

cpp 复制代码
最终权限 = 起始权限 & (~umask)
cpp 复制代码
       ~ 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`命令设置粘滞位:

cpp 复制代码
添加粘滞位
chmod +t 目录名

移除粘滞位
chmod -t 目录名

(3)权限表示

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

这里的`-rw-rw-r-T`中的T 表示粘滞位已经设置。
当一个目录被设置为 " 粘滞位 "( 用 chmod +t), 则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删

4.总结

  • 目录的可执行权限是表示你可否在目录下执行命令。
  • 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
  • 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限,所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。
相关推荐
爱敲代码的边芙14 分钟前
Linux:信号的保存[2]
linux·运维·服务器
葛小白117 分钟前
第五天 Labview数据记录(5.1 INI配置文件读写)
服务器·labview
阿俊仔(摸鱼版)26 分钟前
Python 常用运维模块之OS模块篇
运维·开发语言·python·云服务器
工程师焱记27 分钟前
Linux 常用命令——系统设置篇(保姆级说明)
linux·运维·服务器
某风吾起1 小时前
linux系统中的 scp的使用方法
linux·服务器·网络
『往事』&白驹过隙;1 小时前
操作系统(Linux Kernel 0.11&Linux Kernel 0.12)解读整理——内核初始化(main & init)之缓冲区的管理
linux·c语言·数据结构·物联网·操作系统
chian-ocean1 小时前
探索Linux中的进程控制:从启动到退出的背后原理
linux·运维·服务器
涛ing1 小时前
23. C语言 文件操作详解
java·linux·c语言·开发语言·c++·vscode·vim
阿猿收手吧!1 小时前
【Linux网络总结】字节序转换 收发信息 TCP握手挥手 多路转接
linux·服务器·网络·c++·tcp/ip
华纳云IDC服务商1 小时前
常见的备份服务器操作系统如何选择
运维·服务器