1.文件属性的查看
(1)文件权限存在的意义
文件权限是系统最底层的安全机制组成之一
权限设定的作用是保证文件可以被可用的用户做相应的操作
(2)文件权限的查看
ls -l file ##查看文件的属性
ls -ld dir ##查看目录的属性
-|rw-r--r--.|1|root|root|0|Jan 29 12:00|filename
1> <2> <3> <4> <5> <6> <7> <8>
<1>"_":文件类型
文件类型 | |
---|---|
_ | 普通文件 |
d | 目录 |
c | 字符设备 |
p | 管道 |
b | 块设备 |
l | 链接 |
s | 套接字 |
<2>“rw-r–r--”:文件读写权限
rw-|r--|r--
* # $
*所有人权限
#所有组权限
$其他人权限
<3>“1”:
对文件:文件日内容被系统记录的次数
对目录:目录中文件属性的字节数
<4>“root”:文件所有人
<5>“root”:文件所有组
<6>“0”:文件内容的大小
<7>“Jan 29 12:00“:文件最后一次被修改的时间
<8>“file”:文件名字
2.文件所有人所有组的管理
命令 | 功能 |
---|---|
chown username file/dir | 更改文件的所有人 |
chown username.groupname file/dir | 更改所有人的所有组 |
chown -R username dir | 更改目录本身及里面所有内容的所有人 |
chgrp -R groupname dir | 更改目录本身及里面所有内容的所有组 |
watch -n 1 ls -lR /mnt/ 监视
目录test使用命令chown redhat test 发现只能改变目录本身,不改变里面内容
使用递归-R,改变本身包括内容:
同时改变多个文件,用空格隔开:
3.文件普通权限
注意:所有的权限限制对超级用户都没有用
rw-|r--|r--
u g o
u:文件所有人对文件可以读写
g:文件组成员对文件只可读
o:其他人对文件只可读
u优先匹配,g次优先,o当u,g不匹配时匹配
读权限 r:
对文件:可以查看文件中的字符,cat file可以查看
对目录:可以查看目录中文件或子目录的信息,ls dir可以查看
写权限 w:
对文件:可以更改文件内字符
对目录:可以在目录中添加删除文件
这个目录的所有者对目录有读写和执行的权利,所以可以对文件和目录进行移动(文件或目录的移动是一个重命名的过程)
执行权限 x:
对文件:可以运行文件内记录的程序动作
对目录:可以进入目录中
命令 | 功能 |
---|---|
chmod u+x file1 | file1拥有者加上x权限 |
chmod g+w file2 | file2拥有组添加w权限 |
chmod u+x,g+w file3 | file3拥有者去x,拥有组加w权限 |
chmod ugo-r file4 | file4用户、组、其他人均去掉r权限 |
chmod ug+x,o-r file5 | file3用户和组加x权限,其他人去r权限 |
<1>在root下修改权限,切换到普通用户,当对没有写权限的file1进行编辑保存时因权限不够而无法保存,即使!wq强制保存也不行。
<2>若一个文件要可写,则必须有读权限
<3>若没有w写权限,则文件不能移动
<4>若没有读权限r,则不能对文件进行查看
file5的其他用户o没有读权限时:
对file5赋予r权限时:
<5>若没有执行权限x,则不能进入目录
如给test目录的组赋予x权限,其他人没有x权限,则非redhat组用户ld无法进入test目录。
<6>从上面可以看出修改权限的格式还有两种
1.chmod ugo=rwx filename ##新的权限直接覆盖旧权限
2.chmod 756 filename ##按位计算2^2+2^1+2^0=7
2^2+0+2^0=5
2^2+2^1+0=6
7=rwx
6=rw-
5=r-x
4=r--
3=-wx
2=-w-
1=--x
0=---
注意:
1.目录有写的权限,读和执行是必须赋予的
2.没有明确说明的权力就表示回收
3.默认权力为了安全
4. 一个目录的默认权力是755
5.文件的默认权限是644 没有执行权限 ,日志文件系统会默认把文件的执行权力回收,这是软件本身决定的
6.windows系统没有linux系统稳定,前者系统下文件默认有执行权限
7.不同的文件系统预留的权限是不同的
4.系统默认权限的设定
从系统存在角度来说,开放权力越大,系统存在意义越高
从系统安全角度来说,开放权力越少,系统安全性越高
所以系统设定新建文件或目录会去掉一些权限
设定方式:
umask ##查看系统保留权限默认为022
umask 077 ##修改该系统保留权限为077,此设定为临时设定,只当前shell中生效
(1)临时设定方式
注意:文件权限=777-umask值
文件默认权限644,修改umask值为077,则权限变600
但umask为临时设定,重新打开shell权限恢复
(2)永久设定
vim /etc/bashrc ##设备欲留权限
<1> -gt表示大于
<2> id -gn 表示用户所有组
<3>id -un 表示用户的名字
<4>if条件语句的意思是:如果用户的UID大于199,并且该用户的组和用户的名字相同, 那该用户的umask值就为002,否则其umask值为022
<5> 普通用户的UID大于1000,所以默认umask值为002 超级用户的UID是0,小于199,所以其默认umask是022
更改umask值
使用source /etc/bashrc使其设定立即生效
vim etc/profile ##系统欲留权限
使用source /etc/profile使其生效
注意:操作完实验记得修改回原来权限,以免影响以后操作
5.特殊权限
(1)冒险位suid
作用:只针对二进制可执行文件
文件内记录的程序产生的进程的所有人为文件所有人
和进程发起人身份无关
设定方式:
chmod u+s file
suid=4
chmod 4xxx file
对文件:/bin/watch所属的用户是root,用户redhat在执行/bin/watch时,产生进程的用户属于给/bin/watch加一个冒险位,用户redhat再执行/bin/watch时,产生的进程的用户属于root
并且查看/bin/watch的属性,u上变成了rws
打开一个shell,切换到普通用户执行
打开另一个shell超级用户查看进程,watch产生进程用户是redhat
添加强制位,再在普通用户执行watch -n 1 date 命令
超级用户再查看进程,用户变为root
(2)强制位 sgid
作用:
对文件:只针对二进制可执行文件,任何人运行二进制文件程序时程序产生的进程的所有组都是文件的所有组,和程序发起人组的身份无关
对目录:当目录有sgid权限后,目录中新建的所有文件的所有组都自动归属到目录的所有组之中,和文件建立者所在的组无关
设定方式:
chmod g+s file|dir
sgid=2
chmod 2xxx file|dir
接着上面的操作继续继续执行
再在普通用户执行watch -n 1 date 命令,超级用户下查看,用户组也变成root
(3)粘制位sticky
t 权限:
只针对于目录,当一个目录上有t权限,那么目录中的文件只能被文件的拥有者删除
设定方式:
chmod o+t direcotry
t=1
chmod 1777 direcotry
添加两个用户,创建新的目录,给新目录赋予所有权限
用其中一个用户在新目录里创建文件,切换到另一个用户去删除file1,发现可以被删除
回到超级用户给/pub/目录赋予粘滞位t,可见将其他人的目录权限x改为t
这时切换到非文件所有者去删除这个目录下的文件file2,发现操作被拒绝
切换到文件所有者,可以删除
6.文件访问的控制(acl表)
普通用户不能访问超级用户的桌面,做实验是需要在/mnt/下
(1)acl定义:
acl = access control
指定特殊用户对特殊文件有特殊权限
drwxrwx---+ 2 root root 17 Jul 18 01:39 /westos/
^
+号 表示/westos目录权限列表开启
打开file列表权限:getfacl file
# file: westos/ ##文件名称
# owner: root ##文件所有人
# group: root ##文件所有组
user::rwx ##拥有者权限
user:student:rwx ##特殊用户权限
group::--- ##组权限
mask::rwx ##权限掩码
other::--- ##其他人权限
设置文件权限列表,给用户和组redhat赋予qwx权限
删除acl列表删除redhat
关闭列表,+号消失
注意:当文件上有权限列表时,ls -l能看到的权限是假的
7.mask值
在权限列表中mask表示能生效的权限值
当用chmod减小开启acl的文件权限时mask值会发生改变
chmod g-w file
注意,这个g不是代表组,而是更改mask的值,对ugo都有影响
显示有效权限r和x
如果要恢复mask值
setfacl -m m:rwx file
8.acl默认权限
acl默认权限只针对目录设定
“acl权限只针对设定完成之后新建立的文件或目录生效,
而已经存在的文件是不会继承默认权限”
设定方式:setfacl -m d:u:student:rwx /mnt/westo
setfacl -k /mnt/dzh ##移除默认访问控制列表
普通用户没有在该目录下创建文件的权力
给redhat用户默认权限rwx,仍然无法创建文件
回到超级用户,在该目录下创建新的目录,再到redhat用户去新的目录创建文件,成功
可见只对新建的目录或文件生效。