一、系统默认权限的设定
从系统存在角度来说,开放权力越大,系统存在意义越高
从系统安全角度来说,开放权力越少,系统安全性越高
所以系统设定新建文件或目录会去掉一些权限
1、临时设定方法
umask ###查看系统保留权限默认为022
umask 077 ###修改该系统保留权限为077,此设定为临时设定,只当前shell中生效
2、永久设定方式
vim /etc/bashrc ###shell
70 if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
71 umask 002 ###普通用户umask
72 else
73 umask 077 ###超级用户umask
74 fi
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
以上两个文件umask设定值必须保持一致
通过下面的命令让设定立即生效:
source /etc/bashrc 或者 . /etc/bashrc
source /etc/profile 或者 . /etc/profile
二、文件的访问控制(acl列表)
1、设置权限
[root@server ~]# mkdir /dream
[root@server ~]# ll /dream
total 0
[root@server ~]# ll /dream -d
drwxr-xr-x. 2 root root 6 Mar 19 02:50 /dream ###我们可以发现我们新建的目录第一列为".",表示没有特殊权限
[root@server ~]# useradd dream
[root@server ~]# setfacl -m u:dream:rwx /dream ###setfacl -m m:002 /dream当然我们也可以用mask值来设置
[root@server ~]# getfacl /dream/
我们可以发现我们的这样就会对此文件有root一样的权限,现在我们看的权限就不是ls所看到的权限了
2、删除acl列表用户或者组及关闭列表
(1)删除用户
setfacl -x <u|g>:<username|groupname> 文件|目录
setfacl -x u:dream /dream
getfacl /dream
(2)关闭列表
setfacl -b 文件|目录
setfacl -b /dream
(3)结果
我们可以发现
"+"
变成了"."
三、特殊权限的设定
1、suid(冒险位 只有文件)
只针对二进制可执行文件,文件内记录的程序产生的进程的所有人为文件所有人和进程发起人身份无关,加上s后对对文件的操作都是以属主的身份来进行的
设定方式:
chmod u+s file
suid=4
chmod 4xxx file
2、sgid(强制位 文件目录)
-
对文件:
- 只针对二进制可执行文件,任何人运行二进制文件程序时程序产生的进程的所有组都是文件的所有组和程序发起人组的身份无关
-
对目录:
- 当目录有sgid权限后,目录中新建的所有文件的所有组都自动归属到目录的所有组之中,和文件建立者所在的组无关
设定方式:
- 当目录有sgid权限后,目录中新建的所有文件的所有组都自动归属到目录的所有组之中,和文件建立者所在的组无关
chmod g+s file|dir
sgid=2
chmod 2xxx file|dir
eg.
chmod g+s /usr/bin/mkdir
切换到其他用户,使用mkdir命令,文件用户组变成root
3、sticky(粘制位)
t权限:
只针对与目录,当一个目录上有t权限,那么目录中的文件只能被文件的拥有者删除
设定方式:
chmod o+t direcotry
t=1
chmod 1777 direcotry
eg.在root下
mkdir -p /redhat
chmod 777 /redhat
chmod o+t direcotry
切换到普通用户下,无法删除目录