Featured image of post Linux基础(六):系统权限管理进阶

Linux基础(六):系统权限管理进阶

文件权限 umask su sudo

文件权限(⭐)

基本权限

文件权限的种类:

  • r:可读=》4
  • w:可写=》2
  • x:可执行=》1

权限的归属:

  • 属主:u
  • 属组:g
  • 其他人:o

谁来用文件的权限—》进程

进程来用文件的时候,如何匹配权限的呢?

  • 进程启动(必须赋予某种身份) 进程启动时的身份是怎么来的? (1)默认为当前登录用户 (2)在配置文件里修改指定进程启动的身份
  • 拿着进程的用户身份,去匹配目标文件的权限 进程的用户身份会依次配文件的 u—> 9 段权限的前三段 g—> 9 段权限的中三段 o—> 9 段权限的后三段

特殊权限

suid

给命令文件加的权限 chmod u+s /usr/bin/passwd

效果: passwd # —-》/etc/shadow

加了suid权限的命令在启动时的用户身份会用自己的命令文件的属主身份

  • SUID 权限仅对二进制可执行文件有效
  • 如果执行者对于该二进制可执行文件具有 x 的权限,执行者将具有该文件的所有者的权限
  • 本权限仅在执行该二进制可执行文件的过程中有效

sgid

  • 当SGID 作用于普通文件时,和 SUID 类似,在执行该文件时,用户将获得该文件所属组的权限。

  • 当 SGID 作用于目录时,意义就非常重大了: 当一个用户对某一目录有写和执行权限时,该用户就可以在该目录下建立文件

    如果该目录同时用 SGID 修饰,则该用户在这个目录下建立的文件都是属于这个目录所属的组。

可以给文件夹加 chmod g+s /aaa # 后续在/aaa 文件夹下创建的文件、文件夹的属组都会继承自/aaa 文件夹的属组

sticky / sbit

SBIT 目前只对目录有效,用来阻止非文件的所有者删除文件。 权限信息中最后一位 t 表明该目录被设置了 SBIT 权限。SBIT 对目录的作用是:当用户在该目录下创建新文件或目录时,仅有自己和 root 才有权力删除,主要作用于一个共享的文件夹。

chmod o+t /share 在/share 文件下的文件只能被 root 用户及属主自己操作

特殊权限的数字代号 suid—-》4 sgid—-》2 sticky—-》1

1
2
3
chmod 0755 a.txt
chmod 7755 a.txt
chmod 4755 a.txt

umask 值

umask值可以控制创建文件、文件夹时的默认权限 在 root 用户下默认创建 文件的权限:644 文件夹的权限:755

为何默认是上述权限: 系统默认权限 文件的权限–》666 文件夹的权限–》777

文件及文件夹的默认创建权限是:系统默认权限+umask值计算出来一个结果

linux中文件默认权限为666、目录权限默认为777,在umask的影响下

文件权限计算方法 :偶数位直接相减,奇数位相减后加1

文件的起始权限值 umask值 操作 计算后文件权限
666 022 (每位如果都是偶数) 直接相减即可 644
666 033 (每位如果有奇数或偶数) 相减(奇数位相减后在其原奇数位加1) 644
666 325(每位如果有奇数或偶数) 相减(奇数位相减后在其原奇数位加1) 442

目录权限计算方法 :直接相减即可

文件的起始权限值 umask值 操作 计算后文件权限
777 022 相减 755
777 033 相减 744
777 325 相减 452
umask设置的越小,权限越大,慎用
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 临时设置umask
[root@localhost ~]# umask 000       //设置umask权限

# 永久设置umask

[root@localhost tmp]# vim /etc/profile  # 或者/etc/bashrc内容一样
......
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
   umask 002    //表示uid大于等于199的默认umask值,表示普通用户
else
   umask 022    //表示uid小于199的默认umask值,表示root
fi

SU 切换用户(⭐)

按照进入shell环境方式的不同,分为两种:

  • 登录shell:登录账号密码,su - egon
  • 非登录shell:在shell环境中直接输入命令进入的shell环境,su egon

二者的区别的就是加载的配置文件不同:

登录shell:

  • ​ /etc/profile
  • ​ /etc/profile.d/脚本
  • ​ ———》centos9.3会多执行1次/etc/bashrc
  • ​ ~/.bash_profile
  • ​ ~/.bashrc
  • ​ /etc/bashrc

非登录shell: ~/.bashrc

  • ​ /etc/bashrc
  • ​ /etc/profile.d/脚本 ​ PATH=$PATH:/usr/local/nginx/sbin export PATH ​ 切换用户过程中加载的配置文件

sudo(⭐)

让普通用户只用自己的账号密码进行认证,操作时可以临时获取管理的某种权限

修改sudo配置文件的两种方式

  • visudo # 专门编辑文件/etc/sudoers visudo -c # 检查文件语法
  • vi /etc/sudoers
使用 Hugo 构建
主题 StackJimmy 设计