文件的权限对于文件的信息安全是非常重要的,设置文件权限可以控制访问文件的用户身份,linux 中文件的权限时一个最基础的系统安全设置。
1. 查看文件的权限
-|rw-r--r-- |1| root| root| 0|Jul 22 01:18 |filename
以上各数字上方的部分所代表的含义如下:
1. 文件类型
- 普通文件
d 目录
c 字符设备
s 套接字
p 管道
b 块设备
l 连接
2.文件读写权限
rw-|r--|r--
前三位为:所有人的权限
中三位为:所有组的权限
后三位为:其他人的权限
3.数字
对文件:文件内容被系统记录的次数
对目录:目录中文件属性的字节数
4."root":文件所属人
5."root":文件所属组
6.数字:文件内容的大小
7.时间 :文件最后一次被修改的时间
8."filename":文件名字
ls -dl /root ##查看目录/root 的文件权限
ls -l /root/Desktop/file ##查看桌面上文件file 的文件权限
2. 文件的普通权限
-|rw-r--r-- |1| root| root| 0|Jul 22 01:18 |filename
1.r
对文件:可以查看文件中的字符
对目录:可以查看目录中文件的信息
2.w
对文件:可以更改文件内字符
对目录:可以在目录中添加删除文件
3.x
对文件:可以运行文件内记录的程序动作
对目录:可以进入目录中
系统在判断用户的权限时的顺序: u (user) 优先匹配 g (group) 在u之后匹配 o (others) 最后匹配
3.修改文件的权限
命令:chmod [-R] [u|g|o]+- r|w|x filename|director
chmod u-x file file拥有者去掉x权限
chmod g+w file file拥有组添加w权限
chmod u-x,g+w file file拥有者去掉x权,file1拥有组添加w权限
chmod ugo-r file file的用户组其他人去掉r权限
chmod ug+x,o-r file file用户和组添加x权限,其他人去掉r权限
改之前
改之后
数字方式修改权限 :可以用数字代替wrx来方便修该权限:
r ------- 4
w------- 2
r---------1
例子 rw- =4+2+0=6
r-- =4+0+0=4
r-x =4+0+1=5
即 文件的权限是 645
4.系统默认权限的设定
系统默认权限是指在默认情况下,普通用户和root用户的权限,
暂时在当前shell设置方式
umask 查看系统保留权限默认为022
umask 077 修改该系统保留权限为077,此设定为临时设定,只当前shell中生效
永久设定方式:
永久设定需要超级用户在配置文件 /etc/bashrc(针对shell文本) 和/etc/profile(针对程序如firefox)中修改
如图:在umask之后修改数字即可
以上两个文件umask设定值必须保持一致
让设定立即生效的命令如下:
source /etc/bashrc
source /etc/profile
5.文件的访问控制(acl列表)
有些文件需要某些特殊的用户访问,这就可以用acl 列表给文件添加特殊用户权限
acl = acess control
-|rw-r--r--+ |1| root| root| 0|Jul 22 01:18 |filename
^
在给文件添加acl列表后会在如图的位置多一个加号提示。
查看文件的acl权限列表
命令:getfacl
getfacl /root
getfacl: Removing leading '/' from absolute path names
# file: root
# owner: root
# group: root
user::r-x
group::r-x
other::---
setfacl -m u|g:username|groupname:权限 文件|目录 添加acl列表
setfacl -x u|g:username|groupname 文件|目录 删除特殊用户或组
setfacl -b 文件|目录 关闭acl列表
如下图:给文件/etc/passwd 设置user :yake wrx的权限
设置之前如图
设置acl 之后如图
权限掩码 mask
mask用来标实能够赋予用户最大权限
当用chmod改变文件普通权限时可能会被破坏
修复
setfacl -m m:rwx 文件名称
acl 默认权限
当我们需求某个目录对于student可写,并且目录中新建的子目录对student也可写
就要设定默认默认权限
注意: 默认权限只对目录中新建立的文件或者目录生效,对已经建立的文件无效, 对于目录本身也无效
6.特殊权限
(1) suid 冒险位
针对二进制可执行文件,文件内记录的程序产生的进程的所有人为文件所有人
和进程发起人身份无关.
设定方式:
chmod u+s file
suid=4
chmod 4xxx file
(2) sgid 强制位
对文件:只针对二进制可执行文件,
任何人运行二进制文件
程序时程序产生的进程的所有组都是文件的所有组
和程序发起人组的身份无关
对目录:当目录有sgid权限后,目录中新建的所有文件的所有组
都自动归属到目录的所有组之中,和文件建立者所在的组无关
设定方式:
chmod g+s file|dir
sgid=2
chmod 2xxx file|dir
(3) sticky 粘制位
t权限:
只针对目录,当一个目录上有t权限,那么目录中的文件只能被文件的拥有者删除
设定方式:
chmod o+t direcotry
t=1
chmod 1777 direcotry