【Linux系统编程】权限的概念

Linux权限的概念

  • Linux权限的概念
    • [1. LInux权限管理](#1. LInux权限管理)
    • [2. 文件权限值的表示方法](#2. 文件权限值的表示方法)
    • [3. 文件访问权限的相关设置方法](#3. 文件访问权限的相关设置方法)
      • [3.1 **chmod命令**](#3.1 chmod命令)
      • [3.2 **chown 命令**](#3.2 chown 命令)
      • [3.3 chgrp 命令](#3.3 chgrp 命令)
      • [3.4 umask 命令](#3.4 umask 命令)
    • [4. file 指令](#4. file 指令)
    • [5. 目录的权限](#5. 目录的权限)
    • [6. 粘滞位【选学】](#6. 粘滞位【选学】)

Linux权限的概念

Linux下有两种用户:超级用户(root)、普通用户。

超级用户:通常用户名是root,拥有系统的最高权限,可以在Linux系统下进行任何操作而不受限制。

普通用户:权限受到限制,只能进行被授权的操作。

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



用户切换命令:su
功能 ​​:用于切换当前登录的用户身份。
格式 :su [用户名]

例如:

从root用户切换到普通用户user:su user

从普通用户user切换到root用户:su root(系统会提示输入root用户的口令)

1. LInux权限管理

1.文件访问者的分类

权限针对以下三类"人"进行设置:

  • 文件和文件目录的所有者​​:u,即User,文件的创建者。
  • 文件和文件目录的所有者所在的组的用户​​:g,即Group,文件所属用户组中的其他成员。
  • 其它用户​​:o,即Others,既不是所有者也不在同组的其他任何用户。

2.文件类型和访问权限

文件属性

Linux中一切皆文件,通过ls -l命令的第一个字符可以识别文件类型:

  • d:目录(文件夹)
  • -:普通文件
  • l:软链接(类似于Windows的快捷方式)
  • b:块设备文件(如硬盘、光盘)
  • c:字符设备文件(如屏幕等串口设备)
  • p:管道文件
  • s:套接口文件

基本权限

每种权限对文件和目录的意义不同:

权限 字符表示 八进制表示 对文件的含义 对目录的含义
r 4 读取文件内容 浏览目录内容(列出文件名)
w 2 修改文件内容 在目录中创建、删除、重命名文件
执行 x 1 执行文件(如脚本、程序) 进入目录(cd到该目录)
无权限 - 0 不具备相应权限 不具备相应权限

2. 文件权限值的表示方法

  • 字符表示法:例如:- r w x r - x r - - -,共10位。第1位是文件类型,后续9位每3位一组,分别对应所有者(u)、所属组(g)、其他用户(o) 的rwx权限。
  • 八进制数值表示法:将每组权限视为一个二进制数(有权限为1,无权限为0),再转换为八进制数字。例如:
  • r w x r - x r - -转换为:
    所有者: r w x = 4+2+1 = 7
    所属组: r - x = 4+0+1 = 5
    其他用户: r - - = 4+0+0 = 4
    所以该权限的数字表示为 754。

3. 文件访问权限的相关设置方法

3.1 chmod命令

功能​​ :修改文件或目录的访问权限。

​​注意 ​​:只有文件的​​拥有者​​和​​root​​用户有权修改文件的权限。
​​格式 ​​:chmod [参数] 权限 文件名
常用选项​​:-R:递归修改目录及其内部所有文件的权限。

权限设置格式​​:

​​1) 用户符号 +/-/= 权限字符​​
​​用户符号​​:

u:拥有者

g:所属组

o:其他用户

a:所有用户

操作符​​:

+:增加权限

-:移除权限

=:设置绝对权限(覆盖原有权限)

​实例​​:

chmod u+w /home/abc.txt(给文件所有者增加写权限)

chmod o-x /home/abc.txt(移除其他用户的执行权限)

chmod a=x /home/abc.txt(设置所有用户的权限为"仅执行")

2)三位八进制数字​

​实例​​:

chmod 664 /home/abc.txt(权限为 r w - r w - r - -)

chmod 640 /home/abc.txt(权限为 r w - r - - - - -)

3.2 chown 命令

功能 ​​:修改文件的拥有者。
​​格式​​ :chown [参数] 用户名 文件名

​​实例 ​​:

chown user1 f1(将文件f1的拥有者改为user1)

chown -R user1 filegroup1(递归修改目录filegroup1及其内容的拥有者)

3.3 chgrp 命令

​​功能 ​​:修改文件或目录的所属组。

​​格式 ​​:chgrp [参数] 用户组名 文件名

​​常用选项 ​​:-R递归修改。

​​实例​​:chgrp users /abc/f2(将文件f2的所属组改为users组)

3.4 umask 命令

​​功能 ​​:查看或修改文件创建时的默认权限掩码。

新建文件的默认权限为 0666(rw-rw-rw-)

新建目录的默认权限为 0777(rwxrwxrwx)

实际创建的权限 = 默认权限 ​​减去​​ umask值(或理解为 默认权限 & ~umask)
​​格式 ​​:umask [权限值]

超级用户默认umask为 ​​0022​​

普通用户默认umask为 ​​0002​​

​​实例 ​​:

umask(查看当前umask值)

umask 044(设置umask值为044)

4. file 指令

功能说明 ​​:用于辨识文件的真实类型,不依赖于文件扩展名。

​​语法 ​​:file [选项] 文件或目录...

​​常用选项​​

-c:详细显示指令执行过程,便于排错。

-z:尝试去解读压缩文件的内容。

使用sudo分配权限

sudo允许系统管理员委派权限,让普通用户以其他用户(通常是root)的身份执行命令。

  1. 修改 /etc/sudoers文件分配权限​​:
bash 复制代码
chmod 740 /etc/sudoers  # 先赋予写权限
vi /etc/sudoers         # 编辑文件

格式​​:接受权限的用户 登陆的主机=(执行命令的用户) 命令

  1. 使用sudo调用授权的命令​​

格式 ​​:sudo -u 用户名 命令

​​实例​​:sudo -u root /usr/sbin/useradd u2(以root身份执行添加用户命令)

5. 目录的权限

目录的权限含义特殊,需要特别注意:

  • 可执行权限 x:这是进入目录的"钥匙"。如果目录没有x权限,用户将无法cd到该目录,即使它拥有该目录的r(读)权限。
  • 可写权限 w:如果目录有w权限,用户就可以在该目录内创建或删除文件。这里有一个关键点:删除一个文件所需的权限,取决于文件所在目录的w权限,而不是文件本身的w权限。

这意味着,只要用户对某个目录具有写权限,他就可以删除该目录下的​​任何文件​​,包括不属于他自己的文件。这显然是不安全的。为了解决这个问题,Linux引入了"粘滞位"。

6. 粘滞位【选学】

当一个目录被设置了粘滞位后,该目录下的文件只能被以下三种身份的用户删除或重命名:

  1. 超级管理员 (root)
  2. 该目录的所有者
  3. 该文件的所有者

​​设置方法​​ :chmod +t 目录名

​​效果 ​​:设置了粘滞位的目录(如系统的/tmp目录),其权限位最后一位会变成t(例如 drwxrwxrwt)。这有效防止了用户在公共可写目录中随意删除他人的文件,实现了安全的共享。
沾滞位的作用:在设置的沾滞位的目录下,其它用户可以创建文件,但是只能删除自己的文件,不可以删除别人的文件;可以通过chmod +t设置其它用户权限位中的沾滞位

相关推荐
cellurw4 小时前
Day67 Linux I²C 总线与设备驱动架构、开发流程与调试
linux·c语言·架构
天朝八阿哥4 小时前
Bye~~ win10!
linux·windows
孙同学_4 小时前
【Linux篇】软链接vs硬链接:Linux文件系统中的两种引用机制
linux·运维·服务器
hour_go4 小时前
解决Linux系统中“undeclared identifier“问题的完整指南
linux·运维·服务器
天赐细莲5 小时前
(Linux) WSL 通过 VSCode 连接不执行 profile 问题(登录Shell问题)
linux·运维·vscode
咬_咬5 小时前
Linux时间轮定时器
linux·运维·网络·定时器·timerfd
LCG元5 小时前
Linux Shell脚本编程实战:自动备份网站文件和数据库,并定期清理过期备份
linux
Liu1bo6 小时前
【MySQL】表的约束
linux·数据库·mysql
MC皮蛋侠客6 小时前
Ubuntu禁用系统手势,阻止应用程序异常最小化
linux·运维·qt·ubuntu