3A机制:
[帐号:account]:useradd,userdel,usermod,groupadd,groupdel,groupmod
[认证:authorization]:passwd,chage
[授权:authorzed]:下面要说的!!!
文件权限的存在是系统最底层安全设定方法之一,保证文件可以被可用的用户做相应操作。
命令 | 说明 |
---|---|
ls -l file | 查看文件权限 |
ls -ld dir | 查看目录权限 |
ll | 查看文件和目录所有信息(相当于ls –l file) |
ls -li | 查看文件和目录所有信息,可以输出id号 |
ls –LR dir | 递归显示子目录 |
-|rw-rw-r--.| 1| kiosk| kiosk| 0| Nov 15 01:49| file|
1 2 3 4 5 6 7 8
1-7通称为用户的属性,叫做源数据(matadate),源数据的每个数据类型用一个字节来表示,大小为1byte,文件名是一个字符,又3个字节,总共有7+4=11byte。
(1)文件类型
表示 | 说明 |
---|---|
- | 普通文本 |
d | 目录 |
l | 软链接(快捷方式) |
s | 套接字(socket) |
b | 块设备(block) |
c | 字符设备 |
套接字:到程序内部进行交流,需要对外开放一个接口,用户可以通过接口来访问内部的程序,这个接口叫套结字。比如数据库
块设备:存储系统的资源和文件的设备,叫块设备(比如U盘,虚拟硬盘)。
(2)文件权限
权限 | 说明 |
---|---|
r | read |
w | write |
x | execute |
- | 没开 |
一个用户对一个文件的身份有:u(user),g(group),o(others)
rw-|rw-|r--
1 2 3
1:u(所有人);2:g(所有组);3:o(其他人)
(3)文件内容被系统记录的次数(硬链接)
对文件 | 文件内容被系统记录的次数(文件硬链接个数) |
---|---|
对目录 | 目录中文件属性的字节数(目录中子目录的个数) |
软链接:多个节点号对应一个数据
硬链接:一个节点号对应多个数据
(4)用户名字:“root”(文件的所有人)
(5)用户组名字:“root”(文件的所有组)
(6)文件内容的大小
对文件:文件大小
对目录:目录中子文件元数据(matedata元数据可以理解为文件案的属性)大小加上文件本身的大小6,文件夹的时间戳不算
注意:默认会有两个隐藏目录(. 和 …),元数据大小为6。
(7)文件最后一次被修改的时间
(8)文件名字
(1)文件所有人的修改
命令 | 功能 |
---|---|
chown username file或dir | 更改文件或者目录的所有人 |
chown user.group file或dir | 更改文件或者目录的所有人和所有组 |
chown -R user.group dir | 递归更改目录的用户和用户组 |
(2)文件所有组的修改
命令 | 说明 |
---|---|
chgrp group file或dir | 改变文件或者目录的所有人 |
chgrp -R group dir | 递归改变目录的所有组 |
(1)对权限的理解
r:
对文件:是否可以查看文件的内容,相当于cat file
对目录:是否可以查看目录中有什么子文件或者子目录,相当于ls dir
w:
对文件:是否可以改变文件里面记录的字符
对目录:是否可以对目录中子目录或者子文件的源数据进行更改
注意:是否可以删除目录中的文件,看的是目录是否有写的权限,与里面的文件无关。
x:
对文件:是否可以通过文件名称调用文件内记录的程序。
对目录:是否可以进入目录。
注意:给目录w权限必须给r和x权限,要不没用。文件的执行权限是不安全的。
(2)对权限的修改
只有超级用户才可以修改权限
a. 字符方式修改权限
#增加或减少文件或目录u(g或o)的r(w或x)权限
chmod u(g|o) -|+ file|dir
#指定文件或目录u(g或o)的权限为r(w或x)
chmod u(g|o)=r(w|x) file|dir
#使目录和文件的权限同时修改为相同的操作
chmod -R r|w|x dir
b.数字的方式修改权限
r=4,w=2,x=1,-=0
比如:rwx=7,rw-=6,—=0,-w-=4
上面的命令相当于:chmod u=rw,g+w,o+w file
从系统存在角度来说,开放权力越大,系统存在意义越高
从系统安全角度来说,开放权力越少,系统安全性越高
所以系统设定新建文件或目录会去掉一些权限
在超级用户中默认的umask为022,普通用户为002,因此建立的目录权限为777-022=755(dir),文件权限为:666-022=644(file)。
对于普通用户:
为了安全性,将umask设置为077(umask 077) ,则建立的目录为777-077=700,文件为666-077=600,但是这种修改之时暂时的,只对当前的shell生效,当退出当前shell以后,设置的值就会取消,还是之前默认的022。
永久生效:
编辑/etc/bashrc
vim /etc/bashrc
重启:
source /etc/bashrc
编辑/etc/profile:
vim /etc/profile
重启使生效:
source /etc/profile
注意:这两个配置文件必须都要修改,并且要修改一致,而且要重启才能生效。
(1)sticky
sticky:粘制位,t权限 ,适用于开放的共享目录。
作用:之针对目录生效,当一个目录上又sticky权限时,在这个目录中文件只能被文件的所有者删除。
设定方式(这两种方式一样):
chmod o+t dir
chmod 1xxx dir (xxx为原始权限)
目录加上t权限以后:
(2)sgid
强制位,s权限
作用:
对文件:只针对于二进制可执行文件,当文件上有sgid时任何人执行此文件产生的进程都属于文件的组
对目录:当目录上有sgid权限时任何人在此目录中建立的文件都属于目录的所有组
设定方式:
chmod g+s file|dir
chmod 2xxx file|dir
针对目录:
注意:sgid不会影响目录中已经存在文件的所有组。
针对文件:
注意:只针对与二进制可执行文件
(3)suid
冒险位,任何用户执行标有suid的文件时用户身份都会变成root。
作用:只针对与二进制的可执行文件,当文件上有suid时,任何人执行这个文件产生的进程都属于文件的所有人。
设定方式:
chmod u+s file
chmod 4xxx file
应用:权力的下方和提升。
(1)作用
acl(access control list),让特定的用户对特定的文件拥有特定的权限
(2)acl列表查看
-rw-rwxr--+ 1 root root 0 Jul 2 15:45 file
^
表示acl开启
注意:当acl权限列表开启后,使用ls -l查看的文件权限将不准确,必须使用getfacl filename 查看文件权限。
getfacl file #查看acl开启的文件的权限
file: file #文件名称
owner: file #文件拥有者
group: root #文件拥有组
user::rw- #文件拥有者权限
user:kiosk:rw #指定用户的权限
group::r-- #组的权限
mask::rw- #赋予用户的最大权限
other::r-- #其他人拥有的权限
(3)acl列表管理
#当acl开启后,查看文件权限
getfacl file
#设定username对file拥有rwx权限。0:什么都做不了。(m:modify)
setfacl -m u:username:rwx file
#设定group组成员对file拥有rwx权限
setfacl -m g:group:rwx file
#从acl列表中删除username
setfacl -x u:username file
#关闭file上的acl列表
setfacl -b file
(4)mask值
在权限列表中mask表示能生效的最大权力值,当开启acl后,再使用chmod减小文件的权限时,实际减小的是mask值,而不是特定的权限值。
如果要恢复mask值:
serfacl -m m:rwx file
如果要想恢复mask权限
(5)acl的默认权限设置
acl默认权限只针对目录设定。
##递归设置文件的acl权限。会将之前创建的文件添加acl权限,
##而新建的文件没有开启acl权限
setfacl -R -m u:tom:rwx westos
##在新建的文件或目录上添加acl权限,之前存在的文件是不会继承acl权限的
setfacl -m d:u:tom:rw westos
##关闭目录的默认权限
setfacl -k westos
针对新建的文件继承acl’权限:
文件的目录有默认的default权限:
关闭default权限:
(6)acl权限列表排序
uerperm > acluser > aclgroup > groupperm > otherperm
应用:该命令主要被用在一些只能看不能新建或删除的目录上,起到保护的作用。比如/bin
应用:使用与系统的审计。
所以:开放权力不一定使权力变大。