【Linux】Linux权限管理详解

一、Linux权限基本概念

1.1、名称解释:

Linux 权限管理是保障系统安全的核心机制,其核心目标是控制不同用户(非root)对文件 / 目录的操作权限。

1.2、Linux权限主体:用户与组

Linux 是多用户系统,权限针对三类主体划分:

  • 所有者(User):文件 / 目录的创建者(默认),对资源有最高控制权。
  • 所属组(Group):文件 / 目录归属的用户组,组内用户共享部分权限。
  • 其他用户(Others):既非所有者,也不属于所属组的用户。

1.3、权限的类型:读、写、执行:

权限通过三种基础操作定义,对文件目录的含义不同:

权限符号数字表示对文件的含义对目录的含义
r4查看文件内容(如 cat列出目录内文件(如 ls
w2修改文件内容(如 vim创建 / 删除 / 重命名目录内文件
x1执行文件(如脚本、程序)进入目录(如 cd

注意:

a、要对一个文件执行任何操作(读、写、执行等),必须先通过其所在目录的权限 “打通路径”,否则即使文件本身有权限也无法操作。

b、对文件的 “管理操作”(如创建新文件、删除已有文件、重命名文件)不依赖文件本身的权限,而是由其父目录的权限决定:

1.4、权限的表示方法

权限通过 10 位字符 或 3 位数字 表示,以 ls -l 输出为例:

(1)符号表示(10 位字符串)

例如:-rwxr-xr--

  • 第 1 位:文件类型(- 普通文件,d 目录,l 软链接等)。
  • 第 2-4 位:所有者权限(rwx:读、写、执行)。
  • 第 5-7 位:所属组权限(r-x:读、执行,无写权限)。
  • 第 8-10 位:其他用户权限(r--:只读,无写 / 执行权限)。

(2)数字表示(3 位数字)

每类主体的权限用数字累加表示(r=4,w=2,x=1),例如:

  • 所有者 rwx → 4+2+1=7
  • 所属组 r-x → 4+0+1=5
  • 其他用户 r-- → 4+0+0=4
  • 整体权限表示为 754

二、权限管理指令

2.1、查看权限

用 ls -l [文件/目录] 命令

示例:

ls -l test.txt  # 查看test.txt的权限

2.2、修改权限(chmod 命令)

2.2.1、符号模式:

通过 u(所有者)、g(所属组)、o(其他)、a(所有)指定主体,结合 +(加权限)、-(减权限)、=(设权限)修改。

示例:

chmod u+x test.txt  # 给所有者加执行权限
chmod g-w test.txt  # 给所属组减写权限
chmod o=r test.txt  # 给其他用户设为只读
chmod a+r test.txt  # 所有用户加读权限

2.2.2、数字模式

 直接用 3 位数字设置权限。

示例:

chmod 754 test.txt  # 所有者rwx,组r-x,其他r--

2.3、修改所有者 / 所属组(chown/chgrp)

2.3.1、chown:修改所有者(或同时修改组)。

示例:

chown alice test.txt       # 把test.txt所有者改为alice
chown alice:dev test.txt   # 所有者改为alice,所属组改为dev

2.3.2、chgrp:修改所属组。

示例:

chgrp dev test.txt  # 把test.txt所属组改为dev

2.4、umask命令

2.4.1、umask作用

Linux 中,新创建的文件和目录有固定的 “最大默认权限”,umask的作用是 “屏蔽”(减去)其中的部分权限,最终得到实际默认权限:

  • 文件的最大默认权限666(即 -rw-rw-rw-,文件默认不包含执行权限x,避免安全风险)。
  • 目录的最大默认权限777(即 drwxrwxrwx,目录必须有x权限才能进入)。

2.4.2、umask 的表示方式

umask的值通常用4 位八进制数字表示(一般显示后 3 位),每一位对应 “特殊权限(SUID/SGID/Sticky)” 和 “所有者、所属组、其他用户” 的权限掩码,格式为:
u_mask g_mask o_mask(分别对应所有者、所属组、其他用户)。

例如:umask 022 表示:

  • 所有者:0(不屏蔽任何权限)
  • 所属组:2(屏蔽写权限w
  • 其他用户:2(屏蔽写权限w

2.4.3、常用操作示例

(1)查看当前 umask 值

直接执行umask命令:

umask  # 输出示例:0022(前导0表示八进制,实际有效位是后三位022)
(2)计算实际默认权限

umask 022为例:

  • 文件权限666 - 022 = 644(即 -rw-r--r--
  • 目录权限777 - 022 = 755(即 drwxr-xr-x

另一个例子umask 002(常见于协作场景):

  • 文件:666 - 002 = 664-rw-rw-r--,同组用户可写)
  • 目录:777 - 002 = 775drwxrwxr-x,同组用户可创建文件)
(3)临时修改 umask

直接在终端执行umask [值],仅对当前终端会话有效:

umask 077  # 设置新的掩码,此时:
           # 文件默认权限:666-077=600(-rw-------,仅所有者可读写)
           # 目录默认权限:777-077=700(drwx------,仅所有者可访问)

(4)永久修改 umask

若要让 umask 设置在每次登录时生效,需修改 shell 配置文件:

  • 对当前用户生效:编辑~/.bashrc(bashshell)或~/.zshrc(zsh),添加一行:
    umask 022  # 按需求设置值
    
  • 对所有用户生效:编辑/etc/profile/etc/bashrc(需 root 权限),添加同上内容。

修改后执行source ~/.bashrc(或重启终端)使配置生效。

2.5、指定用户的所属组

2.5.1、在创建用户时指定所属组

使用 useradd -g 组名 用户名 命令

示例:

useradd -g person zhangsan #创建zhangsan时加入指定的person组

注:不指定组名,系统默认会自动创建与用户名同名的组。

2.5.2、直接使用usermod修改

命令格式:usermod -g 组名 用户名

示例:

usermod -g china zhangsan #将zhangsan的所属组修改为china

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小王不想wan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值