liunx知识点--umask
介绍
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的更多相关文章
- linux知识点系列之 umask
介绍 umask(user's mask)用来设置文件权限掩码.权限掩码是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限. UNIX最初实现时不包含umask命 ...
- liunx基础知识点1:系统管理相关命令、目录操作命令、文本编辑、关闭防火墙、重启和关闭
Linux(一) liunx系统那么重要,作为一个测试人员,不掌握你就损失了好几千,为了这个钱,也为了面子,什么鬼?我爱膨胀.你看看这些知识喽.我整理的,可费工夫了. 下次给大家一个面试题啊,更直观
- liunx基础知识点2:文件操作命令、系统资源查询、权限赋予命令、安装命令、解压命令
- Liunx+C编程一站式学习
Liunx+C编程一站式学习这本书有什么特点?面向什么样的读者?这本书最初是为某培训班的嵌入式系统Linux工程师就业班课程量身定做的教材之一.该课程是为期四个月的全日制职业培训,要求学员毕业时具备非 ...
- Liunx 环境下vsftpd的三种实现方法(超详细参数)
以下文章介绍Liunx 环境下vsftpd的三种实现方法 ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.0.3.tar.gz,目前已经到2.0.3版本.假 ...
- 鸟哥Linux私房菜知识点总结6到7章
近期翻看了一本<鸟哥的Linux私房菜>.这是一本基础的书,万丈高楼平地起.会的不多但能够学.这是我整理的一些知识点.尽管非常基础.希望和大家共同交流. 第6章主机规划与磁盘分区 1.在进 ...
- Liunx中fstab文件详解
Liunx中fstab文件详解 /etc/fstab是用来存放文件系统的静态信息的文件.位于/etc/目录下,可以用命令less /etc/fstab 来查看,如果要修改的话,则用命令 vi /etc ...
- Liunx软Raid实现
Liunx软Raid实现 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在配置软Raid之前,我们首先要了解一下什么是Raid,Raid又分哪几个系列?哪个又是最靠谱的组合?我们生 ...
- linux django 知识点 安装mysql数据库 和 pycharm
django 命令及相关知识点 1. 启动 pycharm 命令:sh pycharm.sh 2. 创建 django 项目 : django-admin.py startproject Hello ...
- Liunx学习笔记(三) 文件权限
一.文件权限 1.查看文件权限 (1)文件权限 在 Linux 中对于文件有四种访问权限,列举如下: 可读取:r,Readable 可写入:w,Writable 可执行:x,Execute 无权限:- ...
随机推荐
- 【python基础】文件-初识文件
文本文件可存储的数据量是非常多的.每当需要分析或修改存储在文件中的信息时,首先就是读取文件到内存中,为此可以一次性读取文件的全部内容,也可以以每次一行的方式逐步读取. 1.读取文件 1.1读取整个文件 ...
- 精讲Mybatis··#{}和${}
题目 笔记Notes 面试题目:#{}和${}的区别是什么? 网上的答案是:#{}是预编译处理,${}是字符串替换.mybatis在处理#{}时, 会将sql中的#{}替换为?号,调用Prepared ...
- Java扩展Nginx之二:编译nginx-clojure源码
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 为什么要编译nginx-clojure源码 作为< ...
- langchain:Prompt在手,天下我有
目录 简介 好的prompt 什么是prompt template 在langchain中创建prompt template Chat特有的prompt template 总结 简介 prompts是 ...
- 基于 Spark 的物流企业数据仓库 的设计与实现
1.设计和实现了一种基于 Spark 的分布式 ETL 系统,包括利用 Spark 抽取.转换清洗和加载数据的具体过程. 2.设计和实现了基于 Spark 的物流企业数据仓库,包括物流企业数据仓库的分 ...
- Javascript执行原理 网页引入javascript的三种方式* javascript核心语法 数据类型 Typeof运算符
Javascript执行原理: 用户端发送请求到服务器端 将js解析出来的数据(用户身份表示)绑定在请求路径中 服务器端获取到参数后会响应客户端 客户端通过浏览器解析响应的数据并将数据展现在浏览器上 ...
- dimp V8:[WARNING]login fail, check your username and password, and check the server status
在进行某个项目的性能测试时,我们选择了达梦8作为使用的数据库.因前期的网络安全问题和考虑到节省成本,我们首先在公司本地服务器上搭建了相应的环境,并生成了用于压力测试的业务数据. 然而,在将数据库迁移到 ...
- jmeter:内存溢出解决办法
使用jmeter执行性能测试,报错:java.lang.OutOfMemoryError: Java heap space 需要对jmeter的jvm进行调优.记录如下: 1. 问题记录及分析: 使用 ...
- 让C#调用vue组件里的方法
前言:web页面开发时采用的是vue开发的,后台语言是C# 需求:后台需要通过浏览器调用vue组件的方法 c# 可以调用xxx.html 中的script引用的js中定义的方法是可以调用的, 之前c# ...
- C#程序随系统启动例子 - 开源研究系列文章
今天讲讲C#中应用程序随系统启动的例子. 我们知道,应用程序随系统启动,都是直接在操作系统注册表中写入程序的启动参数,这样操作系统在启动的时候就根据启动参数来启动应用程序,而我们要做的就是将程序启动参 ...