目录
一、权限查看以及读取
1.权限查看
查看文件权限:
ls -l file
查看目录权限:
ls -ld dir
2.权限读取
- 文件的属性被叫做文件的元数据
- 一种元数据用1个byte来记录内容
文件权限信息:
目录权限信息:
3.对于每一位的解释:
(1) 文件类型
~ | ~ |
---|---|
- | 普通文件 |
d | 目录 |
l | 软连接 |
b | 快设备 |
c | 字符设备 |
s | socket套接字 |
p | 管道符| |
(2)用户权限
rw-|r- -|r- -
u | g | o
(3)系统的seinux开启
(4)对于文件:文件内容被系统记录的次数(硬连接个数)
对于目录:目录中子目录的个数
(5)文件拥有者
(6)文件拥有组
(7)对于文件:文件内容大小
对于目录:目录中子文件的元数据大小
(8)文件内容被修改时间
(9)文件名称
二、文件用户用户组管理
1.更改文件拥有者:
chown username file
2.更改文件拥有组:
chgrp groupname file
3.同时更改文件拥有者和拥有组:
chown|chgrp -R username|groupname dir
4.实验操作示例:
监控:
watch -n 1 ls -Rl /mnt/
先建立文件和目录下的文件:
监控界面(修改前):
操作界面(修改后):
三、普通权限的类型及作用
u:user
文件的拥有者,ls -l 看到的第五列信息。
g:group
文件拥有组,ls -l看到的第六列信息。
o:other
既不是拥有者也不是拥有组成员的其他用户的通称。
2.权限位
rw-|r- -|r- -
u | g | o
3.用户身份匹配
user>group>other;
4.权限类型
- | 权限未开启 | ~ |
---|---|---|
r | 可读 | 对文件:可读取;对目录:可以ls列出目录中文件 |
w | 可写 | 对文件:可更改;对目录:可在目录中新建或删除文件 |
x | 可执行 | 对文件:可用文件名称调用文件内记录的程序;对目录:可进入目录中 |
四、设定普通权限的方法
设定文件权限:chmod
1.复制权限
(1)复制/tmp目录的权限到/mnt/dir上:
chmod --reference=/tmp /mnt/dir
(2)复制/tmp目录的权限到/mnt/dir目录及目录中的子文件当中:
chmod -R --reference=/tmp /mnt/dir
2.字符方式设定权限
chmod u-rw /mnt/file1
chmod u-rw /mnt/dir/test1
chmod u+wx,g=wx,o+wx /mnt/file2
chmod ugo+wx /mnt/file3
chmod a-rwx /mnt/file1
chmod ugo=--- /mnt/file2
chmod -R ugo=rwx /mnt/dir
3.数字方式设定权限
- 权限波尔指表示方式
rwx=111
---
=000 - 三位二进制可以表示的最大范围为八进制数
rwx=111=7
rw-=110=6
r-x=100=4=r
-wx=011=3
-w-=010=2=w
–x=001=1=x
---
=000=0
chmod 600 /mnt/file1
五、系统默认权限设定
- 系统本身存在的意义:共享资源;
- 从安全角度讲,系统共享的资源越少,开放的权力越小,系统安全性越高;
- 既要保证系统安全,又要系统创造价值,于是把应该开放的权力默认开放,把不安全的权力默认保留。
1.查看和临时保留权力
查看保留权力:
umask
临时设定系统预留权力:
umask 077
- 文件默认权限=777-umask-111
- 目录默认权限=777-umask
- umask值越大,安全性越高
2.永久更改umask值
(1)shell系统配置文件
vim etc/bashrc
(2)系统配置文件
vim /etc/profile
(3)系统识别
source作用时使我们更改的内容立即被系统识别:
source /etc/bashrc
source /etc/profile
六、特殊权限
1.stickyid 粘制位
针对目录:如果一个目录stickyid开启,那么这个目录中的文件只能被文件所有人删除。
chmod 1源文件权限 dir
chmod o+t dir
实验操作如下:
watch -n 1 "ls -lR /pub;ls -ld /pub"
##新打开一个shell
mkdir /pub
chmod 777 /pub
su - westos
touch /pub/file1
exit
su - jia
touch /pub/file2
exit
##此时可擅长自己的文件,也可删除其他用户的文件
chmod 1777 /pub 或
chmod o+t /pub
##此时在普通用户下无法删除其他用户的文件
2.sgid 强制位
(1)针对目录:目录中新建的文件自动归属到目录的所属组中。
chmod 2源文件权限 dir
chmod g+s dir
实验:
watch -n 1 "ls -lR /mnt/devops;ls -ld /mnt/devops"
mkdir /mnt/devops
chmod 777 /mnt/devops
su - westos
touch /mnt/devops/file1
##谁建立的文件组就是谁的
exit
chmod 2777 /mnt/devops 或
chmod g+s /mnt/devops
su - westos
touch /mnt/devops/file2
##file2自动复制了/mnt/devops目录组
exit
(2)针对二进制可执行文件(c程序):当运行二进制可执行文件时都是用文件拥有组身份运行,和执行用户无关。
实验:
watch -n 1 "ps ax -o user,group,comm | grep cat"
##另启一个shell
/bin/cat
chmod 4777 /bin/cat
/bin/cat
3.suid 冒险位
代表sgid和suid权限已经开启:
七、acl权限列表
1.acl列表读取
getfacl file
2.acl列表的控制
setfacl -m u:jia:rw file ##设定jia用户对于用户的特殊权限
setfacl -m g:jia:rw file ##设定jia用户对于组的特殊权限
setfacl -m u::rw file ##用户权限修改
setfacl -m g::rw file ##用户组权限修改
setfacl -x u:jia ##删除列表中的jia
setfacl -b ##关闭
eg:
2.权限优先级
拥有者>特殊指定用户>权限大的组>权限小的组>其他
3.acl mask 控制
- mask是能够赋予指定用户权限的最大阀值
- 问题:当设定完毕文件的acl列表之后用chmod缩小了文件拥有组的权力,mask会发生变化
- 如果一个文件里出现
+
不要使用chmod来修改。
setfacl -m m:权限 file ##恢复
setfacl -m u:jia:rwx /mnt/jiadir ##只对于/mnt/jiadir目录本身生效
setfacl -Rm u:jia:rwx /mnt/jiadir ##对于/mnt/jiadir目录和目录中已经存在的内容生效
setfacl -m d:u:jia:rwx /mnt/jiadir ##针对与/mnt/jiadir目录中的新建文件生效
八、attr权限
attr权限限制所有用户
~ | ~ |
---|---|
i | 不能做任何修改 |
a | 能添加但不能删除 |
lsatter dir/file ##查看attr权限
chattr +i(-i) +a(-a) dir/file ##设定attr权限