文件权限(⭐)
基本权限
文件权限的种类:
- 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
|
|
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设置的越小,权限越大,慎用 |
|
|
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