linux知识点系列之 umask
介绍
umask(user's mask)用来设置文件权限掩码。权限掩码是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。
UNIX最初实现时不包含umask命令。1978年左右,在UNIX第七版中引入,用于解决权限掩码问题。
Shell 命令
在 Shell 中,使用 umask命令来设置权限掩码。
umask [-S] [maskExpression] # 中括号内的参数是可选的。
参数说明:
- -S 以符号的形式来表示权限掩码。
显示当前掩码
$ umask # 以数字形式显示掩码(八进制)
022
$ umask -S # 以符号形式显示掩码
u=rwx,g=rx,o=rx
使用数字设置掩码
$ umask 007 # 设置权限掩码为 007
$ umask # 以数字形式显示掩码(八进制)
0007 # 0 - 特殊权限 (setuid | setgid | sticky )
# 0 - (u)用户权限掩码
# 0 - (g)组权限掩码
# 7 - (o)其他用户权限掩码
$ umask -S # 以符号形式显示掩码
u=rwx,g=rwx,o=
八进制掩码表
| 八进制掩码 | 创建时的掩码权限 | 文件权限 | 目录权限 |
|---|---|---|---|
| 0 | 可以设置任何权限(读、写、执行) | 6 | 7 |
| 1 | 禁止设置执行权限(读、写) | 6 | 6 |
| 2 | 禁止设置写权限(读、执行) | 4 | 5 |
| 3 | 禁止设置执行和写权限(只读) | 4 | 4 |
| 4 | 禁止设置读权限(写、执行) | 2 | 3 |
| 5 | 禁止设置读和执行权限(写) | 2 | 2 |
| 6 | 禁止设置读和写权限(执行) | 0 | 1 |
| 7 | 禁止设置所有权限(无权限) | 0 | 0 |
使用符号设置掩码
当umask使用符号设置掩码时,它将使用以下语法进行修改:
[用户标识] 操作符 权限符号
用户标识表
| 用户缩写符号 | 用户类 | 描述 |
|---|---|---|
| u | user | 所有者 |
| g | group | 所属组下的所有用户 |
| o | others | 不是所有者且不包含在所属组下的其他用户 |
| a | all | 以上三个的所有用户,与ugo一样 |
操作符表
| 操作符 | 作用 |
|---|---|
| + | 指定的权限启用,未指定的权限不变 |
| - | 指定的权限被禁止启用,未指定的权限不变 |
| = | 指定的权限启用,未指定的权限被禁止 |
权限符号表
| 权限缩写符号 | 名称 | 描述 |
|---|---|---|
| r | read | 读取文件或列出目录的内容 |
| w | write | 写入文件或目录 |
| x | execute | 执行文件或递归目录树 |
| X | special execute | 参加链接权限相关知识 |
| s | setuid/gid | 参见文件权限相关知识 |
| t | sticky | 参见文件权限相关知识 |
示例:
umask u-w # 禁止为用户设置写权限,同时保持其余标志不变。
umask u-w,g=r,o+r # u-w 禁止为用户设置写权限,同时保持其余标志不变;
# g=r 允许对组启用读权限,同时禁止对组的写入和执行权限;
# o+r 允许对其他人启用读权限,同时保持其他标志不变。
常用 umask
常用的umask及所对应的目录和文件权限。
| umask | 文件权限 | 目录权限 |
|---|---|---|
| 022 | 644 | 755 |
| 027 | 640 | 750 |
| 002 | 664 | 775 |
| 006 | 660 | 771 |
| 007 | 660 | 770 |
使用场景
系统 umask
在系统变量文件(/etc/profile)中设置。
# 查看默认 umask
$ grep -C 1 umask /etc/profile
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else
umask 022
fi
# 设置系统 umask,在 /etc/profile 末尾添加 umask 022即可
$ echo "umask 022" >> /etc/profile
# 实时生效环境变量
$ source /etc/profile
用户 umask
在用户变量文件(~/.bash_profile)中设置。
# 设置系统 umask,在 /etc/profile 末尾添加 umask 022即可
$ echo "umask 022" >> ~/.bash_profile
# 实时生效环境变量
$ source ~/.bash_profile
vsftpd中的umask使用
vsftpd中的umask参数:
- local_umask:本地用户的 umask
- anon_umask:虚拟用户的 umask
# 查看默认 umask
$ grep -C 1 umask /etc/vsftpd/vsftpd.conf
local_umask=027
# 设置 umask 为 0022
$ sed -i 's/local_umask=027/local_umask=022/g' /etc/vsftpd/vsftpd.conf
# 重启 vsftpd 生效
$ systemctl restart vsftpd
中间件 umask
以 tomcat 为例,说明设置中间件 umask,其他中间件类似。
# 查看默认 umask
$ grep -C 1 umask bin/catalina.sh
if [ -z "$UMASK" ]; then
UMASK="0027"
fi
umask $UMASK
# 设置 umask 为 0022
$ sed -i 's/UMASK="0027"/UMASK="0022"/g' bin/catalina.sh
参考资料
linux知识点系列之 umask的更多相关文章
- c/c++ linux epoll系列1 创建epoll
linux epoll系列1 创建epoll 据说select和poll的弱点是,随着连接(socket)的增加,性能会直线下降. epoll不会随着连接(socket)的增加,性能直线下降. 知识点 ...
- Linux Shell系列教程之(十七) Shell文件包含
本文是Linux Shell系列教程的第(十七)篇,更多Linux Shell教程请看:Linux Shell系列教程 通过文件包含,可以引用其他文件的内容,也可以将复杂内容分开,使程序结构更加清晰. ...
- Linux Shell系列教程之(十六) Shell输入输出重定向
本文是Linux Shell系列教程的第(十六)篇,更多Linux Shell教程请看:Linux Shell系列教程 Shell中的输出和输入的重定向是在使用中经常用到的一个功能,非常实用,今天就为 ...
- Linux Shell系列教程之(十五) Shell函数简介
本文是Linux Shell系列教程的第(十五)篇,更多Linux Shell教程请看:Linux Shell系列教程 函数可以将一个复杂功能划分成若干模块,从而使程序结构更加清晰,代码重复利用率更高 ...
- Linux Shell系列教程之(十四) Shell Select教程
本文是Linux Shell系列教程的第(十四)篇,更多Linux Shell教程请看:Linux Shell系列教程 在上一篇文章:Linux Shell系列教程之(十三)Shell分支语句case ...
- Linux Shell系列教程之(十三)Shell分支语句case … esac教程
本文是Linux Shell系列教程的第(十三)篇,更多Linux Shell教程请看:Linux Shell系列教程 分支语句非常实用,基本上高级语言都支持分支语句(python 没有),大多数都使 ...
- Linux Shell系列教程之(十二)Shell until循环
本文是Linux Shell系列教程的第(十二)篇,更多Linux Shell教程请看:Linux Shell系列教程 在上两篇文章Linux Shell系列教程之(十)Shell for循环和Lin ...
- [iOS]C语言知识点系列视频
C语言知识点系列视频 目录 C语言技术视频-01-变量的定义 C语言技术视频-02-程序分支结构(if...else) C语言技术视频-03-程序分支结构(switch) C语言技术视频-04-程序循 ...
- c/c++ linux epoll系列3 利用epoll_wait设置timeout时间长度
linux epoll系列3 利用epoll_wait设置timeout时间长度 epoll_wait函数的第四个参数可以设置,epoll_wait函数的等待时间(timeout时间长度). 例子1, ...
随机推荐
- python3正则提取字符串里的中文
# -*- coding: utf-8 -*- import re #过滤掉除了中文以外的字符 str = "hello,world!!%[545]你好234世界..." str ...
- 【2019南昌网络赛】B-Fire-Fighting Hero
题目链接 分析 英雄方面很简单,跑一遍 Dijkstra 就行了,但是灭火团队就有点麻烦了. 这里可以借助一下最大流的建边来解决这个问题: 我们可以另外找一个点作为起点,然后建立从那个点到每一个团队的 ...
- 凸包问题 Graham Scan
2020-01-09 15:14:21 凸包问题是计算几何的核心问题,并且凸包问题的研究已经持续了好多年,这中间涌现出了一大批优秀的算法. 凸包问题的最优解法是Graham Scan算法,该算法可以保 ...
- Android之MVC、MVP、MVVM
本文将详细阐述以下MVC.MVP.MVVM三种理念的定义 MVC MVC全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个 基本部分:模型(Model ...
- win 7 系统过期处理办法
超级尴尬,刚装的win7 系统居然过期了.下次再也不装盗版了,吼吼吼 处理方法就是下载oem7F7 软件安装,不用再怎么操作就好了. 就是这么简单,并不用像网上那样找什么激活码.
- OpenCV-Python 改变颜色空间 | 十三
目标 在本教程中,你将学习如何将图像从一个色彩空间转换到另一个,像BGR↔灰色,BGR↔HSV等 除此之外,我们还将创建一个应用程序,以提取视频中的彩色对象 你将学习以下功能:cv.cvtColor, ...
- Spring-Cloud-Alibaba Nacos 启动失败,窗口一闪而过
下载及启动 Nacos 下载地址:https://github.com/alibaba/nacos/releases 在Windows下,进入bin目录,双击 startup.cmd 即可运行 启动出 ...
- Hadoop入门之hdfs
大数据技术开篇之Hadoop入门[hdfs] 学习都是从了解到熟悉的过程,而学习一项新的技术的时候都是从这个技术是什么?可以干什么?怎么用?如何优化?这几点开始.今天这篇文章分为两个部分.一. ...
- 解决POST乱码
在web.xml中添加字符过滤器 问题即可解决 <!--如何整合过滤器处理中文乱码问题?--> <filter> <filter-name>EncodingFilt ...
- 1063 Set Similarity (25分)
Given two sets of integers, the similarity of the sets is defined to be /, where Nc is the number ...