1.1 权限的查看
ls -l file ##查看文件权限
ls -ld dir ##查看目录权限
1.2 权限的读取
文件的属性又被称为文件的元数据组
一种元数据用1个byte来记录内容
文件权限信息:
【1】:文件的类型
符号 | 文件类型 |
---|---|
- | 普通文件 |
d | 目录 |
l | 软链接 |
b | 块设备 |
c | 字符设备 |
s | socket套接字 |
p | 管道 |
【2】:用户权限
【3】:安全上下文
【4】:对象是文件时,代表文件被系统记录的次数(硬链接);对象是目录时,代表目录中子目录的个数
【5】:文件的拥有者
【6】:文件的拥有组
【7】:对象是文件时表示文件内容的大小,对象是目录代表目录中子文件的元数据大小
【8】:文件内容最后一次被修改的时间
【9】:文件名称
(1) 用户对文件的身份
u ## user 文件的拥有者
g ##group文件的拥有组
o ##other 除了文件拥有者和拥有组成员的其他用户的统称
(2) 权限位
u(文件拥有者权限),g(文件拥有者权限),o(其他用户权限)
user > group > other
(4)权限类型
对于文件:表示可以读取文件的内容
对于目录:可以使用 “ ls ” 查看目录中的文件
对于文件:表示可以编辑文件的内容
对于目录:可以在目录中新建或者删除文件
对于文件:可以用文件名调用文件内记录的程序
对于目录:可以进入目录中
(1) 修改文件或目录的拥有者
(2) 修改文件或目录的拥有者和拥有组
(3) 修改文件或目录的拥有组
charp username file1 ## 修改文件的拥有组
chgrp username dir ##修改目录的拥有组
设定文件权限:chmod
chmod --reference=/mnt/file1 /mnt/file2
:复制文件/mnt/file1的权限到/mnt/file2中
chmod --reference=/mnt/dir1 /mnt/dir2
:复制文件/mnt/dir1的权限到/mnt/dir2上
chmod -R --reference=/mnt/dir1 /mnt/dir2
:复制文件/mnt/dir1的权限到/mnt/dir2及其子目录上,R表示递归操作
chomd <a|u|g|o><+|-|=><r|w|x> file
用数字方式设置权限时,常用bool值表示:1代表开放该权限,0代表关闭该权限
rwx = 111 :开放文件或目录的读,写,执行权限
— = 000:关闭文件或目录的读,写,执行权限
用三位二进制可以表示的八进制范围:0~7
符号 | 二进制 | 八进制 | 文件权限 |
---|---|---|---|
rwx | 111 | 7 | 可读,可写,可执行 |
rw- | 110 | 6 | 可读,可写,不可操作 |
r-x | 101 | 5 | 可读,不可写,可操作 |
r- - | 100 | 4 | 可读,可写,不可操作 |
-wx | 011 | 3 | 不可读,可写,可操作 |
-w- | 010 | 2 | 不可读,可写,不可操作 |
–x | 001 | 1 | 不可读,不可写,可操作 |
- - - | 000 | 0 | 不可写,不可读,不可操作 |
用数字修改文件或目录权限的例子如下:
系统存在的意义是共享资源,从安全的角度讲系统共享的资源越少、开放的权力越小系统的安全性越高。因此在保证系统安全和系统创造价值的基础上,把部分的权利默认开放,把不安全的权力默认保存
umask值越大系统安全性越高
文件默认权限 = 777 - umask -111=644
目录默认权限 = 777-umask=755
umask权限值临时更改:可以在shell中临时设定系统保留权利,一旦shell关闭后权限值恢复默认值
shell系统配置文件:vim /etc/bashrc
配置文件更改后必须要重新读取配置文件,否则umask的值不能更新成功:
source /etc/bashrc
source /etc/profile
对所有人开放pub目录的全部权限,那么该目录下的子文件能被所有用户删除
针对目录:如果一个目录stickyid开启,那么这个目录中的文件只能被文件所有人删除
开启stickyid的两种方法:
chmod 1原始权限 dir
chmod o+t dir
chmod 2原始权限 dir
chmod g+s dir
chmod 2原始权限 dir
chmod g+s dir
当运行二进制可执行文件时都是以用户拥有者的身份执行,和执行用户无关
传统的权限仅有三种身份(user,group,other),若要对某一个user或group设置特定的权限要求,可以使用acl(文件访问控制列表)列表机制来实现
acl列表开启后,通过ls查看到的文件的权限并不是文件的真实权限,需要用getfacl file 查看文件的真实权限
命令 | 功能 |
---|---|
setfacl -m u:用户名:权限 file | 在acl列表中指定特定用户的权限 |
setfacl -m g:用户名:权限 file | 在acl列表中指定特定用户组权限 |
setfacl -m g::0 权限 file | |
setfacl -m x:u:用户名 file | 删除acl列表中的用户 |
setfacl -b file | 关闭acl列表 |
setfacl file | 读取文件的权限 |
以下两个例子可以证明在在acl中,权限多的组的优先级高于权限少的组的优先级
查看权限的命令: `lsattr dir|file`
chattr +i dir ##不能新建或删除子文件
chattr +a dir ##能新建文件,不能删除子文件
chattr +i file ##无法对文件进行修改和删除
chattr +a file ##无法对文件进行修改和删除