Linux 命令 - umask: 显示或设置文件模式掩码值

umask 命令控制着创建文件时指定给文件的默认权限。它使用八进制表示法从文件模式属性中删除一个位掩码。

参见下面的例子:

[[email protected] cmdline]$ rm -f foo.txt
[[email protected] cmdline]$ umask
0002
[[email protected] cmdline]$ touch foo.txt
[[email protected] cmdline]$ ls -l foo.txt
-rw-rw-r-- 1 ucm ucm 0 Oct  3 17:32 foo.txt

首先,删除 foo.txt 文件存在的所有副本,以保证一切都是重新开始。下一步,允许不带任何参数的 umask 命令,查看当前掩码值,得到的值是 0002(0022 是另一个常用的默认值),它是掩码的八进制表示形式。接着创建文件 foo.txt 的一个新实例,查看该文件的权限。

可以发现,文件所有者和组都获得了读写权限,而其他所有用户则只读权限。其他所有用户没有写权限的原因在于掩码值。重复执行该实例,不过这次是自己设置掩码值。

[[email protected] cmdline]$ rm -f foo.txt
[[email protected] cmdline]$ umask 0000
[[email protected] cmdline]$ touch foo.txt
[[email protected] cmdline]$ ls -l foo.txt
-rw-rw-rw- 1 ucm ucm 0 Oct  3 17:38 foo.txt

在设置掩码为 0000(实际上是关闭该功能)时,可以看到其他所有用户也拥有写权限了。为了理解它是如何实现的,再来看看八进制数。如果把改掩码展开成二进制形式,然后再与属性进行对比,那么就能明白是怎么回事了。

 原始文件模式   ---    rw-    rw-    rw-  
 掩码 000    000     000     010
 结果  ---    rw-    rw-    r--

在设置掩码为 0000(实际上是关闭该功能)时,可以看到其他所有用户也拥有写权限了。为了理解它是如何实现的,再来看看八进制数。如果把改掩码展开成二进制形式,然后再与属性进行对比,那么就能明白是怎么回事了。

先忽略掉掩码中前面的 0,观察掩码中出现 1 的地方,将会发现 1 的位置对应的属性被删除——在这个例子中对应的是其他所有用户的写权限。这就是掩码的操作方式。掩码的二进制数值中每个出现 1 的位置,其对应的属性都被取消。如果设置掩码值为 0022 那么具体操作如下。

 原始文件模式   ---    rw-    rw-    rw-  
 掩码 000    000     010     010
 结果  ---    rw-    r--    r--

同样地,二进制数值中 1 出现的位置,其对应的属性都被取消。可以再试一下其他的掩码值(尝试一些带数字 7 的),以熟悉掩码的操作方式。记得每次操作完之后清理文件,并把掩码值还原成默认值。

[[email protected] cmdline]$ rm -f foo.txt; umask 0002

大多数情况下,并不需要修改掩码值,系统提供的默认掩码值就很好了。然而,在一些高安全级别的环境下,则需要控制掩码值。

命令格式

umask [-p] [-S] [mode]

命令参数

-p
  如果 mode 省略了,则以可复用的形式输出当前的掩码值。
-S
  以字符的形式显示当前的掩码值。

实例

a) 以字符的形式显示当前的掩码值。

[[email protected] cmdline]$ umask -S
u=rwx,g=rwx,o=rx
时间: 2024-10-17 03:43:47

Linux 命令 - umask: 显示或设置文件模式掩码值的相关文章

SSH Secure Shell Client连接Linux 命令行显示中文乱码问题 和oracle 查询数据中文乱码问题

一.SSH Secure Shell Client连接Linux 命令行显示中文乱码问题 linux 设置系统语言 修改 /etc/sysconfig/i18n 文件,如 LANG="en_US.UTF-8",xwindow会显示英文界面, LANG="zh_CN.GB18030",xwindow会显示中文界面. 还有一种方法 cp /etc/sysconfig/i18n $HOME/.i18n 修改 $HOME/.i18n 文件(vim  $HOME/.i18n)

Linux命令行批量替换多文件中的字符串【转】

Linux命令行批量替换多文件中的字符串[转自百度文库] 一种是Mahuinan法,一种是Sumly法,一种是30T法分别如下: 一.Mahuinan法: 用sed命令可以批量替换多个文件中的字符串.sed -i "s/原字符串/新字符串/g" `grep 原字符串 -rl 所在目录` 例如:我要把mahuinan替换为huinanma, 执行命令:sed -i "s/mahuinan/huinanma/g" 'grep mahuinan -rl /www' 这是目

【Linux命令】--(1)文件文件夹操作命令15条

文件文件夹操作命令++++++++++++++++++++++++++++++++++++++++ 列出进入显示文件夹     ls cd pwd  创建移动删除文件     mkdir rm rmdir mv cp touch 查看文件                      cat nl more less head tail ++++++++++++++++++++++++++++++++++++++++ =============ls============== ls [选项] [文件

Linux命令(七)查找文件或目录 find

find 命令可以根据给定的路劲和表达式查找指定的文件或目录.find 参数选项很多,并且支持正则表达式,功能强大. 和管道结合使用可以实现复杂的功能,是系统管理和普通用户必须掌握的命令. 一.find  命令格式说明 path find命令查找的目录路径. -print find命令将匹配到的文件输出到标准输出.  -exec find 命令对匹配的文件执行该参数所给出的Shell命令. -ok 和 -exec的作用相同,只是更安全,在执行每个命令之前,都会给出提示,让用户来确定是否执行. 二

Linux 命令 - w: 显示登录的用户及其当前执行的任务

命令格式 w - [husfV] [user] 命令参数 -h 不打印头部信息 -u 当列出当前进程和 CPU 时间时忽略用户名,这主要是用于执行su命令后的情况. -s 使用简短的格式化,不打印 [email protected].JCPU 和 PCPU 等信息 -f 切换显示 FROM 项信息 -V 显示版本信息 实例 a) 显示当前登录系统的用户信息 [email protected]:~$ w 23:06:04 up  1:15,  4 users,  load average: 0.0

Linux命令行上传本地文件到服务器 、 下载服务器文件到本地

sh使用命令: scp 将本地文件上传至服务器 第一个是本地文件的路径/文件名, 例如 ./index.tar.gz  . index.html . bg.png 等 第二个是要上传到的服务器的位置  例如  root@39.106.144.90:/var/www scp path/filename userName@sseverName:path 如果是要下载服务器的文件到本地 则调换两个位置就可以 scp userName@sseverName:path path/filename 如果操作

Linux显示检查设置文件中的语法是否正确

[email protected]:~$ apachectl [conflgtest] 程序"apachectl"尚未安装. 您可以使用以下命令安装: sudo apt-get install apache2 [email protected]:~$ sudo apt-get install apache2 [sudo] password for youhaidong: E: dpkg 被中断,您必须手工运行 sudo dpkg --configure -a 解决此问题. [email

linux 命令 —— umask

命令格式: umask nnn           (nnn代表数字000-777) 命令功能: umask权限补码,作用是设置默认目录或文件权限用的.默认值为022,此时你所建立的目录的默认权限是755(7-0,7-2,7-2),建立的文件默认权限是644(6-0,6-2,6-2) 常用范例: 例1:umask   ##查询当前umask权限数值 例2:umask 002 ##修改umask权限数值为002,修改后创建的目录和文件默认权限为775和664 若要长期修改umask的值,可以把它写

Linux 命令 - route: 显示或操作路由表

route 命令查看路由表或者手动地添加.删除和修改路由表中的条目. 命令格式 route [-CFvnNee] [-A family] route [-v] [-A family] add [-net|-host] target [netmask Nm] [gw Gw] [metric N] [mss M] [window W] [irtt I] [reject] [mod] [dyn] [reinstate] [[dev] If] route [-v] [-A family] del [-n