一.umask 命令
umask 临时设定系统保留的权限(即创建目录时不给予的权限)
例:umask 077 设定对当前用户保留077权限(创立文件时赋予700权限)
配置文件说明
如图,root用户创建目录A权限为755(umask=022)
student用户创建目录B权限为775(umask=002)
使用命令<umask 077>,创建目录B时默认权限为700(umask=077)
注意事项:
1.使用umask命令更改仅在当前shell环境下生效
2.若需永久更改则须更改配置文件
切换环境后创建目录C,默认权限仍为755(umask=022)
更改配置文件
###更改后不会立即生效,需重新读取配置文件
vim /etc/profile 编辑系统配置文件
vim /etc/bashrc 编辑shell的配置文件
source /etc/profile 重读系统配置文件,让更改立即生效
source /etc/bashrc 重读shell配置文件,让更改在立即生效
二.特殊权限
1.sticky 粘制位
只针对目录生效,当一个目录上有sticky权限时
在这个目录中的文件只能被文件的所有者删除
两种设定方式:
chmod o+t dir
chmod 1xxx dir
添加粘制位,虽然拥有pub目录的rwx权限,但用户st1无法删除其他用户的文件
2.sgid 强制位
对文件:只针对二进制可执行文件
当文件上有sgid时,任何人执行此文件产生的进程都属于文件目录的所有组
对目录:当目录上有sgid时,任何人在此目录中建立的文件都属于目录的所有组
chmod g+s file/dir
chmod 2xxx file/dir
查看/bin/watch文件的元属性
用户st1使用watch检测进程名称,使用者用户名,所在组,此时均为st1
为/bin/watch添加强制位,并且切换到其他用户st1
重新调用watch,此时user为st1,而group变为watch文件的所属组root
3.suid 冒险位
当文件上有sgid时,任何人执行此文件产生的进程都属于文件所有者
chmod u+s file
chmod 4xxx file
为watch添加冒险位,并以st1身份执行
以st1用户执行watch,执行者仍为文件拥有者root
三.acl权限列表
让特定的用户对特定文件拥有特定权限
acl列表查看
getfacl a 查看文件a的acl权限
setfacl -m u:user:rwx a 为a文件开启acl权限管理并为指定用户user赋予mask:rwx权限
setfacl -m g:group:rwx a 为a目录开启acl权限管理并为指定组group赋予mask:rwx权限
打开acl权限的文件标志(其中‘+’表示acl开启)
给目录pub添加acl权限并指定用户st1拥有rwx权限(默认其他所有组成员为r-x)
如图st1可在/mnt/pub写入,而st2不可
getfacl权限说明
# file : filename 文件名为filename
# owner: root 文件所有者为root
# group: root 文件所有组为root
user::rw- 文件拥有者对文件的权限为rwx
user::username:rwx 指定用户username对文件的权限为rwx
group::r-- 文件所有组对文件的权限为r--
mask::rwx 可赋予用户的最大权限为rwx
other::r-- 其他用户对文件的权限为r--
四.mask值
在权限列表中mask表示能生效的权限值(能赋予的最大权限值)
当用chmod减小开启acl的文件权限时,mask会发生变化
chmod g-w filename
恢复mask值:
setfacl -m m:rwx filename
查看目录pub的acl权限,虽然用户st1有rwx权限,但mask=r-x,所以有效权限只有r-x
acl默认权限只针对目录设定(即默认在该目录下创建的文件继承目录的acl权限,未设定默认不继承)
setfacl -m d:u:username:rwx /filename
acl权限只针对设定完成之后新建立的文件或目录生效,而已经存在的文件时不会