1.用户权限:
基本上, umask 就是指定 “目前使用者在创建文件或目录时候的权限默认值
umask 的分数指的是“该默认值需要减掉的权限!
一般文件的创建则不应该有执行的权限,因为一般文件通常是用在于数据的记录 嘛!当然不需要执行的权限了。 因此,默认的情况如下:
若使用者创建为“文件”则默认“没有可执行( x )权限”,亦即只有 rw 这两个项目,也就
是最大为 666 分,默认权限如下: -rw-rw-rw-
若使用者创建为“目录”,则由于 x 与是否可以进入此目录有关,因此默认为所有权限均开
放,亦即为 777 分,默认权限如下: drwxrwxrwx
umask 系统建立文件是默认保留的权力
[root@study ~]# umask
0022 <==与一般权限有关的是后面三个数字!第一组是特殊权限用的
[root@study ~]# umask -S
u=rwx,g=rx,o=rx
umask 077 ##临时设定系统予留权限为077
如下例:文件权限为666,减去umask=077,剩余权限为600
不过在这个过程中需要注意:
例题:假设你的 umask 为 003 ,请问该 umask 情况下,创建的文件与目录权限为?答:
umask为003 ,所以拿掉的权限为 --------wx,因此: 文件: (-rw-rw-rw-) - (--------wx)
= -rw-rw-r-- 目录: (drwxrwxrwx) - (d-------wx) = drwxrwxr--
但是,有的喜欢使用文件默认属性 666 与目录默认属性 777来与 umask 进行相减的计算~这是不好的喔!以上面例题来看, 如果使用默认属性相加减,
则文件变成:666-003=663,亦即是 -rw-rw--wx ,这可是完全不对的喔! 想想看,原本文件
就已经去除 x 的默认属性了
在默认的情况中, root 的 umask 会拿掉比较多的属性,root 的 umask 默认是 022 , 这是基
于安全的考虑啦~至于一般身份使用者,通常他们的 umask 为 002 ,亦即保留同群组的写入
权力! 其实,关于默认 umask 的设置可以参考 /etc/bashrc 这个文件的内容
永久更改umask
(1)vim /etc/profile ##系统配置文件
59 if [$UID -gt 199] &&["id -gn "'id -un'“];then
60 umask 002 ##普通用户的umask
61 else
62 umask 077 ##超级用户的umask
63 fi
(2)vim /etc/bashrc ##shell配置文件
70 if [$UID -gt 199]&&["id -gn "'id -un'“] ;then
71 umask 002 ##普通用户的umak
72 else
73 umsk 077
74 fi
source /etc/profile ##更改立即生效
source /etc/bshrc
超级用户:
默认建立文件权限644;
目录权限755
umask 可以查看umask值
777-umask 就是目录的权限,再减去111就是文件的权限
exit之后再次进入shell,umask会恢复原值,因为不是同一个进程,对另一个进程是不起作用的
要是想永久修改,改vim /etc/profile 环境的 /umask找关键字 里面的gt表示大于 修改第二个是超级用户的
vim /etc/bashrc 是修改shell的 /umusk找关键字
改完之后,在当前用户不生效,再新打开的shell才会修改umask,如果想在当前用户也修改,则需要source /etc/profile
source /etc/bashrc 再用umask查看就修改成新的值了
2.特殊权限
(1)sticky #粘制位
作用:只针对目录生效,当上一个目录有sticky权限时
在这个目录中的文件只能被文件的所有者删除
SBIT 对于目录的作用是: 当使用者对于此目录具有 w, x 权限,亦即具有写入的权限时;
当使用者在该目录下创建文件或目录时,仅有自己与 root 才有权力删除该文件
换句话说:当甲这个使用者于 A 目录是具有群组或其他人的身份,并且拥有该目录 w 的权
限, 这表示“甲使用者对该目录内任何人创建的目录或文件均可进行 “删除/更名/搬移” 等动
作。” 不过,如果将 A 目录加上了 SBIT 的权限项目时, 则甲只能够针对自己创建的文件或目
录进行删除/更名/移动等动作,而无法删除他人的文件。
举例来说,我们的 /tmp 本身的权限是“drwxrwxrwt”, 在这样的权限内容下,任何人都可以在
/tmp 内新增、修改文件,但仅有该文件/目录创建者与 root 能够删除自己的目录或文件。这个
特性也是挺重要的啊!你可以这样做个简单的测试:
- 以 root 登陆系统,并且进入 /tmp 当中;
- touch test,并且更改 test 权限成为 777 ;
- 以一般使用者登陆,并进入 /tmp;
- 尝试删除 test 这个文件!
设定方式:<