1.权限查看及读取
权限查看
ls -l file #查看文件权限
ls -ld dir #查看目录权限
权限的读取
文件的属性被叫做文件的元数据(meta data)
一种元数据用1个byte来记录内容
文件权限信息
| - | -rw-r–r-- | . | 1 | root | root | 0 | Oct 19 17:32 | bufile |
| [1] | [2] | [3] | [4] | [5] | [6] |[7] | [8] | [9] |
目录权限信息
| d | rwxr-xr-x | . | 2 | root | root | 6 | Oct 19 17:33 | budir/ |
| [1] | [2] | [3] | [4] | [5] | [6] |[7] | [8] | [9] |
对于每一位的解释
[1] #文件类型
#- 普通文件
#d 目录
#l 软连接 (类似于Windows的快捷方式)
#b 快设备 (存储设备,U盘)
#c 字符设备
#s socket套接字
#p 管道
[2] #用户权限
rw- | r-- | r–
u(用户)| g(组)| o(其他人)
[3]系统的selinux开启
[4]#对于文件:文件内容被系统记录的次数(硬链接个数)
#对于目录:目录中子目录的个数
[5]#文件拥有者
[6]#文件拥有组
[7]#对于文件:文件内存大小
对于目录:目录中子文件的元数据(属性)大小
[8]文件内容被修改时间
[9]文件名称
2.普通权限的类型及作用
用户对文件的身份
u: #user 文件的拥有者,ls -l 看到的第五列信息
g: #group 文件拥有组, ls -l 看到的第六列信息
o:#other 既不是拥有者也不是拥有组成员的其他用户的通称
权限位
rwx | r-- | r–
u | g | o
用户身份匹配
user>group>other
权限类型
“-” #权限未开启
r
#可读
#对于文件:可以读取文件内容
#对于目录:可以ls列出目录中的文件
w
#可写
#对于文件:可以更改文件内容、
#对于目录:可以在目录中新建或者删除文件
x
#可执行
#对于文件:可以用文件名称调用文件内记录的程序
#对于目录:可以进入目录中
3.设定普通权限的方法
watch -n 1 “ls -Rl /mnt/”
#监控/mnt/目录
chmod # 设定文件权限
#chmod 复制权限
chmod --reference=/tmp /mnt/bufile
#复制/tmp目录的权限到 /mnt/bufile上
chmod -R --reference=/tmp /mnt/bufile
#复制/tmp目录的权限到/mnt/bufile及目录的子文件上
#-R代表递归操作
#chmod 字符方式设定权限
chmod <a|u|g|o><+|-|=><r|w|x> file
#用字符方式设定文件权限
数字方式设定权限
权限波尔值表示方式
rwx=111
—=000
三位二进制可以表示的最大范围为8进制数
chomd 600 /mnt/file
rw-------
4.系统默认权限设定
系统本身存在的意义共享资源
从安全的角度讲系统共享的资源越少,开放的权利越小系统的安全性越高
既要保证系统安全,又要系统创造价值,于是把应该开放的权利默认开放
把不安全的权利默认保留
#如何保留权利
umask表示系统保留权利
umask #查看保留权利
umask 权限值 #临时设定系统预留权利
#umask临时更改 umask 077
文件默认权限=777-umask-111
目录默认权限=777-umask
umask值越大系统安全性越高
#永久更改
vim /etc/bashrc #shell系统配置文件
vim /etc/profile #系统环境配置文件
更改超级用户的umask
source /etc/bashrc #source作用时使我们更改的内容立即被系统识别
source /etc/profile
5.文件用户用户组管理
chown username file #更改用户拥有者
chgrp groupname file #更改文件拥有组
chown username:groupname file
#同时更改文件的拥有者和拥有组( : 可以为 .)
chown|chgrp -R user|group dir
#更改目录本身及目录中内容的拥有者或拥有组
6.特殊权限
stickyid 粘制位
针对目录:#如果一个目录stickyid开启,那么这个目录中的文件只能被文件所有人删除
chmod 1原始权限 dir
chmod o+t dir
#可以删除用户属于自己的文件,但不能删除其他用户的文件
实验:
#sgid 强制位
#针对目录:目录中新建的文件自动归属到目录的所属组中
设定:
chmod 2原文件权限 dir
chmod g+s dir
实验:
#只针对二进制的可执行文件(c程序)
#当运行二进制可执行文件时都是用文件拥有组身份运行,和执行用户无关
suid 冒险位
#只针对二进制的可执行文件(c程序)
#当运行二进制可执行文件时都是用文件拥有者身份运行,和执行用户无关
chmod 4原属性 file
chmod u+s file
7.acl权限列表
Aiccess Control Lists #访问控制列表
#功能:在列表中可以设定特殊用户对于特殊文件有特殊权限
#acl列表开启标识:
权限位后面有“+”号
#acl列表权限读取
getfacl file
显示内容分析
设定用户权限:
设定组权限与删除权限:
关闭权限
#acl权限优先级
拥有者>特殊指定用户>权限多的组>权限少的组>其他
#acl mask 控制
#mask是能够赋予指定用户权限的最大阈值
问题:
当设定完毕文件的acl列表用chmod缩小了文件拥有组的权利,
mask会发生变化
恢复:
setfacl -m m:权限 文件
#设置完setfacl后不能用chmod更改权限,只能用setfacl
#acl列表的默认权限
setfacl -m u:buwei:rwx /mnt/budir #只对于/mnt/budir目录本身生效
setfacl -Rm u:buwei:rwx /mnt/budir #对于/mnt/budir目录和目录中已经存在的内容生效
#以上的命令只针对与存在的文件生效,新建的文件不会被设定的
setfacl -m d:u:buwei:rwx /mnt/budir/
#针对与 /mnt/budir目录中新建文件生效
8.attr权限
#attr权限限制所有用户(包括超级用户)
i #不能作任何的更改
a #能添加不能删除
lsattr dir|file #查看attr权限
chattr +i | +a | -i |-a dir | file #设定attr权限