Linux权限基础详解

Linux权限基础详解

01. 引言:Linux权限为什么重要?

​ 绝大多数用户使用的是个人计算机,使用者一般都是被信任的人。在此基础上,用户都可以使用管理员身份直接登录。但在服务器上存储的数据庞大,价值更高,因此服务器对于权限的设计更加细致,对于用户的分级也要更加明确。因此Linux作为多用户操作系统,为每个文件都添加了很多属性来维护数据安全,避免配置不当造成数据泄露、服务瘫痪甚至服务器遭受攻击。例如使用chmod -R 777导致数据库被恶意篡改。

我们可以通过ls -al命令查看文件或者目录的权限信息。

ls -al

在这里插入图片描述


02. 用户与组:权限的分配基础

Linux下有两种用户:超级用户(root),普通用户(user),超级用户以命令提示符为#,普通用户提示符为$,使用su完成用户切换。其中通过 用户(User)组(Group)其他(Other) 管理权限,每个文件/目录均有对应的归属关系在开头三个一组的集合中,它们共同决定系统资源的访问控制。

  • 超级用户: 在Linux下权限最大,所做操作不受限制。

  • 普通用户: 在Linux下有限的操作。

  • 查看身份信息

    id  # 显示当前用户的UID、GID及所属组
    

    在这里插入图片描述

    cat /etc/group   # 查看所有组
    

    在这里插入图片描述

    cat /etc/group   # 查看所有组
    

    在这里插入图片描述


03.文件权限的操作与表示

3.1 文件类型与基本权限

采用字符表示完整权限需要10位,第1位表示文件类型 ,第2-4位表示用户权限(User)第5-7位表示组权限(Group) 第8-10位表示其他权限(Other)。

在这里插入图片描述

文件类型标识符文件类型描述查看方法
-普通文件常规文件,如文本、二进制、图片等ls -lfile 文件名
d目录文件包含其他文件或子目录的容器ls -ld 目录名
l符号链接指向另一个文件的快捷方式(软链接)ls -l(显示 -> 目标路径)
c字符设备文件以字符流形式访问的设备(如键盘)ls -l /dev
b块设备文件以数据块形式访问的设备(如硬盘、USB)ls -l /dev
p管道文件进程间通信(FIFO)的特殊文件ls -lmkfifo pipe_name
s套接字文件网络或本地进程间通信的接口ls -l /var/run

3.3 权限表示法

  • 读(read): 对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
  • 写(write): 对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
  • 执行(execu): 对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限

字符表示法:

权限类型字符表示法说明
无权限---无任何权限
执行--x仅允许执行(对文件:可执行,对目录:可进入)
-w-仅允许写入(对文件:可修改文件内容,对目录:可创建/删除文件)
写 + 执行-wx可写和执行
r--仅允许读取
读 + 执行r-x可读和执行
读 + 写rw-可读写但不可执行,对目录不可浏览
全部权限rwx可读、写、执行

八进制表示法:

例如chmod 754 file.txt可分解为下述形式:

数字权限组计算方式对应字符权限
7User4® + 2(w) + 1(x)rwx
5Group4® + 0 + 1(x)r-x
4Other4® + 0 + 0r--

常见权限示例:

八进制值字符表示典型用途
644rw-r--r--用户可读写,其他用户只读(如配置文件)
755rwxr-xr-x用户完全控制,其他用户可读和执行(如脚本)
777rwxrwxrwx所有用户完全控制
600rw-------仅用户可读写(如私钥文件)

04. 权限管理命令实操

在实际应用中我们使用chmod命令设置文件的访问权限,使用chown命令修改文件拥有者,使用chgrp命令修改文件或目录的所属组。

4.1 chmod 命令:

语法: chmod [参数] 文件名

功能: 设置文件的访问权限,符号表示使用+,-对其添加或者移除权限,若使用数字模式则无需如此操作。

常用参数: -R 递归修改目录文件的权限说明(只有文件的拥有者和root才可以改变文件的权限)。

4.1.1 符号模式(直观):

  • +: 向权限范围增加权限代号所表示的权限 -:向权限范围取消权限代号所表示的权限
  • =: 向权限范围赋予权限代号所表示的权限
  • u:拥有者
  • g:拥有者同组用
  • o:其它用户
  • a:所有用户

示例代码:

chmod u+x test.txt  # 为用户添加执行权限
chmod go-w test.txt  # 移除组和其他的写权限

在这里插入图片描述

chmod a=x /home/abc.txt#对所有用户仅保留执行权限

在这里插入图片描述

4.1.2 数字模式(高效):

chmod 644 test.txt  # 用户(rw-),组和其他(r--)

在这里插入图片描述

使用 sudo分配权限:

----------------------------------------------------------------------------
#chown:修改文件拥有者
#chown [参数] 用户名 文件名
sudo chown alice:developers app.log  # 所有者改为alice,组改为developers
----------------------------------------------------------------------------
#chgrp::修改文件或目录的所属组 
#chgrp [参数] 用户组名 文件名
#:-R 递归修改文件或目录的所属组
sudo chgrp admins /var/log/audit/  # 目录组改为admins

05. 目录权限的深层逻辑

  • 执行权限(x):

    ​ 对于目录,读权限就能进入该目录,写权限就是能在该目录下创建文件,进入目录需要的权限即x(可执行),这里
    进入目录就是更改目录所在路径,更改之后进入目录就不用使用其他路径了,直接./就行。

    x 权限的目录,即使有 r,也无法 cd 进入或查看文件详情。

    chmod -x /backup  # 移除所有用户的执行权限,阻止他人进入,但可读文件名(如果有r权限)
    
  • 写权限(w):
    删除文件需目录的 w 权限,与文件自身权限无关!

    chmod o+w /shared  # 允许其他用户在此目录创建/删除文件
    

06. 权限掩码(umask)与默认权限

语法格式: umask [参数] [权限掩码]

  • umask值:决定新建文件/目录的默认权限。

    • 文件默认权限 = 666 - umask
    • 目录默认权限 = 777 - umask
  • 设置方法

    umask 027       # 临时生效(文件默认权限640,目录750)
    

07.粘滞位

​ 粘滞位是 Linux 文件权限中的一种特殊权限,主要用于 公共目录(如 /tmp/var/tmp),以确保用户只能删除或修改自己创建的文件,而不能删除其他用户的文件。即使目录权限是 777(所有用户可读、写、执行),粘滞位也能提供额外的安全保护。当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由:

  • 超级管理员删除
  • 该目录的所有者删除
  • 该文件的所有者删除

示例代码:

chmod +t /demo      # 使用符号表示法
chmod -t /demo     # 移除粘滞位
ls -ld /tmp
  • rwt 表示:
    • 所有者(root)有 rwx
    • 组用户有 rwx
    • 其他用户有 rwtt 表示粘滞位)。

在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值