Linux命令之 umask命令

显示/修改默认的文件权限


命令语法

umask [-p] [-S] [模式]
info:如果使用命令时省略了模式选项,则显示当前默认权限码

附加参数

参数说明
-p如果省略 MODE 模式,以可重用为输入的格式输入
-S以符号形式输出,否则以八进制数格式输出

常用范例

显示当前默认权限

umask

显示当前权限显示当前权限

info:解释下0022这个权限如何来的:

第一个0是特殊权限,这里不做讨论;传送门

后面的022是用户能拥有的最大权限777减去当前用户拥有的权限(八进制)得到的数。

比如,你默认权限是755(u=rwx,g=rx,o=rx)用最大权限777减去拥有的权限就得到了022这个数。再加上特殊权限的0,就是现在的0022了。

warning:注意:umask命令只能修改文件的权限,第一位的特殊权限无法更改。

显示当前默认权限(以符号形式输出)

umask -S

以符号形式显示权限以符号形式显示权限


修改默认权限为777

umask 000

默认权限修改为777默认权限修改为777

warning:权限的修改只在当前环境临时生效。可以看到上图中新开的终端的权限并没有被修改。

Linxu附加权限

本部分摘抄 @bluemonkey 《LINUX的权限(摘抄自用)》

  • Linxu附加权限


SET位权限(suid,sgid)

suid/sgid是为了使“没有取得特权用户要完成一项必须要有特权才可以执行的任务”而产生的。

一般用于给可执行的程序或脚本文件进行设置,其中SUID表示对属主用户增加SET位权限,SGID表示对属组内用户增加SET位权限。

执行文件被设置了SUIDSGID权限后,任何用户执行该文件时,将获得该文件属主、属组账号对应的身份。

在许多环境中,suidsgid很管用,但是不恰当地使用这些位可能使系统的安全遭到破坏。

所以应该尽量避免使用SET位权限程序。(passwd 命令是为数不多的必须使用suid的命令之一)。

  • suid(set User ID,set UID)的意思是进程执行一个文件时通常保持进程拥有者的UID。然而,如果设置了可执行文件的suid位,进程就获得了该文件拥有者的UID。
  • sgid(set Group ID,set GID)的意思也是一样,只是把上面的进程拥有者改成进程组就好了。

SET位权限表示形式(10位权限)

如果一个文件被设置了suidsgid,会分别表现在所有者或同组用户的权限的可执行位上;如果文件设置了suid还设置了x(执行)位,则相应的执行位表示为s(小写)。但是,如果没有设置x位,它将表示为S(大写)。

权限说明
-rwsr-xr-x表示设置了suid,且拥有者有可执行权限
-rwSr--r--表示suid被设置,但拥有者没有可执行权限
-rwxr-sr-x表示sgid被设置,且群组用户有可执行权限
-rw-r-Sr--表示sgid被设置,但群组用户没有可执行权限

设置方式

SET位权限可以通过chmod命令设置,给文件加suidsgid的命令如下(类似于上面chmod赋予一般权限的命令)

#设置suid位
chmod u+s filename

#去掉suid设置
chmod u-s filename

#设置sgid位
chmod g+s filename

#去掉sgid设置
chmod g-s filename

粘滞位权限(sticky)

粘滞位权限表示形式(10位权限)

一个文件或目录被设置了粘滞位权限,会表现在其他组用户的权限的可执行位上。如果文件设置了sticky还设置了x(执行)位,其他组用户的权限的可执行位为t(小写)。但是,如果没有设置x位,它将表示为T(大写)。

如:

权限说明
-rwsr-xr-t表示设置了粘滞位且其他用户组有可执行权限
-rwSr--r-T表示设置了粘滞位但其他用户组没有可执行权限

设置方式

sticky权限同样可以通过chmod命令设置

chmod +t <文件列表..>
  • suid 的八进制数字是4
  • sgid 的八进制数字代表数字是 2
  • sticky 位八进制数字代表数字是1

添加新评论

* 已开启反垃圾保护,《隐私政策》