Linux 文件umask默认权限_012
一、 umask介绍
Linux 系统用户创建一个新的目录或文件时,系统会默认会分配相应的权限。目录或文件的权限是如何产生的呢?
1、这就是umask的功能,umask设置了用户创建文件或目录的默认权限。Linux 系统umask设置的默认权限属于安全权限的临界点,如果高于这个临界点,文件的权限就太过危险,如果低于这个临界点,文件的权限太过苛刻,操作麻烦。
2、Linux系统root系统管理员用户默认umask值为0022,对应创建目录默认权限为755,对应创建文件默认权限为644.Linux系统其它用户默认uamsk值为0002, 对应创建目录默认权限为775, 对应创建文件默认权限为664.
root系统管理员用户创建文件和目录:
[oldgirl@oldboy ~]$ whoami
oldgirl
[root@oldboy ~]# umask
0022
[root@oldboy ~]# mkdir test
[root@oldboy ~]# ls -ld /test/
drwxr-xr-x 2 root root 4096 Dec 1 11:47 /test/
[root@oldboy ~]# touch /test/file.txt
[root@oldboy ~]# ls -l /test/file.txt
-rw-r--r-- 2 root root 0 Dec 5 09:47 /test/file.txt
test普通用户创建文件和目录:
[test@oldboy ~]$ whoami
test
[test@oldboy ~]$ umask
0002
[test@oldboy ~]$ mkdir hello
[test@oldboy ~]$ ls -ld hello/
drwxrwxr-x 2 test test 4096 Dec 5 10:03 hello/
[test@oldboy ~]$ touch testfile.txt
[test@oldboy ~]$ ls -l testfile.txt
-rw-rw-r-- 1 test test 0 Dec 5 10:03 testfile.txt
Linux 系统umask默认值存在于bashrc系统文件:
[test@oldboy ~]$ sed -n '65,69p' /etc/bashrc
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else
umask 022
fi
Linux 临时设置umask默认值:(umask默认是四位,第一位是文件特殊权限位,可以暂时忽略):
[test@oldboy ~]$ umask 033
[test@oldboy ~]$ umask
0033
二、umask值对应文件权限计算方法(以系统管理员root用户操作)
文件权限计算方法
文件的起始权限值 |
umask值 |
操作 |
计算后文件权限 |
举例 |
666 |
022 (每位如果都是偶数) |
相减 |
644 |
范例1 |
666 |
033 (每位如果有奇数或偶数) |
相减(奇数位相减后在其原奇数位加1) |
644 |
范例2 |
666 |
325(每位如果有奇数或偶数) |
相减(奇数位相减后在其原奇数位加1) |
442 |
范例3 |
目录权限计算方法
文件的起始权限值 |
umask值 |
操作 |
计算后文件权限 |
举例 |
777 |
022 |
相减 |
755 |
范例1 |
777 |
033 |
相减 |
744 |
范例2 |
777 |
325 |
相减 |
452 |
范例3 |
范例1:
[root@oldboy ~]# umask
0022
[root@oldboy ~]# mkdir /oldboy
[root@oldboy ~]# touch /oldboy/test.sh
[root@oldboy ~]# ls -ld /oldboy/
drwxr-xr-x 2 root root 4096 Dec 5 11:16 /oldboy/
[root@oldboy ~]# ls -l /oldboy/test.sh
-rw-r--r-- 1 root root 0 Dec 5 11:16 /oldboy/test.sh
[root@oldboy ~]# stat /oldboy/ | awk -F '[: ]+' 'NR==4 {print $2}'
(0755/drwxr-xr-x)
[root@oldboy ~]# stat /oldboy/test.sh | awk -F '[: ]+' 'NR==4 {print $2}'
(0644/-rw-r--r--)
范例2:
[root@oldboy ~]# umask 033
[root@oldboy ~]# umask
0033
[root@oldboy ~]# mkdir /oldboy
[root@oldboy ~]# touch /oldboy/test.sh
[root@oldboy ~]# ls -ld /oldboy/
drwxr--r-- 2 root root 4096 Dec 5 11:26 /oldboy/
[root@oldboy ~]# ls -l /oldboy/test.sh
-rw-r--r-- 1 root root 0 Dec 5 11:26 /oldboy/test.sh
[root@oldboy ~]# stat /oldboy/ | awk -F '[: ]+' 'NR==4 {print $2}'
(0744/drwxr--r--)
[root@oldboy ~]# stat /oldboy/test.sh | awk -F '[: ]+' 'NR==4 {print $2}'
(0644/-rw-r--r--)
范例3:
[root@oldboy ~]# umask 325
[root@oldboy ~]# umask
0325
[root@oldboy ~]# mkdir /oldboy
[root@oldboy ~]# touch /oldboy/test.sh
[root@oldboy ~]# ls -ld /oldboy/
dr--r-x-w- 2 root root 4096 Dec 5 11:34 /oldboy/
[root@oldboy ~]# ls -l /oldboy/test.sh
-r--r---w- 1 root root 0 Dec 5 11:34 /oldboy/test.sh
[root@oldboy ~]# stat /oldboy/ | awk -F '[: ]+' 'NR==4 {print $2}'
(0452/dr--r-x-w-)
[root@oldboy ~]# stat /oldboy/test.sh | awk -F '[: ]+' 'NR==4 {print $2}'
(0442/-r--r---w-)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架