1.文件权限存在的意义
系统最底层安全设定的方法之一
保证文件可以被可用的用户做相应操作
2.文件权限的查看
(1)ls -l file 或者 ll file
(2)ls -ld dir 或者 ll -d dir
3.文件权限的取读
- | rw-rw-r--| 1 |kiosk | kiosk | 0 | Jul 21 09:18 |file
[1] [2] [3] [4] [5] [6] [7] [8]
[1]
文件类型
- | d | l | s | b | c |
空文件 ,或者文本文件 | 目录 | 软连接 | socket 套接字 | block 块设备 | 字符设备 |
[2]
文件的权限
re-|rw-|r--
1 2 3
1 | [u]文件拥有者对文件能做什么操作 |
2 | [g] 文件所有组对文件能做什么操作 |
3 | [o] 其他人对文件能做什么操作 |
[3]
文件硬链接的个数(文件内容被记录的次数)
对目录:目录中子目录的个数
[4]
文件所有人
[5]
文件所有组
[6]
对文件:文件大小
对目录:目录中子元件数据(matedate可理解为文件的属性)大小
[7]
文件的内容被修改的时间
[8]
文件的名称
4.如何改变文件的所有人和所有组
chown|chgrp
chown username file|dir (更改文件的所属人)
如下图所示,file文件初始的所属人为root,通过上述命令改为了student
chown -R user.group dir (更改目录的所属人和所属组)
操作和效果如下图 westos目录的所属人和所属组都被改为student
chown user.group file|dir(更改文件的所属人或所属组)
操作和效果如下图 文件file的所属人和所属组都被改为student
chgrp group file (更改文件的所属组)
操作和效果如下图 文件的所属组被改为root
操作和效果如下图 目录westos的所属组被改为root
r | 对文件:是否可以查看文件中的内容 --->cat file 对目录:是否可以查看目录中有什么子文件或子目录------>ls dir |
w | 对文件:是否可以改变文件里面记录的字符 对目录:是否可以对目录中的子目录或子文件的元数据进行更改 |
x | 对文件:是否可以通过文件名称调用文件内记录程序 对目录:是否可以进入目录 |
2.更改方式
chmod <+|-|=>
命令 | 解释 | 演示效果 |
chmod u+x file1 | 给u加上x的权限 | |
chmod g-r file2 | 给g减去r的权限 | |
chmod ug-r file3 | 给u g 减去r的权限 | |
chmod u-r,g+x file4 | 给u减去r的,给g加上x的权限 | |
chmod -r file5 | 给所有人减去r 的权限 | |
chmod o=r-x file6 | 给o赋予r x加不上去 而没有w的权限 |
rwx
r=4
w=2
x=1
7=rwx 6=rw- 5=r-x 4=r-- 3=-wx 2=-w- 1=--x 0=---
除了上述命令,还可以通过数字的这种方式改动权限
例如:chmod 777 file1
6.umask
umask 系统建立文件时默认保留的权力
umask 007 ##临时设定系统预留权力为077
永久更改umask
vim /etc/profile ##系统配置文件
source /etc/profile 让更改立即生效
vim /etc/bashrc ##shall的配置文件
source /etc/bash 让更改立即生效
可以更改图中的022数字让系统的默认权限改变
7.特殊权限
<1>.sticky 粘制位
作用:
只针对目录生效,当一个目录上有sticky权限时
在这个目录中的文件只能被文件的所有者删除
设定方式: chmod o+t dir 或者 chmod 1xxx dir
我们可以先建立根下的目录ww即:/ww 然后再改变 o g u 的权限都为 rwx ,切换成student用户 在/ww下建立文件file ,然后切换成tom用户 可以发现tom用户能成功删除student在/ww下建立的file文件。 如图
然后在root用户下用命令:chmod o+t /ww 给/ww目录加上sticky权限 再切换成student用户在/ww下建立file文件,然后切换成tom用户去删除它,发现删除失败,如果是student用户删除的话就会删除成功,如下图。这就说明当一个目录上有sticky权限时,这个目录中的文件只有文件的所有者可以删除。
<2>.sgid 强制位
作用:
(1) 对文件: 只针对于二进制可执行文件
当文件上有sgid时任何人执行此文件产生的进程都属于文件的组
(2) 对目录: 当目录上有sgid权限时任何人在此目录中建立的文件都属于目录的所有设定方式
设定方式: chmod g+s file|dir 或者chmod 2xxx file|dir
(1)对文件:首先我们先将/bin/watch文件的所有组改为student,然后切换成tom用户,执行一个命令:watch -n 1 date
此命令与watch有关,再用一个监控命令 ps ax -o comm,user,group | grep watch (与最后一个监控命令在一张图,有利于对比)然后退出。如图
然后我们用命令 chmod g+s /bin/watch 给/bin/watch文件加上sgid权限。切换成tom,去执行 watch -n 1 date命令。如图
最后我们在用一个监控命令 ps ax -o comm,user,group | grep watch 监控如图
由监控的结果可以看出来,在没有给watch文件加sgid权限时,tom执行watch这个动作时的所有人和所有组都是tom,而在watch文件上加上sgid后,我们再用tom执行watch时,它的组变为student,与watch的组一致。这就可以说明当文件上有sgid时任何人执行此文件产生的进程都属于文件的组
(2)对目录:先建立一个/hi目录,将其所有组改为student,并设置权限777.再切换成tom用户,在/hi目录下建立file1文件。然后给目录/hi加上sgid权限。再切换成tom用户,在/hi目录下建立文件file2,如下图所示,我们可以发现没有加sgid权限时建立的file1文件的所有组为tom,而在/hi目录加sgid权限后所建立的文件file2的所有组为student,与/hi目录的所有组一致。这样就可以说明当目录上有sgid权限时任何人在此目录中建立的文件都属于目录的所有设定方式
<3>. suid 冒险位
只针对二进制可执行文件
当文件上有suid时任何人执行这个文件中记的程序产生的进程都属于文件的所有人设定方式
设定方 chmod u+s file 或者 chmod 4xxx file
我们都知道root用户是超级用户,拥有很大的权力。比如可以删除/etc下的所有文件,而普通用户就不行。我们先将/bin/rm文件的所有人改为tom,然后给/bin/rm加上suid权限,以超级用户的身份去删除/etc,我们会发现删除不了,没有权限。那是因为/bin/rm文件上有suid权限,所以当我们以超级用户的身份去执行rm这个命令时,其实是以/bin/rm文件所有人的身份,即:tom的身份去执行的,tom是普通用户,所以删除不了。也就解释了“ 当文件上有suid时任何人执行这个文件中记的程序产生的进程都属于文件的所有人设定方式”这句话。操作如下图
8.adl权限列表
<1>.作用
让特定用户对特定的文件拥有特定的权限
<2>.adl列表查看
上图中的加号说明adl权限开启
查看adl开启的文件权限 getfacl file
file:file | 文件名称 |
owener:root | 文件拥有着 |
user::rw- | 文件拥有人的权限 |
user::kiosk:rwx | 指定用户的权限 |
group::r-- | 文件拥有组的权限 |
mask::rwx | 赋予用户的最大权力阈值 |
other::r-- | 其他人的权限 |
group:root | 文件拥有组 |
<3>.adl列表管理
命令 | 解释 | 操作效果 |
setfacl -m u:username:rwx file | 设定username对file拥有rwx的权限 | |
setfacl -m g:group:rwx file | 设定group组成员对file拥有rwx权限 | |
setfacl -x u:username file | 从acl列表中删除username | |
setfacl -b file | 关闭file上的adl列表 |
<4>.mask值
在权限列表中mask标示能生效的权力值
当用chmod减小开启acl的文件权限时
mask的值会发生改变
chmod g-w westos
如果要恢复mask的值
setfacl -m m:rw westos
<5>.adl的默认权限设定
adl默认权限只针对目录设定
adl权限只针对设定完成之后建立的文件或目录生效,而已经存在的文件是不会继承默认权限