介绍

umask(user's mask)用来设置文件权限掩码权限掩码是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。

UNIX最初实现时不包含umask命令。1978年左右,在UNIX第七版中引入,用于解决权限掩码问题。

对于文件来说,这一数字的最 大值分别是6。  (因为系统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用chmod命令增加这一权限。)

对于目录来说,umask中各个数字最大可以到7。(因为目录允许设置执行权限)

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

umaks 022;

新建文件夹是777-022=755(rwxr-xr-x),新建文件是666-022=644(rw-r--r--)

使用场景

系统 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

摘录:http://t.zoukankan.com/daodaotest-p-12445989.html

liunx知识点--umask的更多相关文章

  1. linux知识点系列之 umask

    介绍 umask(user's mask)用来设置文件权限掩码.权限掩码是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限. UNIX最初实现时不包含umask命 ...

  2. liunx基础知识点1:系统管理相关命令、目录操作命令、文本编辑、关闭防火墙、重启和关闭

    Linux(一) liunx系统那么重要,作为一个测试人员,不掌握你就损失了好几千,为了这个钱,也为了面子,什么鬼?我爱膨胀.你看看这些知识喽.我整理的,可费工夫了. 下次给大家一个面试题啊,更直观

  3. liunx基础知识点2:文件操作命令、系统资源查询、权限赋予命令、安装命令、解压命令

  4. Liunx+C编程一站式学习

    Liunx+C编程一站式学习这本书有什么特点?面向什么样的读者?这本书最初是为某培训班的嵌入式系统Linux工程师就业班课程量身定做的教材之一.该课程是为期四个月的全日制职业培训,要求学员毕业时具备非 ...

  5. Liunx 环境下vsftpd的三种实现方法(超详细参数)

    以下文章介绍Liunx 环境下vsftpd的三种实现方法 ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.0.3.tar.gz,目前已经到2.0.3版本.假 ...

  6. 鸟哥Linux私房菜知识点总结6到7章

    近期翻看了一本<鸟哥的Linux私房菜>.这是一本基础的书,万丈高楼平地起.会的不多但能够学.这是我整理的一些知识点.尽管非常基础.希望和大家共同交流. 第6章主机规划与磁盘分区 1.在进 ...

  7. Liunx中fstab文件详解

    Liunx中fstab文件详解 /etc/fstab是用来存放文件系统的静态信息的文件.位于/etc/目录下,可以用命令less /etc/fstab 来查看,如果要修改的话,则用命令 vi /etc ...

  8. Liunx软Raid实现

    Liunx软Raid实现 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在配置软Raid之前,我们首先要了解一下什么是Raid,Raid又分哪几个系列?哪个又是最靠谱的组合?我们生 ...

  9. linux django 知识点 安装mysql数据库 和 pycharm

     django 命令及相关知识点 1. 启动 pycharm 命令:sh pycharm.sh 2. 创建 django 项目 : django-admin.py startproject Hello ...

  10. Liunx学习笔记(三) 文件权限

    一.文件权限 1.查看文件权限 (1)文件权限 在 Linux 中对于文件有四种访问权限,列举如下: 可读取:r,Readable 可写入:w,Writable 可执行:x,Execute 无权限:- ...

随机推荐

  1. Apple、AWS 这些科技巨头,已悄然入局隐私计算

    随着数字化时代的到来,数据已经成为企业竞争的重要资源.然而,与此同时,数据隐私泄露的风险也在不断增加,这已经成为了公共安全和个人权利保护的重要问题.为了解决这个问题,科技巨头谷歌.苹果.亚马逊纷纷入局 ...

  2. PostgreSQL 12 文档: PostgreSQL 服务端程序

    PostgreSQL 服务器应用   这一部分包含PostgreSQL服务器应用和支持工具的参考信息.这些命令只在数据库服务器所在的主机上运行才有用.其他工具程序在PostgreSQL 客户端应用中列 ...

  3. Vue-CoreVideoPlayer 视频播放器组件

    安装 cnpm install -S vue-core-video-player 快速使用 # 在main.js中 import VueCoreVideoPlayer from 'vue-core-v ...

  4. 利用身份验证和授权机制,例如OAuth、JWT 和 API 密钥,APIaaS 如何帮助解决安全挑战?

    什么是 APIaaS? APIaaS,即 API 即服务(API as a Service)是一种创新的基于云的方法,提供 API(应用程序编程接口),使第三方服务提供商能够访问特定服务.数据或资源. ...

  5. IoTOS v1.0.0 开源 高效 实用 | 免费商用

    IoTOS v1.0.0 一款高效实用 IoTCard 管理 & 运营系统. IoTOS 目前取名范围过大,其主要用于IoTCard 管理业务以高效.健壮.灵活设计 SaaS.多语言.机器人推 ...

  6. Windows10 下 Neo4j1.5.8 安装教程

    前言 Neo4j 是一个高性能的.NOSQL 图形数据库,它将结构化数据存储在网络上而不是表中.基于磁盘的.具备完全的事务特性的 Java 持久化引擎,这里就不把他和常用关系型数据库做对比了.因为篇幅 ...

  7. Java生成图片(简版)

    1.图片模板示例 2.Java代码(简版) public static void main(String[] args) throws FileNotFoundException, IOExcepti ...

  8. 反射(Java Reflection)

    Java反射机制概述 Reflection(反射)是Java被视为动态语言的关键,反射机制允许程序在执行期借助于ReflectionAPI取得任何类的内部信息,并能直接操作任意对象的内部属性及方法. ...

  9. Anaconda 使用时,conda activate 失败

    今天使用一台电脑上新安装的 anaconda 时,运行 conda activate, 出现如下报错: 错误提示中,说要把 . C:\ProgramData\Anaconda3\etc\profile ...

  10. VS Code 有哪些好用的插件呢?【持续更新】

    一.画图工具:vscode-drawio   功能:在 VSCode 中画流程图.数据流图等等.        使用方法:     创建一个后缀名为 .drawio 的文件,然后用 VSCode 打开 ...